【问题标题】:Asset pipeline force js.erb recompiling资产管道强制 js.erb 重新编译
【发布时间】:2011-11-19 00:30:04
【问题描述】:

即使我重新启动开发服务器,我的 js.erb 文件也不会重新生成。每次我重新启动服务器时,我有没有办法强制资产管道重新生成所有 javascript 资产?

如果我更改实际的 .js.erb 源文件,那么它会重新编译,但代码会从数据库中提取,读取可能在服务器重启之间发生变化的种子数据。

【问题讨论】:

    标签: ruby-on-rails-3.1 asset-pipeline


    【解决方案1】:

    这里迟到了,但是到处都遇到了这个问题,并且对此感到非常恼火,所以稍微挖掘了一下。这是我的解决方案:

    重启服务器时,rm -rf tmp/cache/*

    这将清除 SCSS 和其他缓存的资产,并强制重新编译。

    如果您愿意或正在使用 Rake 重新启动服务器,您可以运行 rake assets:clean

    显然,这样做会稍微减慢服务器重启速度,但对于消除这个主要痛点可能是值得的......

    【讨论】:

      【解决方案2】:

      将您在资产管道中执行的任何 ruby​​ 想象成在您的服务器启动之前发生,因为这实际上是在资产预编译步骤的生产中发生的(在开发中,如果文件发生更改,它会刷新,因为您已经描述)。在这种情况下,您需要将该代码重构为一个控制器和您的 app/views 目录 (html.erb/js.erb) 中的某些内容,以便您的代码在每次请求时运行。

      【讨论】:

      • 我认为您误解了我的问题。如果 JS 依赖的种子数据发生变化(它是静态的东西,比如国家 => 状态映射),我们将重新启动服务器。我的问题是 即使在服务器重新启动时 在 dev 中,JS 也不会重新生成。我必须更改实际的源文件(猜测它正在做某种散列)才能将其拾取。
      • 是的——我现在明白了。您的开发环境中是否将 config.assets.debug 设置为 true?假设不是这样,您可能会查看 github.com/wavii/rails-dev-tweaks 以了解 Rails 在幕后所做的一些线索,但我认为它不会立即解决您的问题,因为它旨在减少编译资产的频率。跨度>
      • 是的 config.assets.debug 已设置,感谢资源我会做更多的挖掘
      猜你喜欢
      • 2014-04-08
      • 1970-01-01
      • 2012-10-01
      • 2013-01-15
      • 2013-05-08
      • 2012-01-23
      • 2012-02-06
      • 1970-01-01
      • 2012-03-19
      相关资源
      最近更新 更多