为了在我的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
应该有效。我做错了什么想法?
读完the docs后,我想出了这个解决方法:
在这里创建一个无法压缩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
在qazxsw我为我工作。看起来默认是没有压缩。
我还需要调试我的js,所以我尝试了ncherro的解决方案。问题是它仍然会抛出
耙子流产了!未初始化的常数NoCompression
所以我只是将NoCompression类放在production.rb文件中
config/environments/production.rb
另外值得注意的是......除了ncherro解决方案,您还需要执行以下操作:
# 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
来清理现有资产。rake assets:clean
以使用新压缩器编译您的资产。rake assets:precompile
快乐的调试;)
注释掉uglifier并添加touch tmp/restart.txt
。这对我有用。
config.assets.debug = true
使用Heroku上的Rails 4,你需要做两件事。首先,如@geekQ所述,注释掉config.assets.js_compressor = :uglifier
中的js_compressor行
config.assets.debug = true
其次,您需要考虑config/environments/production.rb
任何与缓存中的版本具有相同MD5的文件都不会被重新编译。将提供先前(可能已压缩)的版本。您编辑的任何文件都将具有新的MD5并重新编译。
您还可以使用# config.assets.js_compressor = :uglifier
将整个资产缓存清除到Heroku工具带。安装它,然后使用该命令
Heroku's asset pipeline cache for Rails 4.
在清除缓存后部署新版本,将重新编译所有资产。
我不得不更新Heroku Repo plugin中的heroku repo:purge_cache
以使Rails.application.config.assets.version
更改生效。
在config/initializers/assets.rb
中查找并注释掉这些行:
production.rb
看起来这可能是Rails中的一个错误。从即将推出的rails 3.2.9的更新日志中,您遇到了什么?
对于asset_path,请尊重config.digest = false
以前,asset_path内部仅尊重:摘要选项,但忽略全局配置设置。这意味着config.digest = false不能与config.compile = false一起使用,这会纠正行为。
environments/production.rb
你认为那可能有关系吗?