【问题标题】:Heroku could not detect rake tasks (LoadError: cannot load such file -- rspec/core/rake_task)Heroku 无法检测到 rake 任务(LoadError: cannot load such file -- rspec/core/rake_task)
【发布时间】:2015-04-19 16:26:42
【问题描述】:

我正在使用 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 是否仅在您的捆绑包中用于开发/生产?
  • @FrederickCheung 它只是在开发组中。这会是问题吗?

标签: ruby-on-rails ruby heroku


【解决方案1】:

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

在 rspec docs 他们建议这样做:

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

因此,没有 rspec 不会阻止您的 rakefile 加载。

【讨论】:

  • 哦,对了。我有一个稍微复杂一点的版本,但被注释掉了。我已将其添加到帖子中以供参考。
【解决方案2】:

FWIW,我刚刚遇到了同样的问题。我通过将rspec-rails 移动到生产环境来修复它,如下所示。我不知道它为什么有效,但它对我有效。

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

【讨论】:

  • 将 rspec-rails 投入生产是个好主意吗?
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2014-03-08
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多