rake 规范不使用 rails 环境
Posted
技术标签:
【中文标题】rake 规范不使用 rails 环境【英文标题】:rake spec not using the rails environment 【发布时间】:2010-10-28 13:40:22 【问题描述】:我正在尝试在我刚刚升级到 rails 2.3.2 的 rails 项目中使用 rspec。我已经在应用程序中安装了 rspec 1.2.6 和 rspec-rails 1.2.6 作为插件。
我的问题是规范无法访问我的应用程序类或任何 rails 标准库。
首先我必须使用来自 RAILS_ROOT 的完整路径来指定我想要测试的模型类,但现在当它加载类时,我得到以下内容
/app/models/person.rb:1: 未初始化的常量 ActiveRecord (NameError) 来自 ./spec/models/person_spec.rb:1:in `require' 来自 ./spec/models/person_spec.rb:1 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:15:in `load' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:15:in `load_files' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:14:in `each' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/example_group_runner.rb:14:in `load_files' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/options.rb:99:in `run_examples' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/lib/spec/runner/command_line.rb:9:in `run' 来自 /Users/law/Projects/roster/vendor/plugins/rspec/bin/spec:4 耙中止!我通过从应用程序的根目录调用 rake spec 来启动 rspec。
关于在这种情况下可能缺少什么的任何想法?
【问题讨论】:
我发现添加 require 'spec/spec_helper.rb' 似乎可以解决问题,但肯定这是默认包含的内容,而不是每个文件中的内容? 【参考方案1】:您确实需要在您编写的每个规范文件中包含spec_helper.rb
....
您可以通过这种方式运行单个规范:
$ spec specs/models/person_spec.rb
而不是总是运行整个规范套件
【讨论】:
这就是我制定的解决方案。感觉是多余的,所以我想我希望有更好的解决方案。【参考方案2】:我没有使用规范,所以这可能无法解决您的问题,但如果您正在编写自己的 rake 任务并需要您的 rails 环境,则必须提出要求。
task(:task_name => :environment) do
# Task Implementation Here
end
【讨论】:
为帮助干杯。我不是在滚动我自己的 rake 任务,而是看了一下,它已经为相关任务运行了一个非常复杂的依赖结构。所以我不确定我想搞砸它。以上是关于rake 规范不使用 rails 环境的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 中使用环境将参数传递给 Rake 任务? [复制]
rake db rake 任务不工作 Ruby 2.4.0 & Rails 5.0.1
在 Elastic Beanstalk 环境中运行 Rails rake 任务