В терминале: #rails работает, но #sudo rails не -RVM Gemset - PullRequest
2 голосов
/ 01 мая 2011

alec@Locke:~/workspace/rails/nwis$ rails -v Rails 3.0.7 alec@Locke:~/workspace/rails/nwis$ sudo rails -v sudo: rails: command not found

Мне нужно использовать sudo, потому что при попытке запустить сервер rails на моей машине появляется ошибка отказа в разрешении.

Я думаю, что это проблема с RVM и использованием Gemsets, но я не знаю почему. Я попытался повторно запустить процесс установки Gemset, используя sudo для каждой команды, чтобы убедиться, что мой пользователь root и мой обычный пользователь находятся на одной странице, но это дало мне один и тот же результат.

Чтобы понять, почему я бегу как sudo; при попытке запустить сервер rails вот что происходит:

rails server
=> Booting WEBrick
=> Rails 3.0.7 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Exiting
/home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:267:in `initialize': Permission     denied - /home/alec/workspace/rails/nwis/tmp/pids/server.pid (Errno::EACCES)
    from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:267:in `open'
    from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:267:in `write_pid'
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/rack-1.2.2/lib/rack/server.rb:203:in `start'
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands/server.rb:65:in `start'
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:30:in `block in <top (required)>'
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:27:in `tap'
from /home/alec/.rvm/gems/ruby-1.9.2-p180/gems/railties-3.0.7/lib/rails/commands.rb:27:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'`

Ответы [ 2 ]

7 голосов
/ 01 мая 2011

Вот ваша проблема, вероятно:

Permission     denied - /home/alec/workspace/rails/nwis/tmp/pids/server.pid

Удалите это (возможно, через sudo) и любые другие временные файлы, которые могли быть созданы в sudo. Тогда вы сможете запускать рельсы, как вы, без sudo. Смешивание двух всегда даст вам проблемы с разрешениями.

Или, в качестве альтернативы, просто запустите sudo chown -R alec:alec . (или независимо от вашей группы) в корневом каталоге rails, чтобы сбросить все владения для себя.

2 голосов
/ 01 мая 2011

В зависимости от вашего / etc / sudoers и сборки sudo по умолчанию вашего дистрибутива, вполне возможно, что sudo не сохранит ваш PATH (как и другие переменные окружения). Есть несколько вариантов:

  1. сконфигурируйте / etc / sudoers для хранения нужных вам переменных среды, хотя для PATH вы, скорее всего, столкнетесь с проблемами: sudo изменяет PATH - почему?
  2. установить rvm от имени пользователя root для всей системы
  3. использовать rvmsudo
...