Heroku could not detect rake tasks (LoadError: cannot load such file -- rspec/core/rake_task)
Heroku could not detect rake tasks (LoadError: cannot load such file -- rspec/core/rake_task)
我正在使用 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
如果 rspec 不在生产组中(通常不在),那么当 运行 在像 heroku 这样的生产环境中时,您发布的代码将失败。
在 rspec docs 他们建议这样做:
begin
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
rescue LoadError
end
因此 rspec 的缺失不会阻止您的 rakefile 加载。
您可以编辑 Gemfile 以将 rspec gem 添加到生产组中。例如。
group :production, :test do
gem 'rspec-rails', '~> 3.5'
end
FWIW,我刚遇到同样的问题。我通过将 rspec-rails
移动到生产环境来修复它,如下所示。我不知道它为什么有效,但它对我有用。
group :production, :development, :test do
gem 'rspec-rails', '~> 3.8'
end
我正在使用 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
如果 rspec 不在生产组中(通常不在),那么当 运行 在像 heroku 这样的生产环境中时,您发布的代码将失败。
在 rspec docs 他们建议这样做:
begin
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
rescue LoadError
end
因此 rspec 的缺失不会阻止您的 rakefile 加载。
您可以编辑 Gemfile 以将 rspec gem 添加到生产组中。例如。
group :production, :test do
gem 'rspec-rails', '~> 3.5'
end
FWIW,我刚遇到同样的问题。我通过将 rspec-rails
移动到生产环境来修复它,如下所示。我不知道它为什么有效,但它对我有用。
group :production, :development, :test do
gem 'rspec-rails', '~> 3.8'
end