そのようなファイルを読み込めません— bundler / setup(LoadError)


128

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

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

これを修正する正しい方法ですか?

回答:


49

2.0をインストールする前に、システムに以前のRuby環境がインストールされていた可能性がありますか?これには、バージョン2.0のインストールが単に保持する/1.8ディレクトリにつながる既存のGEM_PATHがあった可能性があります。

あなたが持っている可能性が高い問題は、実際には宝石が/1.8ディレクトリにあるときにPassenger / Apacheが/2.0ディレクトリを探していたことでした。したがって、/ 1.8ディレクトリを使用するようにApacheに明示的に指示することは、問題を修正する意味があります。

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

また、使用してみてくださいルビーバージョンマネージャを複数のRuby ENVSを処理するために。

Googleで見つけたもの:


202

ほぼ同じエラーが発生し、次のコマンドを実行するだけで完全に修正できました。

gem install bundler

あなたのバンドラーのインストールが壊れているか欠落している可能性があります-それは私の場合に起こったことです。上記が失敗した場合、次のことを試すことができます:

sudo gem install bundler

...しかし、一般的にはsudoがなくても実行できます。


2
これは私だった!質問- sudo実際に必要ですか?私は使用しましたsudoが、今はそうしなかったらどうなるのだろうと思っています。
Pete

2
システムのデフォルトとは異なるバージョンのRubyを使用している場合は、使用する必要はありませんsudo。gem sudo gem ....defaultバージョンをインストールします(私の場合、Ubuntu 14.04)sudoはrvmを実行できません。
Farfromunique 2016年

1
私のmacOSシステムでsudoは、システムのデフォルトのルビーが必要でしたが、rvmでインストールしたどのバージョンのルビーでも必要ありませんでした。
Ben Visness 2017年

1
最近のWindowsの更新後、これがLinux用のWindowsサブシステムを使用するための解決策であったと言っておくだけです。何らかの理由で、アップデートによってRVM ruby​​のインストールが吹き飛ばされました。
ベン・フルトン

1
こんにちは、私はUbuntuのを使用して問題と同じ問題を抱えているgem 2.7.6し、ruby 2.5.0p0何をすべきか?
TheCrazyProfessor

28

おそらく複数のRubyがインストールされています。

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

rvm use system

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

http://rvm.io/rubies/defaultを参照してください

ruby -v

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


25

あなたは走ることを試みることができます:

bundle exec rake rails:update:bin

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

rails app:update:bin

10

私の場合、passengerのインストール後に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...

私もそうでした。私の場合PassengerDefaultRuby、ルビの古いインストールを参照していました。
Waseem

8

バンドルが正しくインストールされている新しいRailsアプリでこのエラーが発生しました。GemfileでSpring Gemをコメント化すると、問題が解決しました。


4
これgem install springで終わりですが、コメントアウトする代わりに。
jakenberg 2015年

3

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

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

またはあなたのような宝石を試すことができます

gem pristine your_gem_name

1

これは私にとって本番環境で起こっていました。

rm /vendor/bundle

その後 bundle install --deployment

問題を解決しました。


1

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

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

1

私は同じ問題を抱えており、運が悪ければすべての答えを試しました。

私が再現するために行った手順:

  1. rvm instal 2.1.10
  2. rvm gemset create my_gemset
  3. rvm use 2.1.10@my_gemset
  4. bundle install

ただしbundle install、Railsをインストールしましたが、 cannot load such file -- bundler/setup (LoadError)

最後に実行してgem install rails -v 4.2修正しました


1

バンドラーバージョンが問題の原因である可能性があります。

他のバージョン番号のバンドルをインストールしてください。

例えば、

gem install bundler -v 1.0.10


私の場合、このエラーはbundler v2のインストール後に発生します。で解決しgem uninstall -a bundler; gem install bundler -v '<2.0'ます。
SergA

0

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

修正するために、私はを削除しvendor\bundle、それへの参照も削除した.bundle/configので、再利用されません。

次に、再バンドルしました(GEM_HOME代わりにインストールされvendor/bundle、問題は解消しました)。


0

注:ホスティング会社はSite5.comで、マネージドVPSを持っています。

GEM_HOMEとGEM_PATHの両方の環境変数をpublic_htmlディレクトリ(railsアプリのpublicディレクトリのエイリアス)の.htaccessファイルに追加しました

それらは以前には必要でなかったので、ホスト側で何かが変更されたに違いありません。このエラーは、restart.txtファイルに触れてパッセンジャーサーバーを再起動した後に発生しました。

次の方法でGEM_PATHを取得しました:

エコー$ GEM_PATH

次の方法でGEM_HOMEを取得しました:

宝石環境

 RubyGems Environment:
   - RUBYGEMS VERSION: 2.0.14
   - RUBY VERSION: 2.0.0 (2013-11-22 patchlevel 353) [x86_64-linux]
   - INSTALLATION DIRECTORY: /home/username/ruby/gems
   - RUBY EXECUTABLE: /usr/local/ruby20/bin/ruby
   - EXECUTABLE DIRECTORY: /home/username/ruby/gems/bin
   - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
   - GEM PATHS:
      - /home/username/ruby/gems
      - /usr/local/ruby2.0/lib64/ruby/gems/
   - GEM CONFIGURATION:
      - :update_sources => true
      - :verbose => true
      - :backtrace => false
      - :bulk_threshold => 1000
      - "gem" => "--remote --gen-rdoc --run-tests"
      **- "gemhome" => "/home/username/ruby/gems"**
      - "gempath" => ["/home/username/ruby/gems", "/usr/local/ruby2.0/lib64/ruby/gems/"]
      - "rdoc" => "--inline-source --line-numbers"
   - REMOTE SOURCES:
      - https://rubygems.org/

.htaccessファイルを次の行で更新しました。

SetEnv GEM_HOME /usr/local/ruby2.0/lib64/ruby/gems/
SetEnv GEM_PATH /home/username/ruby/gems:/usr/local/ruby20/lib64/ruby/gems/:/home/username/ruby/gems:/usr/

0

私にとっての問題は、RVM RubyをPassengerに関連付けることでした。そのため、RVM ruby​​ラッパーをパッセンジャー構成ファイルに統合する必要がありました。

私はコマンドでrvm ruby​​ラッパーパスを見つけます:

passenger-config --ruby-command

私は結果からパスを取り、乗客の設定に入力しましたnginx/passenger.conf

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/rvm/gems/ruby-2.3.1/wrappers/ruby;

0

テストレールプロジェクトを作成してすべてのgemをインストールすることでこの問題を修正し、現在のGemfile.lockをテストに置き換えたところ、すべて正常に動作しました。

bundlerホスティングを備えたバージョンからこの問題が発生したと思うので、ホスティングバンドルがプロジェクトと同じバージョンであることを確認してください。


0

私の状況では、それは許可の問題でした:

 sudo chmod -R +777 <your_folder_path>

-1:ファイルやディレクトリに777を置かないでください。「所有者」、「グループ」、「その他」が分かれているのは、セキュリティの問題だからです。
Florian Doyen

0

Phusion Passengerが使用していたRubyバージョンのバージョンは、お使いのRailsアプリと異なります。

<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/passenger-6.0.2
  PassengerDefaultRuby /usr/local/rbenv/versions/2.5.3/bin/ruby
</IfModule>

httpd configのバージョンがrailsアプリと同じであることを確認してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.