在终端:#rails工作,但#sudo rails不-RVM Gemset

时间:2011-05-01 17:34:02

标签: ruby-on-rails rvm sudo

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>'`

2 个答案:

答案 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(以及其他环境变量)。有几个选择:

  1. 配置/ etc / sudoers以保留您想要的环境变量,但对于PATH,您可能会遇到问题:sudo changes PATH - why?
  2. 以root身份安装rvm,为所有用户安装系统范围
  3. 使用rvmsudo