【发布时间】:2011-05-01 17:34:02
【问题描述】:
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 server 时出现权限被拒绝错误。
我认为这是 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>'`
【问题讨论】:
-
使用 rvm,你真的不应该使用 sudo —— 你可能想尝试清除系统范围内安装的 gems(你通过 sudo 安装的)并重新开始。如果您需要其他用户拥有的 rails 目录,请考虑使用 sudo 创建必要的组,将自己添加到该组,并授予组对父目录的写入权限。
-
很有可能“权限被拒绝”错误是因为您以前使用过 sudo 进行某些操作。检查文件(尤其是 tmp 和日志文件)的权限,并确保它们属于 alec,而不是 root。或者只是在 rails 应用程序目录中尝试
sudo chown -R alec:users *。 (使用存在的组,例如“alec”或“staff”)
标签: ruby-on-rails rvm sudo