Christian Doucette
Christian Doucette

Reputation: 1314

Two different ruby versions on mac?

I am setting up a simple ruby on rails app locally. It seems I have two different versions of ruby on mac and I would like to only use one. When I ran bundle install, it says Your Ruby version is 2.7.1, but your Gemfile specified 2.6.3. Then, I changed the line ruby '2.6.3' in my gemfile to ruby '2.7.1'. With this it ran bundle install properly. However, when I run rails server it says Your Ruby version is 2.6.3, but your Gemfile specified 2.7.1.

Why is it saying two different values for my Ruby version? How do I get it to only use one version of Ruby?

If its relevant, I am on a mac and installed ruby using homebrew. If I run ruby -v in the terminal it says ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-darwin19]. I'm not sure why it says I have ruby 2.6.3.

Upvotes: 11

Views: 18955

Answers (3)

spencerthomas
spencerthomas

Reputation: 1

I I had this exact problem and managed to fix it by running this command:

CFLAGS="-Wno-error=implicit-function-declaration" rbenv install 2.6.7

Note - I needed that version (2.6.7) please change it to the one you need

I found this on this blog post here - https://dev.to/rbazinet/fix-installation-of-ruby-using-rbenv-on-macos-big-sur-3432

Upvotes: 0

brianrobt
brianrobt

Reputation: 427

You have two different versions of Ruby installed, because MacOS natively comes with a standard installation of Ruby.

You also have rails pointing to the system version of Ruby. That version is usually under /usr/bin/ruby. The Homebrew installed version of Ruby (which is what you want) is located under /usr/local/bin/ruby unless you specified a completely different root path to install your brew packages.

Running brew config will give you a short list of data about your Homebrew configuration. Among them is an environment variable called HOMEBREW_PREFIX, which should look something like this:

$ brew config
....
HOMEBREW_PREFIX: /usr/local
....

I recommend placing /usr/local/bin first on your PATH environment variable so that you can easily use your brew packages via the CLI:

export PATH="/usr/local/bin:$PATH"

You may also want to look into setting the following environment variables for whichever shell you are using (examples given):

  • RUBY_ENGINE=ruby
  • RUBY_VERSION=2.7.1
  • GEM_ROOT=/usr/local/etc/ruby-2.7.1/lib/ruby/gems/2.7.1 (alias for GEM_HOME)

gem env gives a lot of great information on how Gems is configured.

Upvotes: 2

Hugo V
Hugo V

Reputation: 283

There are to different versions because Mac OSX already includes one by default for system scripts (2.6). Homebrew install another one that never overrides o reemplace the System Wide version.

You are looking for a "Ruby Version Manager", are tools that allow you to install and use different versions of Ruby, even per project.

The popular ones are RVM and rbenv. Personally, i choose rbenv and I think that is the most widely used of both. Example of use:

# Install ruby 2.7
rbenv install 2.7.1

# Make ruby 2.7 the default version
$ rbenv global 2.7.1

# Or make 2.7 the default versión only on a specific project
$ cd myproject
$ rbenv local 2.7.1
# this create a ".ruby-version" file

This webpage always have the most recent and easy to use tutorial for setup a Ruby environment, depending on the OS and version.

https://gorails.com/setup/osx/10.15-catalina#overview

Upvotes: 18

Related Questions