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的问题,但我不知道为什么。我尝试使用sudo为每个命令重新运行Gemset设置过程,以确保我的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>'`
答案 0 :(得分:7)
这是你的问题,可能是:
Permission denied - /home/alec/workspace/rails/nwis/tmp/pids/server.pid
删除(可能通过sudo)以及可能在sudo下创建的任何其他临时文件。然后你应该能够像你一样运行rails,没有sudo。将两者混合在一起会给你带来权限问题。
或者,只需在rails根目录中运行sudo chown -R alec:alec .
(或任何组),即可将所有权重置为自己。
答案 1 :(得分:2)
根据您的/ etc / sudoers和您的发行版的默认构建的sudo,sudo很可能不会保留您的PATH(以及其他环境变量)。有几个选择: