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

at.*_*at. 14 caching ruby-on-rails ruby-on-rails-3 sprockets ruby-on-rails-3.2

我一直在开发一个有轨道的网站,一切都比较顺利.突然间,我对视图和资产的更改不再显示出来.我更改了样式表或某些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
Run Code Online (Sandbox Code Playgroud)

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

我试过删除我的/ tmp目录无济于事.

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

config.assets.initialize_on_precompile = false
Run Code Online (Sandbox Code Playgroud)

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

Chr*_*ald 33

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

  • 还值得清除你的`tmp/cache`文件夹 (10认同)
  • 不幸的是,这仍然不适合我的开发. (4认同)

Max*_*unn 9

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

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

config.serve_static_assets = false
Run Code Online (Sandbox Code Playgroud)

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


vpi*_*ano 8

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

$ rake tmp:cache:clear && rails server
Run Code Online (Sandbox Code Playgroud)