【问题标题】:Spork won't reload file in libSpork 不会在 lib 中重新加载文件
【发布时间】:2011-08-27 04:12:01
【问题描述】:

我正在使用 spork 运行 rspec,但我无法在 lib 中获取文件以在连续 rspec 运行时重新加载。我试过在“Spork.each_run”中要求文件

我没有收到任何回复,所以我会尝试进一步解释。我的 Rails 应用程序中有以下文件:

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

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

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

有什么帮助吗?

我在:

  • 导轨 3.1.0.rc6
  • rspec 2.6.0
  • spork 0.9.0.rc9

【问题讨论】:

  • 将 lib 目录添加到 reload_path 是否有帮助,例如:config.autoload_paths += %W(#{config.root}/lib)?

标签: ruby-on-rails ruby rspec spork


【解决方案1】:

尝试使用Spork.each_run 中的load 那个文件,而不是require

【讨论】:

    【解决方案2】:

    我听到了。重新加载 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。
      猜你喜欢
      • 2012-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 2011-04-30
      • 2017-07-06
      • 2018-04-18
      相关资源
      最近更新 更多