Spork无法重新加载lib文件中的内容

8

我正在使用spork运行rspec,但是在连续的rspec运行中无法重新加载lib文件中的一个文件。我尝试在'Spork.each_run'中要求文件,但没有得到任何响应。

为了更好的解释问题,我在我的Rails应用程序中有以下文件:

  • lib/car.rb
  • spec/lib/car_spec.rb

为了运行测试,首先我启动spork然后运行'rspec spec/lib/car_spec.rb'

除非我重新启动spork,否则RSpec看不到对Car类所做的更改。

需要帮助吗?

我的环境如下:

  • rails 3.1.0.rc6
  • rspec 2.6.0
  • spork 0.9.0.rc9

1
如果将lib目录添加到reload_path中,例如:config.autoload_paths +=%W(#{config.root} / lib),是否有帮助? - Matt
3个回答

4
尝试在Spork.each_runload该文件,而不是使用require

1

我明白你的意思。在lib/中重新加载文件非常重要。

当我直接使用require(例如require "some_dir_under_lib/some_file")时,它不会自动重新加载。但是,如果我这样做:

Dir["some_dir_under_lib/*.rb"].each { |file| require file }

那么它就会自动重新加载!我希望我能解释为什么!

顺便说一下,我是在application.rb中进行操作,而不是在spork/spec_helper中。


-3

你应该把 car.rb 放在 app/models 目录下。


为什么?当然可以在lib下放置各种扩展,除非这个car.rb文件实际上是一个ActiveRecord::Model。 - Rob

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接