web-dev-qa-db-ja.com

Rails Productionでアセットミニファイを無効にする

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は動作するはずでした。私が間違ったことはありますか?

38
Jack R-G

ドキュメント を読んだ後、私はこの回避策を思いつきました:

ここで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
53
ncherro

Rails 4の下で、行をコメント化するだけ

# config.assets.js_compressor = :uglifier

config/environments/production.rbは私のために働きました。デフォルトは圧縮なしのようです。

27
geekQ

私も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
11
user2576663

また、注目に値します... ncherroソリューションに加えて、以下を実行する必要があります。

  1. 新しいモジュールは、デフォルトでロードされる場所に配置してください。私の場合はlib/extrasでした。
  2. 実行rake assets:clean既存のアセットをクリーンアップします。
  3. 実行rake assets:precompile新しいコンプレッサーを使用してアセットをコンパイルします。
  4. アプリを再起動します... touch tmp/restart.txt

幸せなデバッグ;)

6
whyvez

Uglifierをコメント化し、config.assets.debug = trueを追加します。これでうまくいきました。

  • JavaScriptとCSSを圧縮します。

    config.assets.js_compressor = :uglifier

  • デバッグモードでは、アセットの連結と前処理が無効になります。ただし、このオプションを使用すると、多数の複雑なアセットでのビューのレンダリングに大幅な遅延が発生する可能性があります。

    config.assets.debug = true

6
user3630729

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

キャッシュをパージした後で新しいバージョンをデプロイすると、すべてのアセットが再コンパイルされます。

2
dodgio

environments/production.rbで次の行を見つけてコメント化します。

config.assets.js_compressor = ...
config.assets.css_compressor = ...
1
Manish Singh

更新する必要がありましたRails.application.config.assets.version in config/initializers/assets.rb のために production.rb変更を有効にします。

1
averageradical

これは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/

あなたはそれが関連していると思いますか?

0
jrochkind