为什么Rails在我的iPhone上以开发模式缓存资产?

时间:2013-01-06 06:36:42

标签: iphone ruby-on-rails

根据Ruby on Rails Guide: Caching,默认情况下,在开发和测试环境中禁用缓存。如果我做了一个小的CSS更改,请运行rails server并访问我的网站localhost:3000,我可以看到我的更改。但是,如果我在10.0.1.2:3000上访问我的iPhone上的rails服务器,则CSS无法更新,即使是隐身模式下的Chrome也是如此。当我尝试使用具有空缓存的不同iPhone时,会发生更改。

我发现了stack overflow post描述了同样的问题。以下是建议的解决方案:

  • 删除public/assets目录。我没有。
  • config.serve_static_assets = false添加到environments/development.rb。它已经存在了。
  • 删除/tmp/cache/assets,将config.serve_static_assets = false添加到environments/development.rb并重新启动服务器。我试过这个并没有用。

这是我的相关environments/development.rb配置:

# In the development environment your application's code is reloaded on
# every request. This slows down response time but is perfect for development
# since you don't have to restart the web server when you make code changes.
config.cache_classes = false

# Show full error reports and disable caching
config.consider_all_requests_local       = true
config.action_controller.perform_caching = false

4 个答案:

答案 0 :(得分:5)

我很确定这种情况正在发生,因为Rails只会在制作中进行指纹识别:http://guides.rubyonrails.org/asset_pipeline.html#in-production

这意味着在开发中,缓存更具攻击性的浏览器可能会遇到此问题。

尝试将此添加到您的development.rb:

config.assets.digest = true

或者更优选的东西是有条件的,当你进行移动开发时

# One of the few exceptions I'd make to a no ENV variables rule 
# for my rails environment config files
config.assets.digest = true if ENV["MOBILE_DEBUG"]

答案 1 :(得分:0)

如何通过iPhone访问本地计算机?

您是否已配置任何网络设置或将其推送到其他服务器并从那里进行访问,因为如果您将其用于其他服务器,则该服务器可能正在生产模式下运行。

HTH

答案 2 :(得分:0)

我没有要测试的iPhone,但这听起来像是普通的浏览器缓存问题。请尝试clearing the browser cache的这些说明。如果可行,那么每次更新CSS(或者J

)时都需要这样做

答案 3 :(得分:0)

我有类似的问题。之所以发生这种情况,是因为UITableViewCell已包含config/environments/development.rb

我删除了它,一切正常。