0

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"
4

2 に答える 2

1

このエラーは、/Library/WebServer/rails/myapp/shared/bundle/ruby/1.9.1/gems/bcrypt-ruby-3.0.1/lib/bcrypt_ext.bundle存在しないファイルを参照することに関するものです/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/libruby.1.9.1.dylib。ほとんどlibruby.1.9.1.dylibの場合、実行時に ruby​​ から既に読み込まれているため、これは発生しないはずです。したがって、静的コンパイルのみを使用して Ruby をインストールしたか、壊れている可能性があります。

ルビー1.9.3-p362が使われていますか?RVM は1.9.3-p327、静的にコンパイルされる OSX 10.8 を提供します (OSX ではパッケージ マネージャーの問題はありません)。p327代わりにその version( ) を使用したのではないでしょうか?

gem の再インストールに関しては、インストール済みの gem をバンドラーに強制的に再インストールするコマンドはまだありませんが、gem を削除して強制的に新しくインストールすることができます。

cd /Library/WebServer/rails/myapp/
rm -rf shared/bundle
bundle install
于 2013-01-04T05:09:54.973 に答える
0

rvm listRuby のすべてのバージョンを一覧表示してみてください

次に、rvm use <ruby version>そのバージョンを使用するために使用します

元:

[sameera@sameera ~]$ rvm list

rvm rubies

     ruby-1.9.2-p290 [ x86_64 ]
=>   ruby-1.8.7-p357 [ x86_64 ]

rvm use rvm use ruby-1.9.2-p290

HTH

于 2013-01-04T04:51:40.997 に答える