私は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
そして今それは働いています。
これを修正する正しい方法はありますか?
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で見つけたいくつかのこと:
私はほぼ正確に同じエラーを抱えていて、そして単に実行することによってそれを完全に修正することができました:
gem install bundler
あなたのバンドラーのインストールが破損しているかなくなっている可能性があります - それは私の場合に起こったことです。上記が失敗した場合は、試すことができます。
Sudo gem install bundler
...しかし、一般的にあなたはSudoなしでそれをすることができます。
あなたはおそらく複数のRubyをインストールしているでしょう。
RVMを使用している場合は、おそらく実行する必要があります。
rvm use system
使用するRubyのバージョンを設定します。
http://rvm.io/rubies/default を参照してください。
Ruby -v
現在使用しているバージョンがわかります。
あなたは実行しようとすることができます:
bundle exec rake Rails:update:bin
@DineshがRails 5で述べたように、
Rails app:update:bin
私の場合は、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...
バンドルが正しくインストールされた状態の新鮮なRailsアプリでこのエラーが発生しました。 Gemfileの春の宝石をコメントアウトすることで問題は解決しました。
私は同じ問題を抱えていて、運もなくすべての答えを試してみました。
再現するために私がしたステップ:
rvm instal 2.1.10
rvm gemset create my_gemset
rvm use 2.1.10@my_gemset
bundle install
bundle install
はRailsをインストールしました、しかし私はまだcannot load such file -- bundler/setup (LoadError)
を得ました
ついにgem install Rails -v 4.2
を実行して修正しました
私は同じ問題に遭遇しました、しかし私はそれがspring
がいくつかのgemと設定をキャッシュしていたためだと思います。 gem pristine --all
を実行して修正しました。
これはgemキャッシュにあるファイルからインストールされたgemを元の状態に復元します。
注:私のホスティング会社は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/
Bundler Versionが問題を起こしている可能性があります。
他のバージョン番号でbundlerをインストールしてください。
例えば、
gem install bundler -v 1.0.10
その他の考えられる状況:サーバー環境に複数のユーザーが定義されています。その場合は、実行中
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
私にとって問題は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;
何か悪いことが私のvendor/bundle
にあったので、私はこれをしました。ローカルの開発環境では、Apacheとは関係ありません。
修正するために、私はvendor\bundle
を削除しました、そしてまたそれが再利用されないように私の.bundle/config
の中でそれへの参照を削除しました。
それから、私は再バンドルし(それからGEM_HOME
の代わりにvendor/bundle
にインストールし、問題は解決しました。
これは私にとって実稼働環境で起こっていました。
rm /vendor/bundle
それからbundle install --deployment
問題を解決しました。
私はテストRailsプロジェクトを作成してすべてのgemをインストールすることでその問題を修正し、それから私は現在のGemfile.lockをテストに置き換えたところすべてうまくいきました。
私はホスティングとbundler
バージョンからこの問題があると思うので、ホスティングバンドラーはあなたのプロジェクトと同じバージョンであることを確認してください。
私の状況では、許可の問題でした:
Sudo chmod -R +777 <your_folder_path>