2011-03-30 47 views
2

我的Rails应用程序是我的用户下运行良好时:错误运行轨道为根

$ rails server 
=> Booting WEBrick 
=> Rails 3.0.5 application starting in development on htttp://0.0.0.0:3000 
=> Call with -d to detach 
=> Ctrl-C to shutdown server 
[2011-03-30 01:56:29] INFO WEBrick 1.3.1 
[2011-03-30 01:56:29] INFO ruby 1.9.2 (2011-02-18) [x86_64-darwin10.7.0] 
[2011-03-30 01:56:29] INFO WEBrick::HTTPServer#start: pid=3899 port=3000 

但我需要在端口80上运行,所以运行它作为须藤给我:

$ sudo rails server -p 80 
/Users/jamez/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:900:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError) 
    from /Users/jamez/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:248:in `activate' 
    from /Users/jamez/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1276:in `gem' 
    from /Users/jamez/.rvm/gems/ruby-1.9.2-p180/bin/rails:18:in `<main>' 

更多信息:

$ ruby -v 
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0] 

$ sudo ruby -v 
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0] 

$ rails -v 
Rails 3.0.5 

$ sudo rails -v 
/Users/jamez/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:900:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError) 
    from /Users/jamez/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:248:in `activate' 
    from /Users/jamez/.rvm/rubies/ruby-1.9.2-p180/lib/ruby/site_ruby/1.9.1/rubygems.rb:1276:in `gem' 
    from /Users/jamez/.rvm/gems/ruby-1.9.2-p180/bin/rails:18:in `<main>' 

$ gem list --local rails 

*** LOCAL GEMS *** 

rails (3.0.5) 

$ sudo gem list --local rails 

*** LOCAL GEMS *** 

rails (3.0.5) 

$ gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.6.2 
    - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [x86_64-darwin10.7.0] 
    - INSTALLATION DIRECTORY: /Users/jamez/.rvm/gems/ruby-1.9.2-p180 
    - RUBY EXECUTABLE: /Users/jamez/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
    - EXECUTABLE DIRECTORY: /Users/jamez/.rvm/gems/ruby-1.9.2-p180/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-10 
    - GEM PATHS: 
    - /Users/jamez/.rvm/gems/ruby-1.9.2-p180 
    - /Users/jamez/.rvm/gems/[email protected] 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

$ sudo gem environment 
RubyGems Environment: 
    - RUBYGEMS VERSION: 1.6.2 
    - RUBY VERSION: 1.9.2 (2011-02-18 patchlevel 180) [x86_64-darwin10.7.0] 
    - INSTALLATION DIRECTORY: /Users/jamez/.rvm/gems/ruby-1.9.2-p180 
    - RUBY EXECUTABLE: /Users/jamez/.rvm/rubies/ruby-1.9.2-p180/bin/ruby 
    - EXECUTABLE DIRECTORY: /Users/jamez/.rvm/gems/ruby-1.9.2-p180/bin 
    - RUBYGEMS PLATFORMS: 
    - ruby 
    - x86_64-darwin-10 
    - GEM PATHS: 
    - /Users/jamez/.rvm/gems/ruby-1.9.2-p180 
    - /Users/jamez/.rvm/gems/[email protected] 
    - GEM CONFIGURATION: 
    - :update_sources => true 
    - :verbose => true 
    - :benchmark => false 
    - :backtrace => false 
    - :bulk_threshold => 1000 
    - REMOTE SOURCES: 
    - http://rubygems.org/ 

发生了什么事的任何想法? 我该如何使它和没有sudo一起工作?

回答

7

RVM正在阻止sudo看到Rails二进制文件。

要解决这个问题,使用rvmsudo

> rails -v 
Rails 2.3.11 

> sudo rails -v 
/Users/dan/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems.rb:779:in `report_activate_error': Could not find RubyGem rails (>= 0) (Gem::LoadError) 
     from /Users/dan/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems.rb:214:in `activate' 
     from /Users/dan/.rvm/rubies/ree-1.8.7-2010.02/lib/ruby/site_ruby/1.8/rubygems.rb:1082:in `gem' 
     from /Users/dan/.rvm/gems/[email protected]/bin/rails:18 

> rvmsudo rails -v 
Rails 2.3.11 
+0

工作!就是这样,非常感谢你。 – Jamez 2011-03-30 05:14:35

+0

只是一个友好的提示:习惯上通过点击绿色选中标记来解答您的问题为“接受”的答案。 – 2011-03-30 05:16:35

+0

你也可以使用'sudo -E'来保持环境变量 – ALoR 2011-03-30 07:08:01

2

您正在使用Rails 3,使用捆扎机,其安装在每个用户的基础上的宝石,这样才能运行该应用程序为给定用户,您必须先以该用户身份登录时运行bundle install。我认为这会使它适合你。

顺便说一句,我假设你知道以root身份运行任何东西都是有风险的。您可能想要配置Apache和Passenger(或类似的东西)来通过端口80提供您的Rails应用程序。