即使在重新启动服务器之后,Rails dev环境也不会更新html / css / assets

时间:2012-10-06 19:08:14

标签: ruby-on-rails ruby-on-rails-3 caching ruby-on-rails-3.2 sprockets

我一直在用铁轨开发一个网站,一切都比较顺利。突然间,我对视图和资产的更改不再显示出来。我更改了样式表或某些HTML,并在http://0.0.0.0:3000重新加载浏览器,没有任何变化。所以我重新启动WEBrick仍然没有改变。如果我完全改变图像,情况就是如此。

获得新更改的唯一方法是预编译资产:

C:\Users\me\website>rake assets:precompile
C:/Ruby193/bin/ruby.exe C:/Ruby193/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets

为什么将生产显示为RAILS_ENV?也许我的开发环境不知何故变成了生产环境?但即便如此,我也不需要预先编译资产来反映变化。无论如何Rails.env.development?返回trueRails.env.production?会在控制器和erb文件中返回false

我尝试删除我的/ tmp目录无效。

我必须将以下行添加到config / application.rb才能让Heroku使用指南针:

config.assets.initialize_on_precompile = false

但是,删除该行无论如何也无助于我的问题。

4 个答案:

答案 0 :(得分:33)

删除public/assets/目录的内容。这就是预编译文件的位置,如果它们存在则会被提供,而不是请求通过Sprockets。你可以安全地核对整个目录,事情应该再次发挥作用。

答案 1 :(得分:8)

另一种技术是将public / assets /目录重命名为public / assets_hide /。然后在运行“rake assets:precompile”并推送到服务器之前将其重命名。这减少了预编译时间,并且还保留了一些宝石的资产文件权限,例如rich,它复制资产。

更简单的方法是将config / environments / development.rb文件修改为:

config.serve_static_assets = false

然后你不需要搞乱public / assets目录。但是,如果您使用回形针等内容上传图像文件,则无法使用,因为图像文件无法提供。

答案 2 :(得分:3)

对每个人来说可能都很明显,但只是想补充一点,如果删除或重命名public / assets /文件夹,您可能还需要重新启动本地服务器并清除浏览器缓存: - )

答案 3 :(得分:0)

我只想添加一些使@McFadden建议的内容更容易执行的操作。这是我的用途:

$ rake tmp:cache:clear && rails server