138

Ruby 2.0 で Rails 4 アプリケーションを設定していますが、「Web アプリケーションを開始できませんでした」というメッセージが表示され、次のトレースが表示されます。

cannot load such file -- bundler/setup (LoadError)
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `<module:App>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'

私のapache2.confは次のとおりです。

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
   PassengerDefaultRuby /usr/local/bin/ruby

bundle -vは:

Bundler version 1.3.5

ruby -vは:

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

gem envは:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.1.5
  - RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /root/.gems/bin
     - /usr/lib/ruby/gems/1.8/bin/
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/bin/X11
     - /usr/games
     - /usr/sbin
     - /sbin

echo $GEM_PATHは:

/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8

すべきではありませGEM_PATH/usr/lib/ruby/gems/2.0か?

apache2.conf の仮想ホスト内に次を追加しました。

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

そして今、それは働いています。

これを修正する正しい方法はありますか?

4

18 に答える 18

29

複数の Ruby がインストールされている可能性があります。

RVM を使用している場合は、おそらく以下を実行する必要があります。

rvm use system

使用する ruby​​ のバージョンを設定します。

http://rvm.io/rubies/defaultを参照

ruby -v

現在使用しているバージョンが表示されます。

于 2013-10-10T17:38:27.107 に答える
28

あなたは実行しようとすることができます:

bundle exec rake rails:update:bin

Rails 5で@Dineshが言及したように:

rails app:update:bin
于 2016-04-18T18:58:00.460 に答える
10

私の場合、パッセンジャーをインストールした後に apache 構成ファイルに追加された行は次のとおりです。

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-.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」を使用して別のパスを指定した後、エラーは解決されました:

...
VirtualHost *:80>
  ServerName 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>
</VirtualHost...
于 2013-11-15T22:00:30.253 に答える
4

spring私は同じ問題に遭遇しましたが、いくつかの宝石と構成をキャッシュしたことが原因だったと思います。を実行して修正しましたgem pristine --all

これにより、インストールされた gem が gem キャッシュにあるファイルから元の状態に復元されます。

または、次のように宝石を試すことができます

gem pristine your_gem_name
于 2018-06-11T12:04:27.453 に答える
2

その他の考えられる状況: サーバー環境で複数のユーザーが定義されている。その場合、実行中

passenger-config --ruby-command

ユースケースでファイルを指定するために必要なコマンドが表示されます。nginx/sites-enabled/relevant_application例:

passenger-config was invoked through the following Ruby interpreter:
Command: /home/other_user/.rbenv/versions/2.4.5/bin/ruby
Version: ruby 2.4.5p335 (2018-10-18 revision 65137) [x86_64-linux]
To use in Apache: PassengerRuby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use in Nginx : passenger_ruby /home/other_user/.rbenv/versions/2.4.5/bin/ruby
To use with Standalone: /home/other_user/.rbenv/versions/2.4.5/bin/ruby /usr/bin/passenger start
于 2019-01-09T14:40:40.130 に答える
0

何か悪いものが私の中にあったので、私はこれを持っていましたvendor/bundle。Apache とは関係ありません。ローカルの dev 環境にあるだけです。

修正するために、 を削除vendor\bundleし、それへの参照も削除して、.bundle/config再利用されないようにしました。

次に、再バンドルしました(GEM_HOME代わりにインストールするvendor/bundleと、問題はなくなりました。

于 2016-02-25T05:39:34.783 に答える