Search code examples
ruby-on-railsrubyversion

Ruby version not same as installed version


I am trying to install Ruby on rails on a Mac Mojave:

$ brew install ruby
Warning: ruby 2.7.1 is already installed and up-to-date
To reinstall 2.7.1, run `brew reinstall ruby`

This shows me that I am running Ruby 2.7.1.

But when I check the version I get:

$ ruby --version
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

This tells me I am using Ruby 2.3.7.

I don't understand.

To run Rails I need >= 2.4.4 apparently:

$ sudo gem install rails
.....................
ERROR:  Error installing rails:
    zeitwerk requires Ruby version >= 2.4.4.

and

$ which ruby
/usr/local/opt/ruby/bin/ruby

So until I get ruby version to at least 2.4.4 I can't run rails.

Update

Install RVM on MAC as follows

$ brew install gpg
$ curl -L https://get.rvm.io | bash -s stable --autolibs=enabled --ruby
$ ruby -v
ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin18]

Got these instructions from: https://null-byte.wonderhowto.com/how-to/mac-for-hackers-install-rvm-maintain-ruby-environments-macos-0174401/

But then I install Rails:

$ sudo gem install rails
Successfully installed rails-6.0.2.2
Parsing documentation for rails-6.0.2.2
Done installing documentation for rails after 0 seconds
1 gem installed

and so I tried to crate a Rails project:

$ rails new blah
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.

What is going on there? I seem to have successfully installed Rails but cannot create a Rails project.


Solution

  • The output from this command brew install ruby is not telling you that you're running ruby 2.7.1. That just says you already have ruby 2.7.1 installed for brew. But you could have other ruby versions installed in other ways. When you do

    ruby -v
    

    ruby executable is looked for in paths listed inside your environment variable PATH, in order. You can see those paths with

    echo $PATH
    

    So, managing different versions of ruby is hard and version managers exist for this reason. I suggest you to install rvm