Ruby类在Rake任务之间被清除了吗

Ruby类在Rake任务之间被清除了吗,ruby,rspec,rake,Ruby,Rspec,Rake,我有一个Rakefile,它将spec任务定义为 task :spec => [:check_dependencies, :load_backends] 然后运行实际的rspec测试。在load_backends任务期间,它加载一个名为Story的类,但在第一个规范测试中,defined?(Story)返回false 我假设Rake的预期行为是在每个任务开始时从一个新的环境开始,但是有没有一种方法可以覆盖它呢?或者我需要重新设计将后端加载到每个任务中吗?RSpec的spec任务启动了一个

我有一个Rakefile,它将spec任务定义为

task :spec => [:check_dependencies, :load_backends]
然后运行实际的rspec测试。在load_backends任务期间,它加载一个名为
Story
的类,但在第一个规范测试中,
defined?(Story)
返回false


我假设Rake的预期行为是在每个任务开始时从一个新的环境开始,但是有没有一种方法可以覆盖它呢?或者我需要重新设计将后端加载到每个任务中吗?

RSpec的spec任务启动了一个新的Ruby进程(我认为主要是为了不破坏您的Rake进程),因此Rake任务(甚至spec任务)中定义的类在您的spec中不可用。考虑把这个逻辑移到你的规格助手或不使用RSPEC的SPEC任务。 嗯,我对rake的了解很少,但是Rails有一个任务“环境”,它加载Rails环境曾经依赖的任务。因此,我不认为rake正在清理,但必须关闭一些其他功能。您可以在:load_后端任务中发布代码吗?