1

Railsアプリケーションをデプロイしています。これは私が現在行ったことです:

アプリケーションのビルド手順:

  1. git ハッシュタグによる git sync
  2. gem をアプリケーションの自己ディレクトリ (ベンダー/バンドル) にバンドルします。
  3. アセットをプリコンパイルします。
  4. アプリケーションを debian パッケージ (.deb) にビルドします。
  5. ターゲット マシンで、dpkg -i myapplication.deb を実行してインストールします。それは。

問題はステップ2です。

bundle package --allbundle install --deploymentを実行した後、デフォルトの ruby​​gems.org からではなく、git パスからの gem である vendor/bundle/ruby/1.9.1/gems/ にバンドルされているすべての gem ではありません。

➜ luna-server git:(v0.1.0) ✗ bundle show rails
/Users/qichunren/code/work/luna-server/vendor/bundle/ruby/1.9.1/gems/rails-3.2.11
➜ luna-server git:(v0.1.0) ✗ bundle show luna-channel
/Users/qichunren/code/work/luna-server/vendor/cache/luna-channel-31bb309440e5

ビルドした Rails アプリケーションをターゲット マシンで実行すると、いくつかの gem がインストールされていないことが表示されます (例: luna-channel)。/vendor/bundle/ruby/1.9.1/gems/ にないため、バンドル インストールしてください。

バンドル キャッシュからターゲット バンドル ディレクトリにすべての gem を作成する方法はありますか?

私を助けてください。ありがとう。

4

2 に答える 2

0

ドキュメントへのリンクに--pathオプションがありますbundle install

これにより、すべての gem をインストールするための正確なパスがバンドラーに通知されます。

あなたの開発スタイルは典型的ではありませんが、バンドラーのドキュメントをよく読んで、何bundle packageをすべきかをよく理解することを強くお勧めしbundle install --deploymentます。

http://gembundler.com/v1.3/deploying.html
http://gembundler.com/v1.3/bundle_package.html

彼らが開発マシンについて話しているのか、本番マシンについて話しているのかを理解するのが難しい場合があります。

于 2013-03-26T10:45:15.250 に答える
0

問題を修正しました。コードはこちら: https://github.com/qichunren/bundler/commit/192c822724f356f2573cabd4fd4ddc1a217b7d8b

この変更がプロジェクト全体に適しているかどうかはわかりませんが、この変更により問題が解決しました。

于 2013-03-27T01:10:38.660 に答える