0

Rails 3.1 でアセット パイプラインを使用するために、既に Heroku にデプロイされているアプリをアップグレードしようとしています。RailsCasts #282の必要な手順をすべて実行したところ、アプリはローカルで正常に動作しました。ただし、Heroku にプッシュしてルート パスにアクセスしようとすると、次のようなエラーが発生します"foobarbaz.png" is not precompiled。ページから最初の画像を削除すると、次の画像でも同じエラーが発生します。すべての画像は Heroku にプッシュされているため、存在しない画像を参照しようとすることはありません。

アプリを Heroku にプッシュしたときに、次の出力が表示されない/表示されないことに気付きました。

-----> Preparing Rails asset pipeline
       Running: rake assets:precompile

ローカルで実行しようとしましたrake assets:precompileが、次のエラーが発生し続けます。

rake aborted!
production database is not configured

Heroku を使用しているため、database.yml ファイルに本番構成がありません。を実行しようとするとheroku run rake assets:precompile、次のエラーが表示されます。

rake aborted!
Application has been already initialized.

必要な行を application.rb と環境ファイルに追加しましたが、まったく機能していないようです!

4

2 に答える 2

2

その問題は私にも起こりました。私の場合は、config/application.rb に次の行があったためです。

config.assets.initialize_on_precompile = false

Heroku ( https://devcenter.heroku.com/articles/rails-asset-pipeline ) によると、Rails の一部のバージョンで必要なようです。

Rails 3.x でアセットをプリコンパイルする際に、config/application.rb に次の行があることを確認することで、アプリケーションの初期化とデータベースへの接続を防ぐことができます。

config.assets.initialize_on_precompile = false

しかし、私の場合、「アプリケーションはすでに初期化されています」という例外をスローしていましたが、それを削除すると消えました

Heroku のログはデプロイ時にあまり役に立たなかったので、私がテストした方法は、heroku インスタンスで assets precompile rake タスクを実行することでした。

heroku run rake assets:precompile

于 2013-05-17T03:26:23.843 に答える
1

ファイル manifest.yml が存在する場合、Heroku は、(問題がある) 独自のプリコンパイルを行っていると想定します。

public または public/assets フォルダーから manifest.yml を削除します。

変更をherokuにプッシュします。以下の例。

$ git rm public/assets/manifest.yml
$ git commit -m "remove precompile manifest"
$ git push -f heroku master

assets:precompile を heroku サーバーで実行します。入る:

$ heroku run rake assets:precompile
于 2013-02-17T01:18:18.787 に答える