Herokuの本番環境でJavaScriptをデバッグするには、アセットの圧縮(または少なくともJavaScriptの圧縮)を無効にする必要があります。私は試した config.assets.compress = false
に加えて config.assets.debug = true
、そして圧縮されたアセットはまだ使用されていました。次に、圧縮されたアセットを削除しましたが、その時点でアセットはまったくレンダリングされませんでした。追加した config.assets.enabled = false
、それは役に立たなかった。非圧縮アセットをアプリケーションルート、パブリック、パブリック/アセットなどのさまざまなディレクトリにコピーしてみました(後者の2つは、「イメージ」、「javascripts」、および「スタイルシート」の両方のフォルダーを使用し、アセットを直接フォルダーに入れずにすべてのJavaScriptファイルを直接参照するようにHTMLを変更することで、JavaScriptを機能させることができましたが、CSSと画像はまだ機能していません。
私のオリジナルconfig.assets.compress = false
は動作するはずでした。私が間違ったことはありますか?
ドキュメント を読んだ後、私はこの回避策を思いつきました:
ここでjs/cssを圧縮するために何もしないモジュールを作成します:lib/modules/no_compression.rb
class NoCompression
def compress(string)
# do nothing
string
end
end
何もしないコンプレッサーで圧縮する(しない)ようにアセットを構成する
config.assets.compress = true
config.assets.js_compressor = NoCompression.new
config.assets.css_compressor = NoCompression.new
Rails 4の下で、行をコメント化するだけ
# config.assets.js_compressor = :uglifier
config/environments/production.rb
は私のために働きました。デフォルトは圧縮なしのようです。
私もjsをデバッグする必要があるので、ncherroのソリューションを試しました。問題はそれがまだ投げるだろうということでした
レーキは中止されました!初期化されていない定数NoCompression
だから、私はただproduction.rbファイルにNoCompressionクラスを入れました
# Compress JavaScripts and CSS
class NoCompression
def compress(string)
# do nothing
string
end
end
config.assets.compress = true
config.assets.js_compressor = NoCompression.new
config.assets.css_compressor = NoCompression.new
また、注目に値します... ncherroソリューションに加えて、以下を実行する必要があります。
rake assets:clean
既存のアセットをクリーンアップします。rake assets:precompile
新しいコンプレッサーを使用してアセットをコンパイルします。touch tmp/restart.txt
幸せなデバッグ;)
Uglifierをコメント化し、config.assets.debug = true
を追加します。これでうまくいきました。
JavaScriptとCSSを圧縮します。
config.assets.js_compressor = :uglifier
デバッグモードでは、アセットの連結と前処理が無効になります。ただし、このオプションを使用すると、多数の複雑なアセットでのビューのレンダリングに大幅な遅延が発生する可能性があります。
config.assets.debug = true
HerokuでRails 4を使用する場合、2つのことを行う必要があります。最初に@geekQが言及したように、config/environments/production.rb
のjs_compressor行をコメント化します
# config.assets.js_compressor = :uglifier
次に、考慮する必要がある HerokuのアセットパイプラインキャッシュRails 4。 キャッシュ内のバージョンと同じMD5のファイルは再コンパイルされません。以前の(編集したファイルには新しいMD5が含まれ、再コンパイルされます。
Heroku Repoプラグイン を使用してアセットキャッシュ全体をHerokuツールベルトにパージすることもできます。それをインストールしてから、コマンドを使用します
heroku repo:purge_cache
キャッシュをパージした後で新しいバージョンをデプロイすると、すべてのアセットが再コンパイルされます。
environments/production.rb
で次の行を見つけてコメント化します。
config.assets.js_compressor = ...
config.assets.css_compressor = ...
更新する必要がありましたRails.application.config.assets.version
in config/initializers/assets.rb
のために production.rb
変更を有効にします。
これはRailsのバグである可能性があります。今後のRails 3.2.9の変更ログから、これはあなたが遭遇していたものですか?
Asset_pathに対してconfig.digest = falseを尊重します
以前は、asset_path internalsは:digestオプションのみを尊重し、グローバル構成設定を無視していました。これは、config.digest = falseをconfig.compile = falseと組み合わせて使用できないことを意味し、これにより動作が修正されます。
http://weblog.rubyonrails.org/2012/10/29/ann-Rails-3-2-9-rc1-has-been-released/
あなたはそれが関連していると思いますか?