4

私は独自の gem "RocketRuby" を持っています。私はそれをirbにロードしましたが、ロードできました。以前のバージョンでは、config.ruにもそれがあり、機能しました。

今、私はそれをもう一度コンパイルして、もう一度インストールしました。次に(irbにロードすることでまだ機能しています)乗客がクラッシュし、次のように伝えます:

cannot load such file -- rocketruby (LoadError)
  /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `require'
  /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:60:in `rescue in require'
  /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
  config.ru:1:in `block in <main>'
  /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in `instance_eval'
  /var/lib/gems/1.9.1/gems/rack-1.5.2/lib/rack/builder.rb:55:in `initialize'
  config.ru:1:in `new'
  config.ru:1:in `<main>'
  /var/lib/gems/1.9.1/gems/passenger-4.0.0.rc6/helper-scripts/rack-preloader.rb:82:in `eval'
  /var/lib/gems/1.9.1/gems/passenger-4.0.0.rc6/helper-scripts/rack-preloader.rb:82:in `preload_app'
  /var/lib/gems/1.9.1/gems/passenger-4.0.0.rc6/helper-scripts/rack-preloader.rb:127:in `<module:App>'
  /var/lib/gems/1.9.1/gems/passenger-4.0.0.rc6/helper-scripts/rack-preloader.rb:6:in `<module:PhusionPassenger>'
  /var/lib/gems/1.9.1/gems/passenger-4.0.0.rc6/helper-scripts/rack-preloader.rb:5:in `<main>'

config.ru は次のようになります。

require "rocketruby"
require "./shop_of_one.rb"

ShopOfOne.instance

run RocketRuby::RackApplication.new

非常に奇妙なことは、このエラーが発生しても、irbrequire "rocketruby"ではまだ機能することです。

何か助けはありますか?

4

1 に答える 1

0

apachePassenger はそれ自身のユーザーとして実行され、ロードされたユーザーの環境さえも共有しません。これは、実行しようとしたときに、おそらく gem がインストールされていないことを意味します。

バンドラーを使用するとこれが解決します。他の方法があると確信していますが、Gemfile を追加し、これを実行bundle install --deploymentして追加します。

require 'rubygems'
require 'bundler'

Bundler.require

ラックアプリの一番上に追加すると、問題が解決します。

于 2013-07-23T14:57:15.390 に答える