How to fix a bundle install "nio4r error" on Rails 5.0.0

I was with the same error just now.. In my case, I had installed the ruby through the package: https://www.brightbox.com/blog/2017/01/13/ruby-2-4-ubuntu-packages/

But, I had not installed the ruby-dev package.

In my case: sudo apt-get install ruby2.4-dev worked for me.

After installation I was able to compile the gem: nio4r

I think you have to install some package ruby-dev => sudo apt-get install ruby-dev


This path:

/Users/lukeplourde/.rbenv/...

shows you're using rbenv to manage your Ruby.

You should never get permission errors in that case. The fact you are getting a permission error strongly suggests that at some point you installed something, probably nio4r, into that rbenv-managed Ruby using sudo.

When you use sudo, you temporarily elevate your privileges to the system's root user's privileges, and all files saved will have that user's read/write settings and ownership. That's definitely not what you want.

rbenv's documentation specifically says to not use sudo:

You don't need sudo to install gems. Typically, the Ruby versions will be installed and writeable by your user. No extra privileges are required to install gems.

To fix the problem simply run:

sudo chown -R lukeplourde ~/.rbenv

and chown will walk through all directories in the ~/.rbenv directory and change the ownership back to you for all child files and directories.

Knowing when to use sudo takes experience and knowledge of the Ruby environment, your current settings for it, and what it is you intend to happen. In general though, if your rbenv is set to use a Ruby you installed you do not want to use any sudo command when using gem. If you are on Mac OS and you are using sudo and rbenv and a Ruby you installed then think multiple times before pressing Return because it's likely not what you want to do.

And, the above warnings about using sudo apply if you're using a RVM or Homebrew managed Ruby also. sudo is usually not your desired first approach. The documentation on their official sites is your best source of information on what to do.


Did you reset the ownership of the files?

The ownership did not change no.

Most of the time, two things are at the root of permissions problems:

  • ownership
  • access flags

chown changes ownership of a file or directory and optionally allows us to change the owner's group. If you are not the owner according to the system, and/or not in the group, then your chances of being able to access it went down.

chmod changes the access privileges of a file or directory for the owner, their group, and/or for everyone else on the machine.

The .gitignore file in question should be owned by you, and have permissions of -rw-r--r--. If those aren't, you need to set them so they are. Study the chmod and chown commands using man chmod and man chown at the command-line and adjust the file/directory permissions appropriately and you should be able to fix the problem.


I was able to fix the problem with:

brew update 

and

bundle update

I resolved the issue by running the following command.

bundle config build.nio4r --with-cflags="-std=c99"
bundle