web-dev-qa-db-ja.com

そのようなファイルをロードできない - bundler / setup(LoadError)

私は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

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

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

111
Mr_Nizzle

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

問題は、Passenger/Apacheが実際にgemが/1.8ディレクトリにあるときに/2.0ディレクトリを調べていたことです。 Apacheに/1.8ディレクトリを使用するように明示的に指示しているのであれば、問題を解決するのに意味があります。

SetEnv GEM_HOME /usr/lib/Ruby/gems/1.8

複数のRuby環境を処理するために Ruby Version Manager を使ってみることもできます。

私がGoogleで見つけたいくつかのこと:

47
robmclarty

私はほぼ正確に同じエラーを抱えていて、そして単に実行することによってそれを完全に修正することができました:

gem install bundler

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

Sudo gem install bundler

...しかし、一般的にあなたはSudoなしでそれをすることができます。

165
Andrew Faulkner

あなたはおそらく複数のRubyをインストールしているでしょう。

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

rvm use system

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

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

Ruby -v

現在使用しているバージョンがわかります。

26
Michael Guild

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

bundle exec rake Rails:update:bin

@DineshがRails 5で述べたように、

Rails app:update:bin
22
zolter

私の場合は、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が必要なので少々時間がかかりましたが、最後に、以下の 'PassengerRuby'を使用してアプリのApache仮想ホスト設定ファイル内で別のパスを指定するとエラーが解決しました。

...
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...
9
user2997993

バンドルが正しくインストールされた状態の新鮮なRailsアプリでこのエラーが発生しました。 Gemfileの春の宝石をコメントアウトすることで問題は解決しました。

8
nachbar

私は同じ問題を抱えていて、運もなくすべての答えを試してみました。

再現するために私がしたステップ:

  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

私は同じ問題に遭遇しました、しかし私はそれがspringがいくつかのgemと設定をキャッシュしていたためだと思います。 gem pristine --allを実行して修正しました。

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

1
NM Pennypacker

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

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

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

GEM_PATHを:から得た

echo $ GEM_PATH

GEM_HOMEを:で取得しました

宝石env

 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
Rob Little

Bundler Versionが問題を起こしている可能性があります。

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

例えば、

gem install bundler -v 1.0.10

0
hobbydev

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

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
0
Jerome

私にとって問題は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
Gediminas

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

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

それから、私は再バンドルし(それからGEM_HOMEの代わりにvendor/bundleにインストールし、問題は解決しました。

0
thewoolleyman

これは私にとって実稼働環境で起こっていました。

rm /vendor/bundle

それからbundle install --deployment

問題を解決しました。

0
vanboom

私はテストRailsプロジェクトを作成してすべてのgemをインストールすることでその問題を修正し、それから私は現在のGemfile.lockをテストに置き換えたところすべてうまくいきました。

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

0
7uthaifah

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

 Sudo chmod -R +777 <your_folder_path>
0
petrov