【发布时间】:2015-05-04 10:53:13
【问题描述】:
我有以下 Rakefile:
require File.expand_path('../config/application', __FILE__)
A4aa2::Application.load_tasks
if defined? RSpec
task(:default).clear
task default: :'spec:fuubar'
namespace :spec do
desc 'Run all specs in spec directory (with Fuubar formatter)'
RSpec::Core::RakeTask.new(:fuubar) do |task|
task.rspec_opts = [task.rspec_opts.to_s, '--color --format Fuubar'].compact.join ' '
end
end
end
我明确检查了if defined? RSpec,但这并不能防止出现以下错误:
rake db:seed RAILS_ENV=production --trace
rake aborted!
NameError: uninitialized constant RSpec::Core
/Users/josh/Documents/Work/Access4All/projects/a4aa2/src/Rakefile:13:in `block in <top (required)>'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/task_manager.rb:209:in `in_namespace'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/dsl_definition.rb:147:in `namespace'
/Users/josh/Documents/Work/Access4All/projects/a4aa2/src/Rakefile:11:in `<top (required)>'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/rake_module.rb:28:in `load'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/rake_module.rb:28:in `load_rakefile'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:689:in `raw_load_rakefile'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:94:in `block in load_rakefile'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:93:in `load_rakefile'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:77:in `block in run'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:176:in `standard_exception_handling'
/Users/josh/.rvm/gems/ruby-2.1.0@a4aa2/gems/rake-10.4.2/lib/rake/application.rb:75:in `run'
/Users/josh/Documents/Work/Access4All/projects/a4aa2/src/bin/rake:4:in `<main>'
我是否也必须检查 RSpec::Core 是否已定义?无论如何,RSpec 是在生产环境中定义的吗?
我的Gemfile 看起来像这样:
group :development, :test do
gem 'rspec'
gem 'rspec-rails' # RSpec for Rails
我不想将 RSpec 放入:production 组,这就是我检查RSpec 是否在Rakefile 中定义的原因,但似乎RSpec 是 在:production 中定义(虽然我只在:development 和:test 组中加载它),而RSpec::Core 没有。
【问题讨论】:
-
能否使用 --trace 添加/共享错误日志?
-
您是否检查过 Gemfile 中的“gem 'spork', github: 'sporkrb/spork'”?
-
这和spork有什么关系?
-
是您 gemfile 中测试组中的 rspec gem 吗?
标签: ruby-on-rails ruby rspec seeding