Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Rails在我的iPhone上以开发模式缓存资产?_Iphone_Ruby On Rails - Fatal编程技术网

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

为什么Rails在我的iPhone上以开发模式缓存资产?,iphone,ruby-on-rails,Iphone,Ruby On Rails,根据,在开发和测试环境中默认情况下禁用缓存。如果我做了一个小小的CSS更改,运行rails服务器并访问我的站点localhost:3000,我就可以看到我的更改。但是,如果我在iPhone上以10.0.1.2:3000访问rails服务器,CSS不会更新,即使是匿名模式下的Chrome。当我尝试不同的缓存为空的iPhone时,变化就在那里 我发现了一个描述同样问题的例子。以下是建议的解决方案: 删除public/assets目录。我没有 将config.service\u static\u a

根据,在开发和测试环境中默认情况下禁用缓存。如果我做了一个小小的CSS更改,运行
rails服务器
并访问我的站点
localhost:3000
,我就可以看到我的更改。但是,如果我在iPhone上以
10.0.1.2:3000
访问rails服务器,CSS不会更新,即使是匿名模式下的Chrome。当我尝试不同的缓存为空的iPhone时,变化就在那里

我发现了一个描述同样问题的例子。以下是建议的解决方案:

  • 删除
    public/assets
    目录。我没有
  • config.service\u static\u assets=false添加到
    environments/development.rb
    。它已经在那里了
  • 删除
    /tmp/cache/assets
    ,将
    config.service\u static\u assets=false
    添加到
    environments/development.rb
    并重新启动服务器。我试过了,但没用
以下是我的相关
environments/development.rb
config:

# 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

如何使用iphone访问本地计算机

您是否配置了任何网络设置,或者将其推送到另一台服务器并从那里访问,因为如果您将其推送到另一台服务器,则该服务器可能正在生产模式下运行


HTH

我没有iPhone要测试,但这听起来像是正常的浏览器缓存问题。请尝试以下说明。如果这样做有效,那么每次更新CSS时都需要这样做(或者J

),我很确定这是因为Rails只在生产中进行指纹识别:

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

尝试将此添加到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"]

我也遇到了类似的问题。发生这种情况是因为我的
config/environments/development.rb
中包含了
config.asset\u host=http://localhost:3000“


我已经删除了它,一切正常。

我只是点击了我的开发机器的IP地址,而不是本地主机(
http://10.0.1.2:3000
而不是
http://localhost:3000
)。在这种情况下,我怀疑iphone浏览器缓存与此有关,很抱歉,我不熟悉该领域,也许您可以在iphone类别中发布相同的问题,并了解其浏览器缓存的工作原理:)我添加了iPhone类别。我认为Rails的一个功能应该是通过在开发模式下向资产文件名添加哈希字符串来防止浏览器缓存。应该是这样的。您可以检查网页的来源,以确保资产URL正在更新。您的iPhone可能正在缓存HTML页面,因此它甚至看不到更新的URL。也许是某种移动优化。清除浏览器缓存是可行的,但这真的很烦人。我仍然觉得应该通过Rails实现这一点(比如在每次请求时都在资产文件名中添加UUID)。您将资产存储在应用程序中的何处?我将它们存储在
app/assets
中。太棒了!谢谢你的帮助。