3

初めての Rails アプリのドラフトをデプロイしようとしています。私のローカル WEBRick サーバーではうまく機能します。

ただし、Apache2 と Passenger を実行している Ubuntu VPS で、ブラウザーでアプリに移動すると、次のようになります。

Error message:
no such file to load -- bundler/setup
Exception class:
LoadError

次のバックトレースを使用します。

0   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
1   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
2   /home/user/public/foo.com/config/boot.rb    6   
3   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
4   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
5   /home/user/public/foo.com/config/application.rb 1   
6   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
7   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
8   /home/user/public/foo.com/config/environment.rb 2   
9   /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `gem_original_require'
10  /usr/lib/ruby/vendor_ruby/1.8/rubygems/custom_require.rb    36  in `require'
11  config.ru   3   
12  /usr/lib/ruby/vendor_ruby/rack/builder.rb   51  in `instance_eval'
13  /usr/lib/ruby/vendor_ruby/rack/builder.rb   51  in `initialize'
14  config.ru   1   in `new'
15  config.ru   1   

このアプリは Ruby v1.9.3 (またはそう思っていた) でビルドされており、これを Ubuntu にインストールしました (アプリのルートで をruby -v返しますruby 1.9.3p286 (2012-10-12 revision 37165) [i686-linux])。

この質問に従って、アプリのルートで実行gem install bundleしました。また、ローカル マシンから VPS アプリのルートにbundle install正しいものをインポートしました。gemset

この質問に従って、gem セットを/home/user/.rvm/gems/ruby-1.9.3-p286@foo(foo は使用中の gemset の名前)に変更しようとしましたが、これによりバックトレースが長くなりました。

これをトラブルシューティングするためのさらなる助けがあれば、大歓迎です!

編集: Rails、RVM、Ruby (RVM バージョン) & Passenger をアンインストールしてから、Rails、Passenger & Ruby (RVM は除く) を再インストールすることで、ようやくアプリが機能するようになりました。

4

3 に答える 3

2

正しい値の設定方法

Passenger_ruby に設定する値がわからない場合は、次のようにして正しい値を見つけることができます。

まず、passenger-config ツールの場所を見つけてメモします。

    which passenger-config
    /opt/passenger/bin/passenger-config

次に、使用する Ruby インタープリター (および該当する場合は gemset) をアクティブにします。たとえば、RVM を使用していて Ruby 2.2.1 を使用している場合は、次のコマンドを実行するとよいでしょう。

    rvm use 2.2.1

最後に、パラメーターとして --ruby-command を渡して、フル パスを使用して Passenger-config を呼び出します。

    /opt/passenger/bin/passenger-config --ruby-command
    passenger-config was invoked through the following Ruby interpreter:
      Command: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby
      Version: ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
      To use in Apache: PassengerRuby /usr/local/rvm/wrappers/ruby-1.8.7-   p358/ruby
      To use in Nginx : passenger_ruby /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby
      To use with Standalone: /usr/local/rvm/wrappers/ruby-1.8.7-p358/ruby /opt/passenger/bin/passenger start

    ## Notes for RVM users
    Do you want to know which command to use for a different Ruby interpreter? 'rvm use' that Ruby interpreter, then re-run 'passenger-config --ruby-command'.

出力は、設定する値を示します。

/etc/apache2/mods-available ディレクトリにある Passenger.conf に移動し、上記の必要な行を貼り付けます。

次のコマンドを実行すると、うまくいきました。

    a2dismod passenger
    a2enmod passenger
    service apache2 restart
于 2016-07-05T07:41:32.307 に答える
1

/etc/apache2/mods-available/passenger.confパスを ruby​​ 1.9.3 に変更するように変更しましたか?

一度それを行うa2dismod passengerとを忘れないでください。a2enmod passenger

于 2012-10-27T09:07:15.253 に答える
0

仮想ホストの構成ファイルで GEM_HOME を設定してみてください。

<VirtualHost *:80>
  ServerName foo.com
  SetEnv GEM_HOME /home/user/.rvm/gems/ruby-1.9.3-p286
  DocumentRoot /home/user/public/foo.com/public
  <Directory /home/user/public/foo.com/public>
    AllowOverride all
    Options -MultiViews
  </Directory>
</VirtualHost>

問題は、実行するbundle installと rvm ruby​​ が使用されるのに対し、パッセンジャーを実行するとまだ ruby​​ 1.8 が使用されることです。

于 2012-10-26T20:10:48.723 に答える