【问题标题】:Rails: Controllers and models seems to be cached in devRails:控制器和模型似乎缓存在开发中
【发布时间】:2013-12-05 00:29:20
【问题描述】:

我正在使用 Rails 3.1,并且已经开发了一年半。今天早上我一定做了什么,现在我的很多文件似乎都被缓存了。这包括视图文件、控制器和模型。

我可以对模型、控制器等进行更改,并且不会对我的应用程序产生任何影响(在 localhost:3000 上运行)。我曾尝试切换端口(例如切换到 localhost:3005),但没有成功。

我没有更改任何配置文件或在我的计算机(Mac、Lion)上进行任何大的更改,但显然我一定做了什么。

  • 我在开发模式下工作
  • 我在 Mac 上使用 TextMate
  • 公用文件夹为空,404 页等除外
  • 我已删除 /caches/assets 文件夹
  • 我已删除浏览器上的缓存

重新启动服务器使其始终正常工作!有时(尽管很少)更改无需重新启动即可生效。

这是我的 development.rb:

  # Settings specified here will take precedence over those in config/application.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

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

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

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # Raise exception on mass assignment protection for Active Record models
  config.active_record.mass_assignment_sanitizer = :strict

  # Log the query plan for queries taking more than this (works
  # with SQLite, MySQL, and PostgreSQL)
  config.active_record.auto_explain_threshold_in_seconds = 0.5

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true

可能发生了什么,我该如何解决或排除故障?

【问题讨论】:

  • 设置“config.cache_classes = true”然后再改回false似乎暂时解决了问题...可能是一个线索?
  • 您是否设法解决了这个问题,我们发生了完全相同的事情,它似乎是特定于计算机的。在我的电脑上它可以在我同事的电脑上运行,它会不断缓存类。

标签: ruby-on-rails caching


【解决方案1】:

你可能没有看到你认为你在看的东西。最常见的原因:您在使用项目的副本,而不是在运行应用程序时查看的文件夹。

或者你搞砸了你的 development.rb ( config.cache_classes = false )。

缓存提示:此页面包含所有缓存技术。看看关于页面缓存的那篇(它甚至没有通过 Ruby 堆栈运行)。

http://guides.rubyonrails.org/caching_with_rails.html

其他提示:将整个项目复制到一个新文件夹,因此操作系统的任何文件夹魔法都不会干扰。

开发日志是否没有显示任何关于正在发生的事情的提示?特别是如果你在你的主要模型之一中加入了一些非法代码(那真的应该让它崩溃)......

【讨论】:

  • 不,不可能,因为大多数视图(即 application.html.erb)都可以正常工作...
  • 哦,config.cache_classes 应该设置为 false,对吧? (这是给我的,我没有改变它)。
  • 如果第二个不正确(你的假设是正确的),第一个必须是正确的。您没有编辑用于生成网页的文件。您是从最近的列表中编辑,并从命令行开始吗?在不使用最近列表的情况下打开文件并仔细检查您的路径...
  • 谢谢,我 100% 确定我正在处理正确的文件。现在看来,经过一些故障排除后,如果我重新启动应用程序,它总是可以工作,如果我不重新启动,它几乎总是不能工作(有一些例外)。看来我真的错过了 cache_classes 但我没有......
  • 我知道这已经过时了,但你有没有找到解决办法?我实际上遇到了类似的事情。 config 中的所有正确设置(甚至经过测试以确保在 env 中加载了正确的配置和设置)。我在控制器中进行了更改,但没有任何反应。如果我重新加载服务器,它会进行更改。我找不到其他可以调整的地方。
【解决方案2】:

我已经遇到了同样的问题。

在我的 development.rb 文件中添加以下行后,我的问题已解决:

config.reload_classes_only_on_change = false

我不明白为什么会出现这个缓存问题。在我遇到这个问题的两周内,一切都很好。

我正在使用 Textmate,也许...

【讨论】:

    猜你喜欢
    • 2011-09-03
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2023-03-11
    • 2017-01-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多