如何防止Spork在Rails 4中预加载我的路由文件?

时间:2014-01-24 04:53:24

标签: ruby-on-rails ruby testing devise spork

Spork正在预加载我的User模型,但不是我的其他模型。 (即,每次我对app/models/user.rb进行更改时,我都必须重新启动Spork服务器。)

正在运行spork --diagnose告诉我问题是由Devise引起的。当spork预加载config/routes.rb时,它会运行预加载用户模型的行devise_for :users

那我怎么能防止这种情况发生呢? Spork文档中的This page说我应该使用::trap_method,将spec_helper文件放入我的行

Spork.trap_method(Rails::Application, :reload_routes!)

for Rails< 3.1,或

Spork.trap_method(Rails::Application::RoutesReloader, :reload!)

for Rails 3.1。但我已经尝试了这两种方法,但两种方法都没有效果。我正在运行Rails 4.0.0和Spork 1.0.0rc4。

如何在每次运行时重新加载User类?

1 个答案:

答案 0 :(得分:1)

在spec / spec_helper.rb中明确重新加载模型:

Spork.each_run do
  # reload all the models
  Dir["#{Rails.root}/app/models/**/*.rb"].each do |model|
    load model
  end
end