4

Rails アプリを Heroku (Cedar) にデプロイしています。アセットのプリコンパイルには 3 つのオプションがあり、デプロイ時に Heroku がアセットをプリコンパイルするオプションを選択しました。

プッシュすると、(プリコンパイル中に) データベースにアクセスできないというエラーが発生しました。では、プリコンパイル中にRailsがデータベースに接続しないようにするにはどうすればよいでしょうか? プリコンパイルでデータベースへのアクセスが必要になるシナリオを想像できないため、そもそもなぜ設定されているのかわかりません。

プリコンパイル時にアプリケーションの初期化を無効にするソリューションをどこかで見ました。これは、application.rb に以下を追加することで実現されます (environments/production.rb に設定しても機能しません)。

config.assets.initialize_on_precompile = false

この行を追加してみましたが、うまくいきましたが、それが良い解決策かどうかはわかりません。これにより、アセットに使用する可能性のある一部のプラグインがプリコンパイル中に読み込まれず、最終結果に影響するのではないでしょうか?

4

2 に答える 2

1

あなたがしていることは正しい方法です。アセット内のデータベースに実際にアクセスするモデルやその他のものを使用しない場合は、その必要はありません。アプリを初期化する必要があるのは、次のようなことをしている場合だけです: (完全に不自然な例ですが、私が何を得ているかを見ることができます)

/* In some css file */
.some_class{
    #{User.find(1).avatar_url}
}
于 2012-11-13T03:52:21.150 に答える
0

Heroku Labs (http://devcenter.heroku.com/articles/labs-user-env-compile) を有効にすると、デプロイ時に Db にアクセスでき、うまく機能します。

あなたはDeviseを使っていますか?これは通常、偶然にアセットをプリコンパイルする際の DB アクセスの原因です。

于 2012-02-05T21:40:17.197 に答える