在Rails生产中禁用资产缩减

Jac*_*R-G 37 javascript compression ruby-on-rails asset-pipeline

为了在我的heroku生产环境中调试javascript,我需要禁用资产压缩(或者至少压缩javascript).我试着config.assets.compress = false沿config.assets.debug = true,并仍在使用的压缩资产.然后我删除了压缩资产,此时根本没有资产.我补充说config.assets.enabled = false,这没有帮助.我尝试将未压缩的资源复制到各种目录中,包括应用程序root,public和public/assets(后两个使用文件夹"images",javascripts"和"stylesheets"),并将资源直接放入文件夹中三个子文件夹).我最终能够通过更改html来直接引用所有的javascript文件来使javascripts工作.但CSS和图像仍然无法正常工作.

我原以为我原来config.assets.compress = false应该有用.我做错了什么想法?

nch*_*rro 51

在阅读完文档后,我想出了这个解决方法:

在这里创建一个不压缩js/css的模块: lib/modules/no_compression.rb

class NoCompression
  def compress(string)
    # do nothing
    string
  end
end
Run Code Online (Sandbox Code Playgroud)

配置您的资产(不)用您的无操作压缩器进行压缩

config.assets.compress = true
config.assets.js_compressor = NoCompression.new
config.assets.css_compressor = NoCompression.new
Run Code Online (Sandbox Code Playgroud)


gee*_*ekQ 24

在Rails 4下只是评论出这条线

# config.assets.js_compressor = :uglifier
Run Code Online (Sandbox Code Playgroud)

config/environments/production.rb为我工作.看起来默认是没有compresson.


小智 11

我还需要调试我的js,所以我尝试了ncherro的解决方案.问题是它仍然会抛出

耙子流产了!未初始化的常数NoCompression

所以我只是将NoCompression类放在production.rb文件中

    # 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
Run Code Online (Sandbox Code Playgroud)


小智 6

另外值得注意的是......除了ncherro解决方案,您还需要执行以下操作:

  1. 确保将新模块放在默认加载的位置.在我的情况下是lib/extras.
  2. 运行rake assets:clean以清理现有资产.
  3. 运行rake assets:precompile以使用新压缩器编译您的资产.
  4. 重启你的应用...我用 touch tmp/restart.txt

快乐的调试;)


小智 6

注释掉uglifier并添加config.assets.debug = true.这对我有用.

  • 压缩JavaScripts和CSS:

    config.assets.js_compressor = :uglifier

  • 调试模式禁用资产的连接和预处理.但是这个选项可能会导致大量复杂资产的视图渲染出现严重延迟:

    config.assets.debug = true