32
votes

I created a Rails model "model" a while ago and now I'm trying to run the server. After a bundle install I get:

There was an error while trying to write to Gemfile.lock. It is likely that you need to allow write permissions for the file at path: /home/thiago/model/Gemfile.lock

Tried rails s to see what happens and:

/home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/bundler-1.3.5/lib/bundler/definition.rb:235:in `rescue in lock': There was an error while trying to write to Gemfile.lock. It is likely that  (Bundler::InstallError)
you need to allow write permissions for the file at path: 
/home/thiago/model/Gemfile.lock
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/bundler-1.3.5/lib/bundler/definition.rb:220:in `lock'
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/bundler-1.3.5/lib/bundler/environment.rb:34:in `lock'
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/bundler-1.3.5/lib/bundler/runtime.rb:43:in `setup'
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429/gems/bundler-1.3.5/lib/bundler.rb:120:in `setup'
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/rubygems-bundler-1.1.1/lib/rubygems-bundler/noexec.rb:79:in `setup'
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429@global/gems/rubygems-bundler-1.1.1/lib/rubygems-bundler/noexec.rb:91:in `'
  from /home/thiago/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:110:in `require'
  from /home/thiago/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:110:in `rescue in require'
  from /home/thiago/.rvm/rubies/ruby-1.9.3-p429/lib/ruby/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:35:in `require'
  from /home/thiago/.rvm/gems/ruby-1.9.3-p429/bin/ruby_noexec_wrapper:9:in `'

Can I set the permissions for the Gemfile.lock so I can bundle and run server?

$ ls -a -l
total 80
drwxr-xr-x. 13 root   root   4096 May 19 14:08 .
drwx------. 41 thiago thiago 4096 Jul  7 23:51 ..
drwxr-xr-x.  8 root   root   4096 May 19 14:08 app
drwxr-xr-x.  5 root   root   4096 May 19 14:08 config
-rw-r--r--.  1 root   root    155 May 19 14:08 config.ru
drwxr-xr-x.  2 root   root   4096 May 19 14:08 db
drwxr-xr-x.  2 root   root   4096 May 19 14:08 doc
-rw-r--r--.  1 root   root    765 May 19 14:08 Gemfile
-rw-r--r--.  1 root   root    430 May 19 14:08 .gitignore
drwxr-xr-x.  4 root   root   4096 May 19 14:08 lib
drwxr-xr-x.  2 root   root   4096 May 19 14:08 log
drwxr-xr-x.  2 root   root   4096 May 19 14:08 public
-rw-r--r--.  1 root   root    270 May 19 14:08 Rakefile
-rw-r--r--.  1 root   root   9208 May 19 14:08 README.rdoc
drwxr-xr-x.  2 root   root   4096 May 19 14:08 script
drwxr-xr-x.  7 root   root   4096 May 19 14:08 test
drwxr-xr-x.  3 root   root   4096 May 19 14:08 tmp
drwxr-xr-x.  4 root   root   4096 May 19 14:08 vendor

Model files created incorrectly?

3
Well, what are the current permissions for the file in question?Andrew Marshall
It looks look you've created the app as root. chown all the files to yourself and you should be okFrederick Cheung

3 Answers

73
votes

Your app root directory (whose permissions govern file creation) and files are all owned by root instead of your user (possibly because you did sudo rails new—don’t use sudo for that). You can change the permissions by doing:

sudo chown -R $(whoami):$(whoami) myappfolder

Where “myappfolder” is your Rails app’s root directory.

By the way, a good tip with regard to sudo is to always try the command without it first, then, if there’s a permissions error when it runs, you may need sudo. Don’t default to using sudo.

6
votes

Sometimes the above answer:

sudo chown -R $(whoami):$(whoami) myappfolder

will give you the error:

chown: ifeegoo: illegal group name

You can also try this kind of command:

sudo chown -R ifeegoo: /Users/ifeegoo/workspace/rails/Test
0
votes

I had the same issue, that's how i fixed mine.

If you are using ZSH then goto

profile -> command

and check "Run command as a login shell" and close the terminal. Fire up your terminal and initiate bundle install command.