gpt4 book ai didi

ruby-on-rails - Rails 3.1 不重新加载更改的 View

转载 作者:行者123 更新时间:2023-12-04 11:59:13 25 4
gpt4 key购买 nike

我在 Ruby 1.9.2 应用程序中看到了一个错误/功能。对 的任何更改浏览次数 (不是 ruby​​ 文件)需要重新启动服务器。我最初在 Rails 应用程序中遇到过这个问题,但我也在一个最小的 Sinatra 应用程序中测试了同样的事情。

我将包含一个简单的应用程序来演示

# testapp.rb
require 'sinatra'

get '/' do
[0,1,2].to_s #change this to [0,1].to_s
end

这是我的程序:
  • ruby testapp.rb (为我运行瘦服务器)
  • 加载页面
  • 打开文件并编辑 View
  • 重新加载页面(我没有看到任何变化)
  • 杀死服务器
  • 重新启动服务器(更改现在可见)

  • 在过去的几个月里,我一直在 Rails 3 上使用 Ruby 1.8.7 进行开发。必须在任何 View 更改时重新启动服务器会严重减慢开发速度。

    我准备好了 this SO thread ,但在我的 Rails 版本(3.1.0 rc4)中,配置变量已经按照那个答案设置了。此外,我可以使用 Sinatra 复制错误,因此情况似乎并非如此。

    任何人都可以阐明这个问题吗?

    Ruby 版本:ruby 1.9.2p180 (2011-02-18 修订版 30909) [x86_64-linux]
    服务器:thin 1.2.11(也用 Sinatra/Webrick 测试过)

    编辑 7/13,澄清
    Sinatra 的事情是一个单独的问题——Sinatra 的源重新加载默认是禁用的。我使用此代码来测试行为:
    require 'sinatra'
    require 'sinatra/reloader'
    require 'haml'

    set :views, 'views'

    get '/' do
    end

    get '/test' do
    haml :test
    end

    有了这个,我做了一个文件: views/test.haml .在服务器运行时修改它 重新加载页面时显示更改。感谢 Tyredpixel 指出这一点

    Unresolved 问题 :为什么 Ruby 1.9.2 上的 Rails 3.1 不重新加载 浏览次数 ?我可以加载 ruby​​ 文件,但不能加载 haml 和 erb 文件。我最终重新启动服务器只是为了查看是否由于文件未正确加载而实际修复(或未修复)错误。

    编辑/解决方案(从我在已接受答案中的评论中复制) :

    问题出在 config/environments/development.rb
    config.cache_classes = false

    即使在我们检查这是正确的之后,我们仍然有问题。在我们的文件中进一步向下:
    config.threadsafe!

    这样做是将以下 3 个标志设置为 true: config.allow_concurrency , config.preload_frameworks ,和(惊喜!) config.cache_classes .

    修复:移动 config.threadsafe!以上 config.cache_classes ,这样它就不会被隐式覆盖。

    最佳答案

    Rails 通常配置为在开发环境中自动重新加载每个请求。这不会发生在 lib/ 中的文件中, 尽管。

    您描述的 Sinatra 体验是有意的(自动重新加载已在 0.9.2 中删除):http://www.sinatrarb.com/faq.html#reloading ; Shotgun可以安装 gem 来执行此重新加载。

    关于ruby-on-rails - Rails 3.1 不重新加载更改的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6605976/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com