2012-02-05 13 views
3

私はHeroku(Cedar)にRailsアプリケーションをデプロイしています。選択できるアセットをプリコンパイルするオプションが3つあり、展開時にHerokuがアセットをプリコンパイルするオプションを選択しました。"assets:precompile"を作成するにはデータベースをロードしないでください。 (Rails)

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

私はapplication.rbに以下を追加することによって達成されるプリコンパイルでアプリケーションを初期化する無効にするソリューション、(環境でそれを設定/ production.rbは動作しません)どこかで見た:

config.assets.initialize_on_precompile = false 

私はこの行を追加しようとしましたが、それは動作しますが、それが良い解決策であるかどうかわかりません。これにより、プリコンパイル時に読み込まれない資産に使用される可能性のあるプラグインがいくつか作成され、最終結果に影響しますか?

答えて

0

Heroku Labs(http://devcenter.heroku.com/articles/labs-user-env-compile)を有効にすると、展開時にDbにアクセスすることができます。

Deviseを使用していますか?それは、通常、偶発的に資産をプリコンパイルするためのDBアクセスの犯人です。

+0

いいえ、私は使用しませんデビス。提案をありがとうが、私はそれを必要としないので、データベースへのアクセスを無効にすることで解決したい。また、私がそれを行う方法を学ぶなら、おそらく私はまた、本当に有用な知識になりますプリコンパイルについていくつかの他のものを変更する方法を学ぶでしょう:) –

+0

私はCarrierWaveを使用しています。それはそれと関係があると思いますか? –

+0

...しかし、それは私がこれまで見たことのあるものよりはるかに良い解決策であるので、受け入れるつもりです:) –

1

あなたがしていることは正しい方法です。あなたが実際にあなたの資産のデータベースにアクセスしているモデル/他の何かを使用しないなら、あなたはそれを必要としません。あなたはこのようなものをやっていたならば、あなたのアプリが初期化されていることが必要があると思います唯一の時間は次のとおりです。(完全に不自然な例が、あなたは私が取得していますかを見ることができます)

/* In some css file */ 
.some_class{ 
    #{User.find(1).avatar_url} 
} 
関連する問題