2015-11-17 3 views
2

Я пытаюсь запустить образец сервера rails, который я загрузил. Но, я получаю сообщение об ошибке разрешений:Команда «rails server» возвращает ошибку: `mkdir ': Permission denied @ dir_s_mkdir

Я бегу:

rails server 

я получаю:

=> Booting Puma 
=> Rails 4.2.4 application starting in development on http://localhost:3000 
=> Run `rails server -h` for more startup options 
=> Ctrl-C to shutdown server 
Exiting 
/usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:250:in `mkdir': Permission denied @ dir_s_mkdir - /home/username/web-app/tmp (Errno::EACCES) 
    from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:250:in `fu_mkdir' 
    from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:224:in `block (2 levels) in mkdir_p' 
    from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:222:in `reverse_each' 
    from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:222:in `block in mkdir_p' 
    from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:208:in `each' 
    from /usr/share/rvm/rubies/ruby-2.1.7/lib/ruby/2.1.0/fileutils.rb:208:in `mkdir_p' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:134:in `block in create_tmp_directories' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:133:in `each' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:133:in `create_tmp_directories' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/server.rb:77:in `start' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:80:in `block in server' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `tap' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:75:in `server' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands/commands_tasks.rb:39:in `run_command!' 
    from /home/username/.rvm/gems/ruby-2.1.7/gems/railties-4.2.4/lib/rails/commands.rb:17:in `<top (required)>' 
    from bin/rails:4:in `require' 
    from bin/rails:4:in `<main>' 

Видя, что это была ошибка разрешения я пробовал:

sudo rails server 

Но я получил эту ошибку только

Your Ruby version is 1.9.3, but your Gemfile specified 2.1.7 

Как преодолеть проблему с разрешениями, когда пользователь root использует другую версию ruby?

EDIT 1:

ruby --version 

возвращается:

ruby 2.1.7p400 (2015-08-18 revision 51632) [i686-linux] 

EDIT 2:

sudo ruby --version 

возвращает:

ruby 1.9.3p484 (2013-11-22 revision 43786) [i686-linux] 

EDIT 3:

В моем каталоге веб-приложений нет файла tmp. Когда я тип ls -la я получаю:

drwxr-xr-x 12 root root  4096 Nov 15 10:32 . 
drwxr-xr-x 31 username username 4096 Nov 17 04:23 .. 
drwxr-xr-x 10 root root  4096 Nov 15 10:32 app 
drwxr-xr-x 2 root root  4096 Nov 15 10:32 bin 
-rw-r--r-- 1 root root  126 Nov 15 10:32 browserslist 
-rw-r--r-- 1 root root  363 Nov 15 10:32 Capfile 
drwxr-xr-x 6 root root  4096 Nov 15 10:32 config 
-rw-r--r-- 1 root root  153 Nov 15 10:32 config.ru 
drwxr-xr-x 3 root root  4096 Nov 15 10:32 db 
-rw-r--r-- 1 root root  1301 Nov 15 10:32 Gemfile 
-rw-r--r-- 1 root root 10953 Nov 15 10:32 Gemfile.lock 
drwxr-xr-x 8 root root  4096 Nov 15 10:32 .git 
-rw-r--r-- 1 root root  470 Nov 15 10:32 .gitignore 
drwxr-xr-x 4 root root  4096 Nov 15 10:32 lib 
drwxr-xr-x 2 root root  4096 Nov 15 10:32 log 
drwxr-xr-x 2 root root  4096 Nov 15 10:32 public 
-rw-r--r-- 1 root root  249 Nov 15 10:32 Rakefile 
-rw-r--r-- 1 root root  478 Nov 15 10:32 README.rdoc 
-rw-r--r-- 1 root root  8 Nov 15 10:32 .rspec 
drwxr-xr-x 3 root root  4096 Nov 15 10:32 spec 
drwxr-xr-x 3 root root  4096 Nov 15 10:32 vendor 
+0

Обновите рубиновую версию или измените рубиновую версию на '1.9.3' в своем gemfile. –

+0

Какие разрешения установлены на '/ home/matthew/gomrkit-web-app/tmp'? В моих локальных приложениях это 775, но я думаю, что это действительно должно быть 755. –

+0

tmp не существует, когда я делаю ls -la @japed – Rorschach

ответ

4

Сначала необходимо создать каталог tmp, а затем предоставить ему необходимые разрешения. Это можно сделать с помощью следующего кода:

sudo mkdir tmp 
sudo chmod 777 tmp 
0

Потому что каждый раз, когда вы запускаете сервер рельсы это создать новый файл с именем server.pid в папке tmp/pids. В вашем случае, когда вы запускаете сервер, он пытается создать pid, но у вас нет разрешения на создание любого файла в этой папке. вам необходимо предоставить разрешение на запись в каталог tmp.

+0

Я не могу найти tmp в своем ~/home/username/web-app/ – Rorschach

+0

Rails автоматически создает папку tmp. просто укажите разрешение на запись для вашего приложения i.e из-за пределов вашего приложения '~/home/username $ chmod -R 0755 username/web-app' –

Смежные вопросы