RVMを介してステージングサーバー上のRubyを更新しました。
$ rvm upgrade 1.9.3-p327 1.9.3-p362
古いRubyの削除を含む、移行とエイリアスに関するすべての質問に「はい」と答えました。
Railsアプリケーションにアクセスしようとすると、 Passengerからエラーが発生するようになりました。
Error message:
dlopen(/Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle, 9):
Library not loaded: /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/libruby.1.9.1.dylib
Referenced from: /Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle
Reason: image not found - /Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle
Passengerを再インストールしました...またcap deploy
、少し更新して実行しましGemfile
た。しかし、古いRubyへの参照がまだいくつかあるようです。ここで何が起こっているのでしょうか。また、gemなどが新しいRubyを参照するように、更新または再コンパイルするにはどうすればよいでしょうか。Capistranoで指定できる、宝石の再コンパイルを強制するフラグはありますか(それが問題であると仮定します)?
編集(いくつかのRVM情報を追加):
このサーバーでRVMの「マルチユーザー」インストールを使用しています。そのため、gemは次の場所にインストールされています。/Library/WebServer/rails/popup/shared/bundle/ruby/1.9.1/gems
予想していた場所ではありません/usr/local/rvm/rubies/ruby-1.9.3-p362/lib/ruby/gems/1.9.1/gems
。マルチユーザーインストールでRVMが何をしているかを実際に理解したことはありませんが、機能しました。
ですから、poingは実際にはできません。$ rvm gemset use myapp
それbundle install
は、正しいディレクトリにインストールされるとは思わないからです。
タスク中のCapistranoの出力は次のとおりです。bundle install
* 2013-01-03 19:23:22 executing `bundle:install'
* executing "cd /Library/WebServer/rails/myapp/releases/20130104032317 && bundle install --gemfile /Library/WebServer/rails/myapp/releases/20130104032317/Gemfile --path /Library/WebServer/rails/myapp/shared/bundle --deployment --quiet --without development test"