1

Ruby on Rails OpenShift アプリケーション (ruby 1.9、Rails Rails 3.2.13) があり、開発環境で問題なく動作しています。ただし、アプリケーションを OpenShift にデプロイすると、次のエラーが発生します。

ActionView::Template::Error (logo.png isn't precompiled):
    2:   <header>
    3:     <div id="header" class="clearfix landing_header">
    4:       <a href="#" id="logo">
    5:         <%= image_tag("logo.png") %>
    6: 
    7:       </a>

logo.png がプリコンパイルされていないというエラーが表示されることを理解しています。これらのディレクティブは私のproduction.rb環境で設定されているため、これは理にかなっています。

config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true

さて、私のアセットはプリコンパイルされていますか? アプリを ( を使用してgit push) デプロイすると、次のようなことがわかります。

remote: Precompiling with 'bundle exec rake assets:precompile'

そしてエラーはありません... SSHを使用してOpenShiftリポジトリでプリコンパイルされたアセットを検索しても、他の多くのアセットとともにそこに表示されます。

> ls public/assets | grep logo
logo-66589ea9e7a1caa7f2151a721d6cdbd2.png

ブラウザで自分のアプリのアドレス/資産/そのファイル^^を押すと、それを見ることができます。唯一の問題は、image_tag がそうでないことです。

私は何を間違っていますか?アセットはプリコンパイルされていますね。image_tag の使い方が間違っていますか? 前もって感謝します!

4

2 に答える 2

0

答えるのが少し遅れましたが、私もこれでいくつかの問題に遭遇しました。これが私がそれを解決した方法です。oepnshift に対して「git push」を実行すると、コンソールに表示されるようにアセットがプリコンパイルされます

remote: Precompiling with 'bundle exec rake assets:precompile'

問題 これは、本番環境ではなく、開発環境を使用してプリコンパイルしていると思います。これを修正するために、デプロイ アクション フック ファイルに数行追加しました (app -> .openshift -> action_hooks - deploy)。

cd $OPENSHIFT_REPO_DIR
RAILS_ENV=production bundle exec rake assets:precompile

これにより、プリコンパイルにプロダクション構成ファイルを使用することが強制されます。

唯一の問題は、git push を実行すると、2 回プリコンパイルされることです。それでも動作するはずです。

于 2013-09-24T05:29:36.183 に答える