乘客捆绑器/设置 LoadError

Posted

技术标签:

【中文标题】乘客捆绑器/设置 LoadError【英文标题】:Passenger bundler/setup LoadError 【发布时间】:2013-11-01 21:34:44 【问题描述】:

我遇到了与Redmine passenger error 类似的错误。我试图让 GitLab 与 Apache 和Passenger 一起工作,但没有运气。我被这个错误困住了:

无法加载此类文件 -- 捆绑器/设置 (LoadError) /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require' /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:219:in `block in run_load_path_setup_code' /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:333:in `running_bundler' /usr/lib/ruby/vendor_ruby/phusion_passenger/loader_shared_helpers.rb:217:in `run_load_path_setup_code' /usr/share/passenger/helper-scripts/rack-preloader.rb:96:in `preload_app' /usr/share/passenger/helper-scripts/rack-preloader.rb:150:in `' /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `' /usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `'

按照 Andriy 的建议,我尝试使用以下命令安装 bundler gem:`

sudo gem install bundler

安装后我重启了apache2服务,但错误依旧。

VirtualHost 定义为:

<VirtualHost *:80>
        ServerName localhost

        # Point this to your public folder of gitlab
        DocumentRoot /home/git/gitlab/public
        <Directory /home/git/gitlab/public>
                Allow from all
                Options -MultiViews
        </Directory>

        PassengerRuby /usr/bin/ruby

        # Custom log file locations
        ErrorLog  /var/log/apache2/gitlab_error.log
        CustomLog /var/log/apache2/gitlab_access.log combined
</VirtualHost>
<Location /users/auth/shibboleth/callback>
  AuthType shibboleth
  ShibRequestSetting requireSession 1
  require valid-user
</Location>
<Location /Shibboleth.sso>
  SetHandler shib
</Location>

有人能解释一下这个问题吗?

【问题讨论】:

这有什么更新吗?如果你发现如果你能分享它会对其他人有好处。 【参考方案1】:

在我的例子中,附加到 apache 配置文件的行如下:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.24/buildout/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.24
PassengerDefaultRuby /usr/bin/ruby1.8

但该应用程序使用 ruby​​ 2.0.0,因此在我在应用程序的 apache 虚拟主机配置文件中指定不同的路径(使用“PassengerRuby”)后,错误得到解决,如下所示:

("...虚拟主机 *:80>

服务器名称 www.yourhost.com

**PassengerRuby /home/user/.rvm/gems/ruby-2.0.0-p247**
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /somewhere/public    
  <Directory /somewhere/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>

【讨论】:

【参考方案2】:

昨天我遇到了一个非常相似的问题。我正在运行完全安装在非 root 功能用户帐户中的最新 Redmine。我在该帐户中也安装了所有支持 Redmine(包括 bundler)的宝石,显然是使用非标准的GEM_HOME/home/www-adm/.gem-home

启动抱怨无法加载bundler;但是,错误消息并不完全相同:

*** Exception LoadError in PhusionPassenger::ClassicRails::ApplicationSpawner (no such file to load -- bundler) (process 166395, thread #<Thread:0x7fce7910b360>):

我可以通过在 Apache 配置的 Redmine 相关部分中设置 GEM_HOME 环境变量来解决此问题,如下所示:

SetEnv GEM_HOME /home/www-adm/.gem-home

这并不意味着相同(当然,为您自己的安装使用适当的路径名)会对您的情况有所帮助,但可能值得一试。

但也许你只是没有安装bundler

【讨论】:

以上是关于乘客捆绑器/设置 LoadError的主要内容,如果未能解决你的问题,请参考以下文章

乘客:启动预加载器时出错

如何在 Equinox 中获取捆绑包的类加载器?

如何将 Service Worker 库 (MSW) 与 Parcel 捆绑器一起使用

面向对象第二单元总结

Keras 使用多层感知器 预测泰坦尼克 乘客 生还概率

捆绑在其他软件中安装 是啥意思