Heroku无法检测到rake任务(LoadError:无法加载此类文件 - rspec / core / rake_task)

时间:2015-04-19 16:26:43

标签: ruby-on-rails ruby heroku

我正在使用travisCI部署到heroku,我收到此错误。它刚刚开始发生。

我有基本的rails Rakefile,我有一个看起来像这样的文件,否则travis无法检测到rake任务:

# lib\tasks\spec.rake
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new
task :default => :spec

为什么会针对heroku专门显示此错误?

编辑 - 我给出了(更好)答案的类似版本:

begin
  require 'rspec/core/rake_task'
  desc "Run all examples"
  RSpec::Core::RakeTask.new(:spec) do |t|
    t.rspec_opts = %w[--color]
    t.pattern = 'spec/*_spec.rb'
  end
 rescue LoadError
end

3 个答案:

答案 0 :(得分:8)

如果rspec不在生产组中(通常不是),那么在像heroku这样的生产环境中运行时,您发布的代码将失败。

在rspec docs中,他们建议这样做:

begin
  require 'rspec/core/rake_task'
  RSpec::Core::RakeTask.new(:spec)
rescue LoadError
end

因此缺少rspec不会阻止你的rakefile加载。

答案 1 :(得分:0)

您可以编辑Gemfile,以将rspec gem添加到生产组中。例如。

group :production, :test do
    gem 'rspec-rails', '~> 3.5'
end

答案 2 :(得分:0)

FWIW,我只是遇到了同样的问题。我通过将rspec-rails移至生产环境进行了修复,如下所示。我不知道为什么会这样,但是对我有用。

group :production, :development, :test do
  gem 'rspec-rails', '~> 3.8'
end