のパイプライン経由でアセットを設定できません今月、私はRails 3.0からRails 3.1にアップグレードしました。今週はプロダクションモードでサーバを起動しようとしました。現地生産用レール3.1.3サーバ
私はない限り、私はスピードの理由から、私は明らかにドン私environment.rbのファイル」にconfig.assets.compile = true
を設定し、アセットパイプラインを経由して私の公共資産(JavaScriptとCSSを)まで提供するために私の本番環境のサーバーを取得することができませんやりたくない。
私は、1つまたは2つの異なるページで使用される傾向のある多数のJSファイルとCSSファイルを持っています。これは、それぞれのページが少し違うことを望むので、私の使い方に合わない単一の "マニフェスト"ファイルを作成することを意味します。私はまた、CSSのいくつかがうまく一緒に座っていないことを期待しています。それゆえ、私は、CSS/JSを大量に整理しようとしている "ちょうどそれを稼働させる"というアプローチをやめました。ここで
はproduction.rbファイルです:
Implicit::Application.configure do
...
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# I set this to true, as I am testing this locally, just running a local Thin server
config.serve_static_assets = true
config.assets.compress = true
# Setting this to false removes the issue - but is SLOW
config.assets.compile = true
config.assets.digest = true
# This is overkill - but does get EVERYTHING precompiled for now
config.assets.precompile += %w(*.css *.js)
config.action_dispatch.x_sendfile_header = nil
...
end
これは私にとって非常に新しい分野である、と私はこれらのブール値を切り替える今日の多くを過ごした地元のシン/ Railsのサーバを起動/停止しましたそれらを試してみる。しかし、唯一の違いは、コンパイルフラグです。
私のapplication.rbファイルはかなり標準的で、その中にconfig.assets.enabled = true
とconfig.assets.initialize_on_precompile = false
があります。後者は英雄郵便(そして推測)からです。
私はそれであるが、プリコンパイルの正規表現「すべてをキャッチ」おそらく、それとは何かを私のやや古いノートパソコン(5年)上で実行するのに約20分かかりますbundle exec rake assets:precompile
コマンドで作成されたフル装備public/assets
ディレクトリを、持っていますコンパイルフラグがtrue
に設定されていると、/tmp/cache
ディレクトリにこれらのアセットのコピーが作成されているのがわかります。これは明らかにアプリケーションが作成した "コンパイル済みのコピー"です。資産。
コンパイルフラグをfalse
に設定すると、ローカルに要求を設定しない限りログにエラーメッセージが表示され、レンダリングされたエラーページに表示されます。jquery.reveal isn't precompiled
です。しかし、http://localhost:3000/assets/jquery.reveal.js
に行くと、javascriptファイルが提供されます。
これを引き起こして、私のアプリケーションのレイアウトの行は次のとおりです。私は変更せずにjquery.reveal.js
へのjquery.revealを変更しようとしている
<%= javascript_include_tag "application", "jquery.reveal" %>
。それを削除すると、jquery.reveal機能がなくなったことを除いて、インデックスページが修正されます!したがって、application.jsが正しく提供されていることを明確に示しています。私は、jquery.revealがなぜpublic/assetsディレクトリのプリコンパイルされたファイルを見ることができるのか分かりません。
パイプラインガイドの最後のセクションの設定オプションをすべて確認してください。それでも問題がない場合は、index.html.erbの内容とRailsヘルパーコールをアプリケーションに投稿してください.rb? –
最初に投稿されたエラーメッセージは、期限切れの「実動」データベースを使用したもので、セキュリティコードから取得されました。新しいエラーを表示するために最後の2つの段落を更新しました - 私はjquery.revealが見つからないことに戻ります! – Phantomwhale