【问题标题】:Ruby on Rails, nginx, passenger on production server (cannot load such file -- rubygems/path_support)Ruby on Rails、nginx、生产服务器上的乘客(无法加载此类文件 -- ruby​​gems/path_support)
【发布时间】:2011-10-21 22:37:26
【问题描述】:

我安装了:

  • Centos 6
  • Ruby 1.9.3-rc1
  • Passenger gem 和passenger nginx 模块(根据自己的源代码1.1.6 编译)
  • 安装的rails 3.1.0
  • 制造 /srv
  • 是否进行了新的 rails 测试
  • 捆绑安装
  • 根据示例 /srv/test/public 为 nginx 内的乘客制作 vhost
  • 服务 nginx 停止 && 服务 nginx 启动
  • ruby 应用加载正常 index.html 显示,但随后...

单击默认 /public/index.html 中的“检查应用程序环境”链接时,我收到此错误

无法加载此类文件 -- ruby​​gems/path_support

Question: Anyone know how I can resolve the cannot load such file -- rubygems/path_support    error?

Full error post below

Ruby (Rack) 应用程序无法启动 缺少应用程序所需的源文件。 您可能没有正确上传您的应用程序文件。请检查您的所有申请文件是否已上传。 可能未安装所需的库。请安装此应用程序所需的所有库。 有关错误的更多信息可能已写入应用程序的日志文件。请检查它以便分析问题。

错误消息:无法加载此类文件 -- ruby​​gems/path_support

异常类:LoadError

应用程序根目录:/srv/test

回溯:

# File Line Location
0 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems.rb 392 in 'paths'
1 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems.rb 413 in 'path'
2 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb 381 in 'dirs'
3 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb 267 in '_all'
4 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb 409 in 'each'
5 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb 441 in 'find'
6 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/specification.rb 441 in 'find_by_path'
7 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems.rb 203 in 'try_activate'
8 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb 58 in 'rescue in require'
9 /usr/local/rvm/rubies/ruby-1.9.3-rc1/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb 35 in 'require'
10 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/utils.rb 241 in 'prepare_app_process'
11 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb 155 in 'block in initialize_server'
12 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/utils.rb 572 in 'report_app_init_status'
13 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb 153 in 'initialize_server'
14 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb 204 in 'start_synchronously'
15 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb 180 in 'start'
16 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/rack/application_spawner.rb 128 in 'start'
17 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb 253 in 'block (2 levels) in spawn_rack_application'
18 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server_collection.rb 132 in 'lookup_or_add'
19 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb 246 in 'block in spawn_rack_application'
20 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server_collection.rb 82 in 'block in synchronize'
21 prelude> 10:in 'synchronize'
22 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server_collection.rb 79 in 'synchronize'
23 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb 244 in 'spawn_rack_application'
24 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb 137 in 'spawn_application'
25 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/spawn_manager.rb 275 in 'handle_spawn_application'
26 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb 357 in 'server_main_loop'
27 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/lib/phusion_passenger/abstract_server.rb 206 in 'start_synchronously'
28 /usr/local/rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/helper-scripts/passenger-spawn-server 99 in ''

【问题讨论】:

    标签: ruby-on-rails ruby rubygems compiler-errors


    【解决方案1】:

    虽然我只为一个用户安装了 rvm 和 ruby​​,但我也遇到了类似的问题。对我来说,解决方案是检查应用程序文件是否属于安装了 ruby​​ 的同一用户。

    http://www.modrails.com/documentation/Users%20guide%20Nginx.html#user_switching

    【讨论】:

    • 谢谢我还没有时间去研究这个,如果是这个原因我会更新,谢谢指出!
    【解决方案2】:

    就我而言,我也遇到了这个问题:
    (我的环境:Centos 5.8,rbenv 1.9.3p327,passenger 3.0.19,nginx(由乘客编译和安装)。我用谷歌搜索,但没有找到任何直接答案(关键字:rbenv, passenger, cannot load such file -- rubygems/path_support),所以我写了我的解决方案在这里。

    我已检查并将 nginx 用户设置为 root,但无法正常工作。 并将gem文件夹的所有权限更改为777。不起作用。

    我终于找到了解决方案:将这两行代码添加到您的 Nginx 配置文件中:

    passenger_default_user root;
    passenger_default_group root;
    

    所以现在你的 nginx 配置文件看起来像:

    # /opt/nginx/config/nginx.conf
    user  root;  # seems this line of code doesn't take effect.
    http {
      passenger_root /root/.rbenv/versions/1.9.3-p327/lib/ruby/gems/1.9.1/gems/passenger-3.0.19;
      passenger_ruby /root/.rbenv/versions/1.9.3-p327/bin/ruby;
    
      # these lines are the key!!!
      passenger_default_user root;
      passenger_default_group root;
    
      server {
        listen 80;
        root <your_rails_project_public_folder>;
        passenger_enabled on;
      }
    }
    

    【讨论】:

    • 这对我有用。最后我能够在同一台服务器上运行 Wordpress 和 Sinatra :) 我的两个建议;与其以 root 身份运行,不如以具有 sudo 权限的非 root 用户身份运行它。
    【解决方案3】:

    我遇到了同样的问题。 蒂莫是对的。

    您的应用程序必须设置 /home/rvm_user/ 目录。

    示例:

    # vi /etc/conf/httpd.conf
    LoadModule passenger_module
    /home/rvm_user/.rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9/ext/apache2/mod_passenger.so
    PassengerRoot /home/rvm_user/.rvm/gems/ruby-1.9.3-rc1/gems/passenger-3.0.9
    PassengerRuby /home/rvm_user/.rvm/wrappers/ruby-1.9.3-rc1/ruby
    
    <VirtualHost *:80>
    ServerName www.yourhost.com
    DocumentRoot /home/rvm_user/your_application/public
    <Directory /home/rvm_user/your_application/public>
    AllowOverride all
    Options -MultiViews
    </Directory>
    </VirtualHost>
    
    # chmod 755 /home/rvm_user/
    
    # /etc/rc.d/init.d/httpd restart
    

    【讨论】:

    • 谢谢我调查了权利,已经用乘客和 Nginx 设置好了。
    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 2013-04-15
    • 1970-01-01
    • 2014-04-23
    • 2012-03-09
    • 2013-08-10
    • 2014-04-24
    • 2017-08-14
    相关资源
    最近更新 更多