ruby-on-rails – Rails 3.1不重新加载更改的视图
我在
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(为我运行瘦服务器) 在过去的几个月里,我一直在使用Rails 3上的Ruby 1.8.7开发.必须在任何视图更改时重新启动服务器会严重降低开发速度. 我已准备好this SO thread,但在我的Rails版本(3.1.0 rc4)中,配置变量已根据该答案进行设置.另外,我可以使用Sinatra复制错误,因此看起来并非如此. 任何人都可以解释这个问题吗? Ruby版本:ruby 1.9.2p180(2011-02-18修订版30909)[x86_64-linux] 编辑7/13,澄清 require 'sinatra' require 'sinatra/reloader' require 'haml' set :views,'views' get '/' do end get '/test' do haml :test end 有了这个,我创建了一个文件:views / test.haml.在服务器运行时修改它确实在重新加载页面时显示更改.感谢Tiredpixel指出这一点 未解决的问题:为什么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和(surprise!)config.cache_classes. 修复:移动config.threadsafe!在config.cache_classes之上,因此它不会被隐式覆盖. 解决方法
Rails通常配置为在开发环境中自动重新加载每个请求.但是,对于lib /中的文件,这不会发生.
您使用Sinatra描述的经验(在0.9.2中删除了自动重新加载):http://www.sinatrarb.com/faq.html#reloading;可以安装Shotgun gem来执行此重新加载. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |