【发布时间】:2011-11-19 00:30:04
【问题描述】:
即使我重新启动开发服务器,我的 js.erb 文件也不会重新生成。每次我重新启动服务器时,我有没有办法强制资产管道重新生成所有 javascript 资产?
如果我更改实际的 .js.erb 源文件,那么它会重新编译,但代码会从数据库中提取,读取可能在服务器重启之间发生变化的种子数据。
【问题讨论】:
标签: ruby-on-rails-3.1 asset-pipeline
即使我重新启动开发服务器,我的 js.erb 文件也不会重新生成。每次我重新启动服务器时,我有没有办法强制资产管道重新生成所有 javascript 资产?
如果我更改实际的 .js.erb 源文件,那么它会重新编译,但代码会从数据库中提取,读取可能在服务器重启之间发生变化的种子数据。
【问题讨论】:
标签: ruby-on-rails-3.1 asset-pipeline
这里迟到了,但是到处都遇到了这个问题,并且对此感到非常恼火,所以稍微挖掘了一下。这是我的解决方案:
重启服务器时,rm -rf tmp/cache/*
这将清除 SCSS 和其他缓存的资产,并强制重新编译。
如果您愿意或正在使用 Rake 重新启动服务器,您可以运行 rake assets:clean。
显然,这样做会稍微减慢服务器重启速度,但对于消除这个主要痛点可能是值得的......
【讨论】:
将您在资产管道中执行的任何 ruby 想象成在您的服务器启动之前发生,因为这实际上是在资产预编译步骤的生产中发生的(在开发中,如果文件发生更改,它会刷新,因为您已经描述)。在这种情况下,您需要将该代码重构为一个控制器和您的 app/views 目录 (html.erb/js.erb) 中的某些内容,以便您的代码在每次请求时运行。
【讨论】:
config.assets.debug 已设置,感谢资源我会做更多的挖掘