I am trying to get a Ruby on Rails app hosted free somewhere, and Heroku is looking like my last resource. It is supposed to work on Linux, and the gem installs with no errors, but whenever I run any Heroku command it spits out several errors, all connected, and talking about a failed 'require.' I looked it up in the code, and it says:
require 'readline'
That is it.
I have tried to install every variation of libreadline that I can find and think of, but none of it makes any difference. Any ideas here?
It could be that your system installed version of Ruby is not build with readline support. If so then you could reinstall it from source and select the correct configure parameters for readline support. That's not only annoying but means you'd have to manually maintain updates yourself.
Better still would be to abandon your system Ruby altogether in favor of one installed with RVM
Install RVM as described here
Install libreadline-dev
$ sudo apt-get install libreadline-dev
Install a version of ruby (e.g. 1.8.7)
$ rvm install 1.8.7
$ rvm --default 1.8.7
Install your rails and Heroku gems under the RVM ruby
$ gem install rails heroku taps ... # Note no sudo!
See if your problem persists
If so, then do this:
$ cd ~/.rvm/src/ruby-1.8.7-p299/ext/readline
$ ruby extconf.rb
$ make
$ make install
Ubuntu's ruby-full package depends on libreadline-ruby and should pull in everything both you and it needs. If you have tried installing ruby by installing a bunch of separate packages you might be missing something. If that's the case go back and install ruby-full.
I have a script I use to rebuild my Rails Environment whenever I install the latest Ubuntu. It installs everything you need for Heroku (which is where I host my apps) as well. You might want to take a peek at it and see if there is anything there that you are missing.
If ruby-full doesn't sort you out, I would second Bjg's advice and ditch the system ruby for RVM.
I got it to work, but it was rather a hack. I hunted down the readline.so file from where it was installed (in some strange spot) and did a hard link to where ruby was looking for readline, and it worked. Not optimum, and I will definitely try what you guys recommend next time. Thanks!
Related
I am trying to install Rails on my Mac Version 10.9.5 and something is not working as when I try to see which version of Rails I have installed I get the following:
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb:213: warning: Insecure world writable dir /usr/local in PATH, mode 040777
Rails is not currently installed on this system. To get the latest version, simply type:
$ sudo gem install rails
You can then rerun your "rails" command.
If I try to run that command, this is what I am getting...
sudo gem install rails
Password:
dyld: Library not loaded: /usr/local/lib/libgmp.10.dylib
Referenced from: /Users/ppmartins/.rvm/rubies/ruby-2.1.3/bin/ruby
Reason: image not found
Any idea about what's happening and how to solve this issue?
Thank you all.
It is best to never use your system Ruby to install Gems. System Ruby is a version of Ruby that ships with your Mac. OSX uses Ruby for various tasks, so it is best to leave it alone and not risk corrupting any Gems.
Instead, you should use Ruby version managers to install versions of Ruby that your system won't rely on. Using sudo is also not necessary for these versions. If you find yourself needing to do this, you might be (ab)using your system Ruby.
Personally I use rbenv since it integrates well with Homebrew, but there are others such RVM as well.
Try following http://installrails.com/
It runs you step by step through setting up an environment on your computer. :D
It's pretty straight forward compared with googling rbenv, RVM etc
Hope this helps!
Dump rvm and use rbenv. You haven't set it up correctly anyway
Don't use sudo when installing gems
Make sure your don't use system Ruby from '/Library'
So,
Install Homebrew http://brew.sh
Install Rbenv brew install rbenv
Install Ruby Build brew install ruby-build
Install Ruby rbenv install 2.1.2
Make it a default interpreter rbenv global 2.1.2
That's the gist of it. There might be some things you need to do manually like adding rbenv path to your .bash_profile.
Update I was downvoted? Haha, why?
I just switched from Heroku to Amazon Web Services. Previously I ran all of my Rails command line commands using my Command Prompt with Ruby (from my Windows PC). However, after I logged into my Amazon Linux EC2 instance, and then went into the directory of my app I receive this error:
/usr/bin/rails:9:in `require': no such file to load -- rubygems (LoadError)
from /usr/bin/rails:9
when I try to run any commands like rails console.
I reviewed this question, but it doesn't seem like multiple Ruby libraries apply to me because
which -a ruby
only yields one location:
/usr/bin/ruby
Also, this question didn't seem to help as I haven't. When I tried typing in
rvm use 1.9.3
I receive this message:
-bash: rvm: command not found
It's my first time seeing a Linux environment, so any help would be appreciated. Thank you!
I was running into he same issue with the identical error message. From my EC2 instance, I noticed my ruby version was 1.8 (ruby -v). I rebooted the EC2 instance, and this caused Elastic Beanstalk to spin up a new EC2 instance and terminate the old one. The new instance was running 1.9.3, and I became unblocked. I hate magical solutions, but with the old instance terminated, there was no more triage I could do. Hope this helps.
-bash: rvm: command not found
This clearly says that rvm is not installed on your machine or if installed you haven't set the path properly.
Check path
Sometimes there is gem versioning pointing to the wrong one.
This happened with me sometime back----
Disregard! sudo bundle install was bundling 2.3.8 instead of 3.0.0.beta3. Fixed it by specifying the version in my Gemfile.
To make sure the compilation goes smoothly, scroll back in your terminal session and look at the list of prerequisite packages that should be installed (it’s probably best to cut and paste the whole lot of names to save yourself from typing errors).
sudo apt-get install build-essential openssl libreadline6 libreadline6-dev zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev autoconf libc6-dev libncurses5-dev automake libtool bison subversion
Now you can use use rvm to download, compile, and install Ruby.
1 rvm install 1.9.3
2 rvm use 1.9.3 --default
Guess it's more of a problem related to RVM and some weird linkage to osx's system ruby? (I installed RVM on a user level)
I have used gem install bundler.
Then run rvm install works fine
I am on a fresh install of OS X Mountain Lion. I have installed rails via:
sudo gem install rails
Everything seems to install correctly, but when I type the rails command (rails s, rails -v, etc), I get this error:
Rails is not currently installed on this system. To get the latest version, simply type:
$ sudo gem install rails
You can then rerun your "rails" command.
The result of 'which rails' is /usr/bin/rails
I thought it was a path issue, and perhaps it is, but I can see that /usr/bin is part of my PATH.
Any help? Thanks!
UPDATE: I noticed everything on my other mac with same exact OS works pretty well... I just can't remember how I got it to work that way. If I run 'which rails' I see it's in a totally different place /Users/username/.rvm/gems/ruby-1.9.3-p194/bin/rails
If you're using rbenv, don't forget to rbenv rehash after installing/updating ruby.
Use RVM http://rvm.io or rbenv to install newer Rails versions than what come pre-installed with OS X.
Follow examples on the site https://rvm.io/rvm/install/ but basically:
Install RVM: $ \curl -L https://get.rvm.io | bash -s stable
You can then $rvm list known to see what Rubies are available to you (lots). And simply $rvm install 1.9.3 to get the most current version of Ruby (which as of this writing is ruby-1.9.3-p327)
Set that ruby as your default $rvm --default use 1.9.3
Create a default gemset to store your gems $rvm use 1.9.3#mygemset --create --default
Then install Rails $ gem install rails will get you current which today is same as typing gem install rails -v 3.2.9
Just had this issue using rbenv, no idea how this happened, but figured that my ~/.rbenv/shims/rails was empty...
So to fix this:
Cleaned empty shims: find ~/.rbenv/shims -empty -delete
Then regenerate: rbenv rehash (was not overwriting empty one...)
I had the same problem.
After typing:
sudo gem install rails
and installing rails correctly, just close the Terminal window and open again. Then type:
~ $ rails -v
Rails 4.0.2
So, reseting the Terminal window fix the problem.
I think install rvm that will help you
rvm get head && rvm reload
rvm install 1.9.3
rvm use 1.9.3#current --create --default
The last line creates a gem set called current.
Now check to make sure you RubyGems was installed correctly by typing which gem in your terminal. Now update your gems.
gem update --system 1.8.24
Finally install rails.
gem install rails -v 3.2.3
I hope this works, let me know if you have any issues.
Yes, OSX comes standard with a lot of great software for Ruby on Rails, as well as PHP, Mysql, etc. However, sometimes it's better for sustainment purposes to use a 3rd party installer to get everything you want without digging through your /usr/ directory.
I recommend checking out http://railsinstaller.org/
With one easy install, you have everything you could want for a Rails project, including common software people use, and the site even has a tutorial. I recommend going this way. It saves you time. Plus, it comes with an easy uninstaller that it will put in your Applications folder to remove if you're not happy with the configuration. Enjoy.
Actually, /usr/bin/rails script is just a
# Stub rails command to load rails from Gems or print an error if not installed.
(Comment quoted from the very script's source)
If Rails is installed, then it is loaded. Else, the script will throw the error you pasted in your question.
Yet, another alternative to RVM is the awesome rbenv tool.
It is very easy to install (just a simple brew install rbenv) and work with. In my opinion, it is the best way to manage your rubies on a Mac.
However, if you have rvm installed on your machine already, consider removing it from your system by doing rvm implode.
Since setting up a fresh ruby on rails dev environment is a common barrier to most newbies (including myself when i started off with rails) I've put together detailed instructions on how to do exactly that in a blog post, which i will link to below. Hope you will find it useful.
http://blog.parsalabs.com/blog/2013/08/27/setting-up-a-ruby-on-rails-4-development-environment-on-a-clean-mac-os-x-installation/
i got the same error and uninstall rvm then i follow the instructions on this page https://www.digitalocean.com/community/articles/how-to-install-ruby-on-rails-on-ubuntu-12-04-lts-precise-pangolin-with-rvm
i think that help was
rvm requirements
on the terminal.
Our company uses a script to setup each new machine with a Rails dev environment:
We've open source it, give it a try: https://github.com/platform45/let-there-be-light
After a new
gem install rails
do
rbenv rehash
It worked for me.
I'm not a Ruby developer, but I need to run an application that use Ruby on rails with a lot of gems on a Mac.
Following few tutorials online I see that I need to install plenty of apps like xCode, Passenger, RVM, ecc...
Everything is ok but what about if one day I decide to uninstall everything keeping only the Ruby default installation that already exist in a Mac?
Where can I localize all the gems that I download using bundle install?
Using the Terminal and writing all these commands is a clean solution or it make my system "dirty" and slow?
Sorry for all these question, but I would like to know if there is a "best practice" to install this environment, how it work and how to uninstall it completely if I decide to do that one day.
RVM is what you need. All things could be done in command line and it will be clean and ready to be removed at any time.
Xcode is not necessary. But brew may be. If you have brew, install apple-gcc42 first. The llvm-gcc with Xcode 4.2 and later works not very well for compiling ruby.
Then install rvm. It is easy by following the steps on rvm official site. After installing it, try rvm requirements first. This command will tell you what you need to build ruby. Some libs may not are on the machine, like readline etc.
When all requirements are met, rvm install 1.9.3 will install ruby 1.9.3 on your machine and it takes several minutes. You can install any ruby version in rvm list known. And rvm list will show you local versions.
Use rvm default some_version to set default one. This will not be any conflict with system installation. And rvm use some_version will change ruby version to a specific one.
All things rvm installed will be kept in ~/.rvm/ by default, including gems.
There should be no need to uninstall rvm. But it is easy to do this by removing it directly.
RVM will provide you what you wanted. It will keep the system Ruby safe and install localized Ruby and rubygems. From rvm you can install/uninstall any version of ruby anytime and that won't affect the system ruby. When one day you wanted to remove all ruby except system one, first remove them using RVM, then then remove rvm itself.
Install RVM from here: https://rvm.io/rvm/install/
Installing RVM will install ruby a ruby. If you want, you can install other version. If you want to remove you simply run
rvm remove ruby-1.9.3-p194
you can get exact ruby version using rvm list
localized gemsets
you will need an .rvmrc file.
To create .rvmrc, enter the project directory and run the following command:
rvm --create --rvmrc ruby-1.9.3-p194#myproject
Then re-enter the directory and it will ask you to trust the .rvmrv file and you got to trust it. now if you run the bundle install it will install localized gemsets in your gemset directory (most possibly in your ~ path).
Note: please make sure ruby-1.9.3-p194 matches the name exactly that you found in rvm list
I just installed Rails on OSX. I used the stock version of Ruby and followed the following procedure:
Installed newest version of RubyGems
Ran sudo gem install rails --include-dependencies
Installed Mongrel using sudo gem install mongrel --include-dependencies
Rails is working just fine, but more reading led me to this setup guide:
http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx
This is essentially the exact same install I performed, except he compiles it from source code and installs to /usr/local -- I really like this idea, since it keeps the OSX install stock and confines all my dev stuff to one area.
So, assuming I want to follow these instructions, what do I need to do to revert my system back to "stock" ruby? Can I just uninstall the Rails and Mongrel gems? Will the upgraded RubyGems cause any issues?
Basically, my concern is that some other software unrelated to my development work will need to use OSX's stock Ruby, and I will have screwed it up somehow. Any advice to undo the 3 steps I listed above and get as close to stock as possible would be appreciated.
Thanks!
The article you are referring to is over three years old (which is outdated in the Rails community). My recommendation is:
Install XCode
Install Homebrew
Install MySQL, Postgres, Image Magick, etc. (brew install mysql, etc.)
Install RVM
Install Ruby 1.9.2 (rvm install 1.9.2)
Switch to default (rvm 1.9.2 --default)
Install Rails (gem install rails)
Install Passenger (gem install passenger)
Each step will have a few more substeps but you should be able to look them up or be promted with them.
I can't remember why I did this but I do know that it worked and has caused no problems since. I moved /Library/Ruby to /Library/Ruby.broken and then installed Ruby from source into /usr/local.
There's something fundamentally missing with the stock Ruby in OSX. I wish I could remember what that was.