below is what I need to do.
To run the specs, you'll need to install RSpec. First, run gem install bundler in the root directory of your project. Then, run bundle install. To run a single spec file, run a command like this: bundle exec rspec spec/00_hello_spec.rb. To run all of the specs at once, run bundle exec rspec.
So, I typed gem install bundler in Terminal, and got the error:
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
and this was in the project file in atom
source "https://rubygems.org"
gem "rspec", "~> 3.2.0"
My question is:
It seems like terminal is giving me the response because I'm not supposed to change anything on ruby, and I need to bundle install inside of atom? Could anyone tell me how to use atom or run anything in atom?
Update:
I now have a paid script that will set up a proper Ruby environment for you with a single command!
I also keep my free step-by-step guide for installing Ruby on a Mac up to date (more often than I update this answer).
You are correct that macOS won't let you change anything with the Ruby version that comes installed with your Mac. However, it's possible to install gems like bundler using a separate version of Ruby that doesn't interfere with the one provided by Apple.
Using sudo to install gems, or changing permissions of system files and directories is strongly discouraged, even if you know what you are doing. Can we please stop providing this bad advice? I wrote a detailed article that shows why you should never use sudo to install gems.
The solution involves two main steps:
Install a separate version of Ruby that does not interfere with the one that came with your Mac.
Update your PATH such that the location of the new Ruby version is first in the PATH. Some tools do this automatically for you. If you're not familiar with the PATH and how it works, it's one of the basics that you should learn, and you'll understand why you sometimes get "command not found" errors and how to fix them.
There are several ways to install Ruby on a Mac. The best way that I recommend, and that I wish was more prevalent in the various installation instructions out there, is to use an automated script like Ruby on Mac that will set up a proper Ruby environment for you.
The main reason is that it saves each person a ton of time. Time is our most limited and valuable resource. Why make people do things manually when they can be automated with a perfect result every time?
Another reason is that it drastically reduces the chance of human error, or errors due to incomplete instructions.
If you want to do things manually, keep on reading. First, you will want to install Homebrew, which installs the prerequisite command line tools, and makes it easy to install other necessary tools.
Then, the two easiest ways to install a separate version of Ruby are:
If you would like the flexibility of easily switching between many Ruby versions [RECOMMENDED]
Choose one of these four options:
chruby and ruby-install - my personal recommendations and the ones that are automatically installed by the Ruby on Mac script. These can be installed with Homebrew:
brew install chruby ruby-install
rbenv - can be installed with Homebrew
RVM
asdf
If you chose chruby and ruby-install, you can then install the latest Ruby like this:
ruby-install ruby
Once you've installed everything and configured your .zshrc or .bash_profile according to the instructions from the tools above, quit and restart Terminal, then switch to the version of Ruby that you want. In the case of chruby, it would be something like this:
chruby 3.1.3
Whether you need to configure .zshrc or .bash_profile depends on which shell you're using.
If you know for sure you don't need more than one version of Ruby at the same time (besides the one that came with macOS) [NOT RECOMMENDED]
Even if you think you won't need another version now, you will eventually and you won't be able to easily switch. This will cause confusion and headaches, which is why I don't recommend installing and managing Ruby with Homebrew.
If you choose to use Homebrew to install Ruby despite my warnings, you'll be on your own if you run into any issues.
Install ruby with Homebrew:
brew install ruby
Then update your PATH by running this command:
echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/3.1.0/bin:$PATH"' >> ~/.zshrc
The 3.1.0 in the command above assumes Homebrew installed a Ruby version that starts with 3.1. If it installed a different version, replace 3.1 with the first two digits of your Ruby version.
If you're on an M1/M2 Mac, replace /usr/local with /opt/homebrew
Then "refresh" your shell for these changes to take effect:
source ~/.zshrc
Or you can open a new terminal tab, or quit and restart Terminal.
Replace .zshrc with .bash_profile if you are using Bash. If you're not sure, read my guide to find out which shell you're using.
To check that you're now using the non-system version of Ruby, you can run the following commands:
which ruby
It should not be /usr/bin/ruby
ruby -v
It should be 3.1.3 or later.
Once you have this new version of Ruby installed, you can now install bundler (or any other gem):
gem install bundler
Worked for me using the parameter --user-install running following command:
gem install name_of_gem --user-install
Edit
There was one gem I still could not install (it required the Ruby.h headers of the Ruby development kit or something), then I tried the different version managers, but somehow that still did not really work as it was stated in the documentations how to just install and switch (it did just not switch the versions).
Then I removed all the installed version managers and installed afterwards with brew install ruby the latest version and did set the PATH variable, too. (It will be mentioned after the installation of ruby from brew), which worked.
If you don't want to run sudo then install ruby using homebrew
brew install ruby
export GEM_HOME="$HOME/.gem"
gem install rails
You may want to add export GEM_HOME="$HOME/.gem" to your ~/.bash_profile or .zshrc if you're using zsh
Note: RubyGems keeps old versions of gems, so feel free to do some cleaning after updating:
gem cleanup
Just export GEM_HOME:
export GEM_HOME="$HOME/.gem"
And then try:
gem install cocoapods
As #idleberg mentions, on Mac OS, it is best to install rbenv to avoid permissions errors when using manually installed ruby.
Installation
$ brew update
$ brew install rbenv
Add the following in .bashrc file:
eval "$(rbenv init -)"
Now, we can look at the list of ruby versions available for install
$ rbenv install -l
Install version 2.3.8 for example
$ rbenv install 2.3.8
Now we can use this ruby version globally
$ rbenv global 2.3.8
Finally run
$ rbenv rehash
$ which ruby
/Users/myuser/.rbenv/shims/ruby
$ ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [x86_64-darwin17]
Go for it
Now install bundler
$ gem install bundler
All done!
It's generally recommended to use a version manager like rbenv or rvm. Otherwise, installed Gems will be available as root for other users.
If you know what you're doing, you can use sudo gem install.
Try this:
sudo gem install cocoapods --user-install
Worked for me
PLEASE USE SUDO WITH CARE!!!!!! ONLY IF YOU KNOW WHAT YOU ARE DOING!!!!!!!!!!!!
I have faced same issue after install macOS Catalina. I had try below command and its working.
sudo gem update
Run this
$ rbenv init
# Load rbenv automatically by appending
# the following to ~/.zshrc:
eval "$(rbenv init -)"
Follow instructions, (in my case add to ~/.zshrc) ;)
Also important: Changes only take effect if you reboot your console. Two options
Enter source <modified file>
close and open again
Try 1 or 2
1 - $ gem install cocoapods
2 - $ sudo gem install cocoapods
if it doesn't work, then export GEM_HOME:
export GEM_HOME="$HOME/.gem"
And try again:
gem install cocoapods
Remember the oficial doc says you can use sudo (https://guides.cocoapods.org/using/getting-started.html#getting-started).
To fix this, I ran
brew reinstall ruby
which showed me this message
==> Caveats
==> ruby
By default, binaries installed by gem will be placed into:
/opt/homebrew/lib/ruby/gems/3.1.0/bin
You may want to add this to your PATH.
ruby is keg-only, which means it was not symlinked into /opt/homebrew,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.
If you need to have ruby first in your PATH, run:
echo 'export PATH="/opt/homebrew/opt/ruby/bin:$PATH"' >> ~/.profile
So I added these two lines to my ~/.bashrc file
export PATH="/opt/homebrew/opt/ruby/bin:$PATH"
export PATH="/opt/homebrew/lib/ruby/gems/3.1.0/bin:$PATH"
Then I opened a new Terminal.app window and ran my gem install command again and it worked.
Tested on M1 MacBook Air (assuming Homebrew installed)
Following to the top answer, we can run:
brew install chruby ruby-install
To install the latest stable ruby:
ruby-install ruby
Then get the version number by running:
chruby
In your ~/.zshrc file:
export PATH=/opt/homebrew/bin:$PATH
source /opt/homebrew/opt/chruby/share/chruby/chruby.sh
source /opt/homebrew/opt/chruby/share/chruby/auto.sh
chruby 3.1.2
The "3.1.2" is the output I got when running chruby. Make sure you add that one line at the end.
Remember to restart the terminal each time you install a new gem.
If you have installed ruby separately and installed ruby using rbenv/rvm you budler might point to different versions.
try
gem env home
and
ruby -v
both should point to same version.check you have installed ruby using rbenv/rvm, If so delete the ruby version you installed separately.
In order for gem to work, you must invoke rbenv,
rbenv shell <ruby version>
and
rbenv global <ruby version>
I am not sure how RVM works.
Let me know if this works.
After install rbenv ,I also have this problem , add this line in my .bashrc :
eval "$(rbenv init -)"
solved my problem.
You don't have write permissions for the /Library/Ruby/Gems/2.3.0 directory.
In my case, the issue was related to ruby access some how the ruby path was messed up in my system.
The below steps helped me resolve the problem
Open the terminal
Install ruby using homebrew
[for fresh install] brew install ruby
[for reinstalling] brew reinstall ruby
Check the path of ruby using the below command
which ruby
It should be installed in the below path
/usr/bin/ruby
To change the ruby path to the user path
To check which shell is used by your system
echo $0
-zsh
For zshrc
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >>~/.zshrc
For bash
echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >>~/~/.bashrc
Quit and relaunch the terminal
After changing the path with step 5
Check for the path of the ruby again (execute step 3 - please make sure the path displays as given below)
/usr/local/opt/ruby/bin/ruby
[if you don't quit and launch the terminal, step 4 path will be shown]
This step may not be applicable to everyone can skip step 10 & 11, if you have the correct Cocoapods version installed
Check the version of the pod installed
pod --version
Uninstall the specific version of Cocoapods using the below command
In case the version installed is 1.11.0
gem uninstall cocoapods -v 1.11.0
Install the Cocoapods of the specific version
gem install cocoapods -v 1.11.0
Change the path to the Project directory cd {path of the project directory}
Install the bundler in the project directory
bundle install
Execute pod install
pod install
I deleted those directories by using the below command
sudo rm -rf \
/Library/Ruby/Gems/2.6.0/{build_info,cache,doc,extensions,gems} \
/Library/Ruby/Gems/2.6.0/specifications/*.gemspec \
/Library/Ruby/Site
then installed cocoa pods using sudo gem install cocoapods
and it worked for me. Thanks
TL;DR
In several occasions, I've solved this kind of errors by just closing my terminal session and opening a new one before retrying the failing command.
Long explanation
In some SOs (such as MacOS) there is already a pre-installed, system-wide version of ruby. If you are using a version manager, such as rbenv or asdf, they work by playing with the environment of your current session so that the relevant commands point to the binaries installed by the version manager.
When installing a new binary, the version manager installs it in a special location, usually somewhere under the user's home directory. It then configures everything in your PATH so that you get the freshly installed binaries when you issue a command, instead of the ones that came with your system. However, if you don't restart the session (there are other ways of getting your environment updated, but that's the easiest one) you don't get the new configuration and you will be using the original installation.
Had the same error because I forgot to run the following after installing ruby:
source ~/.zshrc - or other ~/...rc file depending on your terminal
rbenv global 2.6.3 helped me solve this problem.
A different installation of ruby should be used. I use rbenv for that purpose.
# install your version of ruby
$ rbenv install 2.0.0-p247
# modify .ruby_version on current directory
$ rbenv local 2.0.0-p247
# proceed installing gems
$ gem install bundler
Disclamer: I am not a ruby person. This worked for me and if you are a ruby expert and see things to change in this answer, please, go ahead or comment!
I was using the below command to install fastlane but didn't worked
gem install fastlane -NV
So using sudo to install gems worked for me and it would be like
sudo gem install fastlane -NV
I try it, and work to me
export PATH=/opt/homebrew/opt/ruby/bin:/opt/homebrew/lib/ruby/gems/3.0.0/bin:$PATH
export LDFLAGS="-L/opt/homebrew/opt/ruby/lib"
export CPPFLAGS="-I/opt/homebrew/opt/ruby/include"
gem install ffi
For latest OS versions
First run sudo xcode-select --switch /
sudo gem install cocoapods --user-install
this did it for me
for Mac OS 12 and above also for 13
Xcode 14 and above
first you call
export GEM_HOME="$HOME/.gem"
after that
gem install cocoapods
home its help you ☺️
Solution for Mac
Install/update RVM with last ruby version
\curl -sSL https://get.rvm.io | bash -s stable
Install bundler
gem install bundler
after this two commands (sudo) gem install .... started to work
Solution for MAC. run the command
sudo gem update
then type your Mac password when prompted
After trying the previous approaches, this worked for me on Big Sur:
sudo gem install -n /usr/local/bin cocoapods
Install homebrew by passing this into your terminal
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
Install cocoapods using brew
brew install cocoapods
After install ruby with rbenv you also need to set global ruby. For that you can do like, rbenv global 3.2.1 then install bundler with gem install bundler. It will work.
This worked for me on Mac
sudo chown -R $(whoami) $(brew --prefix)/*
I am newbie to ubuntu and ROR. After installed latest ruby1.9.2 with apt-get, type "ruby -v" it still shows up old version ruby1.8.7. I tried to reinstall with rvm, nothing changed.
As mentioned in similar question, I tried to remove ruby, and reinstall ruby1.9.1-full... still the same thing...
What else I can do about this?
ubuntu uses a something called alternatives for chosing between two version of similar executable. Running
sudo update-alternatives --config ruby
and chosing the ruby you want should do the trick
I'm using RVM myself, but if I remember correctly, ruby1.8 and ruby1.9 can be installed side by side on Ubuntu. ruby is just a symbolic link which points to version 1.8 by default - which should be called ruby1.8 and stored in the same directory. 1.9 will be called ruby1.9.
So just find where ruby symbolic link is (whereis ruby) and change it so it points to ruby1.9.
sudo rm /path/ruby
sudo ln -s /path/ruby1.9 /path/ruby
Sounds like you are using rvm, but still referencing system ruby. To switch, you have to tell rvm what version to use.
rvm use 1.9.2
This will switch your current environment only. So ruby -v in your current shell will use the right version. (you should probably go with 1.9.3, FWIW) If you want to always use that ruby be default, you type:
rvm use 1.9.2 --default
If you want to switch back to system ruby, you can use:
rvm use system
I think it is because the package of Ruby version at apt-get repository is an old version.
I suggest use rbenv to install the latest version.
Here is a great tutorial using rbenv to install the latest Ruby version from Digital Ocean:
https://www.digitalocean.com/community/tutorials/how-to-install-ruby-on-rails-with-rbenv-on-ubuntu-14-04
sudo apt-get install ruby1.9
should do the trick.
You can find what libraries are available to install by
apt-cache search <your search term>
So I just did apt-cache search ruby | grep 9 to find it.
You'll probably need to invoke the new Ruby as ruby1.9, because Ubuntu will probably default to 1.8 if you just type ruby.
I wanted to install ruby 1.9.1 instead of the older version so I ran this command on Ubuntu:
sudo apt-get install ruby1.9.1-full
After the install was complete, I got the following error(s):
WARNING: Installing to ~/.gem since /var/lib/gems/1.9.1 and
/var/lib/gems/1.9.1/bin aren't both writable.
WARNING: You don't have /home/brooks/.gem/ruby/1.9.1/bin in your PATH,
gem executables will not run.
When I run "ruby -v" (without the quotes) I get the following response:
bash: /usr/bin/ruby: No such file or directory
So my questions are: 1) Why is it so difficult to install ruby, 2) How can I resolve this problem?
Thank you for your help!
Br
After the install was complete, I got the following error(s):
Those aren't errors. They're warnings issued by rubygems. If you want to avoid them run rubygems with sudo or add add /home/brooks/.gem/ruby/1.9.1/bin to your PATH variable. Or if you don't care that you can't run executables installed by gems without specifying the whole path, just ignore them.
When I run "ruby -v" (without the quotes) I get the following response:
bash: /usr/bin/ruby: No such file or directory
Try ruby1.9.1 -v
On my Linux systems I ignore apt-get for Ruby, except for the default ruby package that goes into /usr/bin. I will load any other version, like 1.8.7-head or 1.9.1-whatever using RVM into my own space if it's just for me.
If the ruby being installed is system-wide I will use a source tarball and install into /usr/local/bin and adjust my path or the #! line in the source code to determine which version I want invoked.
In my experience Ruby is easy to install on Ubuntu or any Linux as long as I don't use the packages. I know that hurts the feelings of the package maintainers but I haven't found their fruits to be to my taste very often.
For the average user I highly recommend RVM for development and testing as you can have multiple rubies installed and jump back and forth easily by using a #!/usr/bin/env ruby invocation and letting RVM adjust the version I'll run against by doing a rvm use 1.8.7 or rvm use 1.9.1. Or, you can run commands against each installed instance by using rvm ruby .... RVM is a great piece of software and Wayne should be knighted. :-)
On my Ubuntu, /usr/bin/ruby is ruby1.8. /usr/bin/ruby1.9 is ruby1.9 and /usr/bin/ruby1.9.1 is ruby1.9.1
It's a good idea to leave /usr/bin/ruby as ruby1.8 as there may be system programs that expect it to be ruby1.8
You need to update your alternatives for ruby. Try
sudo update-alternatives --config ruby
If you don't already have an option for a particular version you have installed, see this post: http://ubuntuforums.org/showpost.php?p=10057489&postcount=6
1) Why is it so difficult to install
ruby
So difficult?
2) How can I resolve this problem?
Synaptic lists Ruby1.9.1 does that install okay?
Here's the Ruby 1.9.1-p378 tarball - you could try ye olde ./configure && make && make install
I used rvm link text to install ruby 1.9.1 and then 1.9.2
To solve this problem:
sudo apt-get remove ruby ruby1.9.1-full
Download and decompress ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.1-p378.tar.gz.
cd ruby-1.9.1-p378
ls configure - if there isn't a "file not found" error, skip to step 6.
autoconf
./configure - if there are any errors, post them in a comment.
make
sudo make install
which ruby - if there is any output, do not go on.
which ruby-1.9.1 or which ruby1.9.1 - There should be output from one of those.
cd to the directory revealed by step 10.
sudo ln -s <your_ruby> ruby, where <your_ruby> is whichever command in step 10 produced output, either ruby-1.9.1 or ruby1.9.1.
repeat step 12, replacing ruby for gem, irb, ri, and rdoc. So one might be sudo ln -s gem-1.9.1 gem.
If you get the same WARNING: Installing to ~/.gem since...:
nano ~/.profile
append this:
.
export PATH=/home/brooks/.gem/ruby/1.9.1/bin:$PATH
export GEM_HOME=/home/brooks/.gem/ruby/1.9.1
Again, if there are any errors, post them in a comment on this answer.
Is there any way, on Ubuntu 9.04, to install Ruby 1.8 as ruby1.8 (or get rid of it altogether) and have Ruby 1.9 be the default ruby?
I'm not really sure, but maybe this can help:
update-alternatives --config ruby
... and here's the non-interactive, scriptable, way:
update-alternatives --set ruby /usr/bin/ruby1.9.1
You may find out about available alternatives and respective /usr/bin/... paths by doing:
update-alternatives --query ruby
Martin - Take a look at the following link: http://ryanbigg.com/2010/12/ubuntu-ruby-rvm-rails-and-you/
This is where installation of ruby is heading for ubuntu servers. This should allow you to not only switch to a ruby version when needed, but also keep gems separated based on ruby versions, etc.
You can completely remove Ruby 1.8 too with:
sudo apt-get remove libruby1.8 ruby1.8 ruby1.8-dev rubygems1.8
After that, you will only have Ruby 1.9 installed.
sudo \curl -L https://get.rvm.io | bash -s stable --ruby --rails
will install an up-to-date version of ruby (and rails), and allow you to avoid brokenness of Ubuntu's RVM, see https://stackoverflow.com/a/9056395/497756.
If you go this route, get rid of Ubuntu-installed versions and associated packages like bundle.
Details here: https://rvm.io/rvm/install/
(Note: this is the TL;DR version of the post by henry74.)
Try this:
sudo apt-get install ruby1.9.1 rubygems1.9.1
or try building from source. this worked for me on ubuntu 9.04 and after a restart 1.9 was the standard ruby