我最近将我的应用程序升级到rails 3.1并且通常一切似乎都在工作,但有一件事让我疯狂。
我有两个主要的js文件,我们称之为application.js和main.js.
application.js中包含我的清单,并在main.js中加载。这工作正常。我的问题是当我处于开发模式并且我对main.js进行了更改,然后刷新页面,网站没有获取更改。为了引入更改,我重新启动了rails服务器。
我在开发中打开了调试模式,但我想知道是否还有其他设置我缺少?
之前有人碰到过吗?
答案 0 :(得分:15)
我遇到了同样的问题,但config.action_controller.perform_caching
已经设置为false。
对于我和我正在使用的其他人,问题是Chrome尽管在Rails中进行了设置,但仍在缓存页面。
要解决此问题,我们只需关闭标签页,打开新标签页,然后再次访问该网站。
答案 1 :(得分:4)
我遇到了同样的问题,发现在开发中删除资产摘要修复了这个问题。确保在developmen.rb中将其设置为false:
config.assets.digest = false
答案 2 :(得分:2)
我遇到了同样的问题,我终于在我的development.rb中偶然发现了一些问题。我将config.action_controller.perform_caching
设置为true,将其更改为false可以解决问题。
答案 3 :(得分:2)
以隐身模式打开Chrome对我来说效果最佳。无需打开和关闭选项卡。在隐身模式下,Chrome不会缓存javascript。
答案 4 :(得分:2)
另请注意,如果启用config.threadsafe,它将打开cache_classes。因此,如果您的config / environments / development.rb文件包含以下内容:
config.cache_classes = false
config.threadsafe!
然后你关闭cache_classes,然后重新打开它。您将需要注释掉config.threadsafe(如果您不需要它),如下所示:
config.cache_classes = false
# config.threadsafe!
或者,如果您需要线程安全,请颠倒这两个配置的顺序,以便真正关闭config_classes:
config.threadsafe!
config.cache_classes = false
有关详细信息,请参阅http://tenderlovemaking.com/2012/06/18/removing-config-threadsafe.html
答案 5 :(得分:1)
查看您的开发日志,看看它在提供application.js时的含义。
对于正常请求(浏览到页面),它看起来应该是这样的:
Started GET "/assets/application.js" for 127.0.0.1 at Fri Sep 30 12:13:27 +1300 2011 Served asset /application.css - 304 Not Modified (2ms)
如果没有,您可能没有正确设置管道选项。其中一个生产设置可能位于错误的位置。资产管道指南的Section 9列出了已迁移应用的正确设置清单。
答案 6 :(得分:1)
我有同样的问题,config.action_controller.perform_caching设置正确。我还使用Heroku和Precompile资产进行Push to Heroku: RAILS_ENV =生产包exec rake资产:预编译 在推送之后,当我开始新工作时,我忘记使用以下命令删除预编译资产: sudo rm -r public / assets / *
所以,无论我对我的任何.js文件做了什么,他们的更改都没有显示出来。
答案 7 :(得分:0)
如果上述答案在您的背景下失败..
确保缓存由rails完成..有时它不会检测资产中的更改并提供较旧的缓存版本。
使用
removedelay()
>>
rails c
或者只是删除Rails.cache.clear
dir
tmp