1

私はcapistranoを使用して、Railsアプリケーションを本番環境にデプロイしています。すべてが機能しているように見え、capistranoはエラーを報告しませんが、アプリケーションは次のエラーメッセージで起動できません

Ruby(Rack)アプリケーションを起動できませんでした
どのソースにもactivemodel-3.2.0が見つかりませんでした(Bundler :: GemNotFound)

バンドルされているgemを調べると、正しいバージョンのgemが共有フォルダーにありますが、乗客はそれらを使用していないようです。capdeployからの要約出力は次のとおりです

  * executing "cd /opt/geonovo/retail/releases/20120628125205 && \
    bundle install --gemfile /opt/geonovo/retail/releases/20120628125205/Gemfile \
    --path /opt/geonovo/retail/shared/bundle --deployment \
    --without development test"
    servers: ["rt-devrails01"]
    [rt-devrails01] executing command
 ** [out :: rt-devrails01] Fetching source index for http://rubygems.org/
 ** [out :: rt-devrails01] Using activesupport (3.2.0)
 ** [out :: rt-devrails01] 
 ** [out :: rt-devrails01] Using builder (3.0.0)
 ** [out :: rt-devrails01] 
 ** [out :: rt-devrails01] Installing activemodel (3.2.0)
 ...
 ...
 * [out :: rt-devrails01] 
 ** [out :: rt-devrails01] Your bundle is complete! 
 It was installed into /opt/geonovo/retail/shared/bundle
 command finished in 47529ms

本番サーバーで実行gem listすると、activemodel 3.2.0 gemが存在することは示されませんが、共有ディレクトリ/opt/geonovo/retail/shared/bundle/ruby/1.9.1/gems/にはactivemodel-3.2.0のエントリが含まれています。

本番サーバーの/bundle/configファイルには次のものが含まれています

---
BUNDLE_FROZEN: "1"
BUNDLE_PATH:/ opt / geonovo / Retail / shared / bundle
BUNDLE_DISABLE_SHARED_GEMS: "1"
BUNDLE_WITHOUT:開発:テスト

bundle check本番サーバーで実行すると、次のように表示されます

次の宝石がありません
 * activemodel(3.2.0)
 *アクションパック(3.2.0)
 * actionmailer(3.2.0)
 * activerecord(3.2.0)
 * activeresource(3.2.0)
 *レールティー(3.2.0)
 *レール(3.2.0)
不足しているgemを`bundleinstall`でインストールします

おそらくを使用してgemをインストールできbundle installますが、可能であれば、capistrano内でデプロイを実行したいと思います。

Gemfileの先頭には、次の行が含まれています

ソース'http://rubygems.org'

gem'rails'、'> = 3.2.0'

4

1 に答える 1

0

問題は、私の宝石のバージョンが古くなっていることだったようです。Bundlerは正常に動作していましたが、gemの読み込みに問題があるため、アプリケーションを起動できませんでした。

次のような多くのエラーを明らかにしたチェック時に問題が明らかになりました/var/log/httpd/error_log:-

WARNING:  #<ArgumentError: Illformed requirement 
  ["<Syck::DefaultKey:0x00000016a73648> 3.2.0"]>
WARNING:  Invalid .gemspec format in '...bundle/ruby/1.9.1/specifications/rails-3.2.0.gemspec'

これにより、次の質問sudo gem update --systemと、 apacheを使用して再起動し、gemを現在のバージョンに更新するという解決策が見つかりました。(乗客を再開するだけでは十分ではなかったようです。

于 2012-07-05T10:28:03.630 に答える