23

在heroku(heroku run console...)中运行控制台时出现以下错误。该应用程序运行没有问题,但我似乎无法运行控制台,因此在开发中我没有这个问题。

/app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require': cannot load such file -- test/unit/testcase (LoadError)
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `block in require'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/test_case.rb:1:in `<top (required)>'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `block in require'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/console/app.rb:2:in `<top (required)>'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `block in require'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:236:in `load_dependency'
from /app/vendor/bundle/ruby/1.9.1/gems/activesupport-3.2.9/lib/active_support/dependencies.rb:251:in `require'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application.rb:304:in `initialize_console'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/application.rb:152:in `load_console'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:27:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands/console.rb:8:in `start'
from /app/vendor/bundle/ruby/1.9.1/gems/railties-3.2.9/lib/rails/commands.rb:41:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

这是我的 Gemfile:

source 'http://rubygems.org'
ruby '1.9.3'

gem 'rails', '3.2.9'

gem 'oauth', '~> 0.4.4'
gem 'twitter', '~> 1.4.1'
gem 'sendgrid'
gem 'koala'

gem 'therubyracer', '0.10.2'
gem 'execjs'

# Rails 3.1 - Asset Pipeline
gem 'json'

group :assets do
  gem 'sass-rails', "  >= 3.2.3"
  gem 'coffee-rails', ">= 3.2.1"
  gem 'uglifier', '>= 1.0.3'
  gem 'bootstrap-sass'
end

gem 'coffee-script'

gem 'jquery-rails'

gem "fog"
gem 'bootstrap-wysihtml5-rails', '0.3.1.10'

group :production do
  gem "heroku"
  gem 'pg', '0.13'
  gem 'newrelic_rpm'
  gem 'newrelic_api'
end

group :test do
  gem 'email_spec'
  gem "cucumber-rails"
  gem "rspec-rails"
  gem "capybara"
  gem 'culerity'
  gem "selenium-webdriver"
  gem "database_cleaner"
  gem 'factory_girl_rails'
end

group :development, :grades, :test do
  gem "launchy"
  gem "mysql2"
  gem "letter_opener"
  gem "pry"
  gem "rails-erd"
end

gem "airbrake"
gem "authlogic"
gem 'awesome_print'
gem 'cancan'
gem 'dalli'

#gem "oink"
gem 'validates_timeliness', '~> 3.0.2'
gem 'hpricot'
gem "ruby_parser"
gem "prawn_rails"
gem "thin"
gem "nested_form", :git => "git://github.com/ryanb/nested_form.git"
gem "meta_search"
gem "carrierwave"
gem "aws-s3"
gem "mini_magick"
gem 'will_paginate'
gem "spreadsheet"
gem "oauth-plugin", ">= 0.4.0.pre1"
gem 'flash_cookie_session'
gem 'haml-rails'
gem 'squeel'
gem 'rails_best_practices', :group => :development
gem 'simple_form'
gem 'taps', :group => :development
gem 'resque'
gem "audited-activerecord", "~> 3.0"
gem "lograge"
gem 'quiet_assets'
gem 'yajl-ruby', :require => "yajl"
gem 'switch_user'

我不知道为什么会收到此错误。有什么想法吗?谢谢

4

7 回答 7

62

对于 Rails 3.1.12 和 Ruby 2.2.0,我必须添加

gem 'test-unit'

到我的Gemfile.

于 2015-01-06T16:31:47.393 回答
7

test.slugignore文件中删除对我有用。

于 2012-12-12T10:03:04.303 回答
7

显然 Heroku 已经改变了它解释.slugignore文件的方式。

就我而言,我有rpc目录.slugignore,它清除了我的应用程序所依赖的宝石之一的rpc 子目录,导致LoadError. 我不确定 Heroku 是否有意做出这种改变。无论是否.slugignore按预期工作,删除影响行.slugignore现在应该可以解决问题。

PS 我已经为此向 Heroku 提出了支持票。

更新:根据 Heroku 支持,对.slugignore解析进行了一些更改以使其与 更加一致.gitignore,并且它按预期工作。只删除顶级目录的正确方法是 put /rpc

于 2012-12-12T10:54:26.603 回答
2

从 .slugignore 中删除测试目录解决了这个问题

于 2012-12-12T10:00:57.023 回答
1

从中删除测试目录.slugignore

于 2012-12-12T10:28:06.047 回答
0

我们今天也遇到了这个问题。我怀疑 Heroku 的 Ruby 构建包中一定发生了一些变化。

对我们来说,prototype-rails 尝试加载是一个问题,ActionView::TestCase而这又需要test/unit/testcase. 该补丁非常简单,可以作为fork使用。

如果您使用的是 Bundler,您可能需要以下内容:

gem 'prototype-rails', :git => 'git://github.com/ennova/prototype-rails.git'
于 2012-12-12T05:36:34.490 回答
-2

我尝试禁用多线程(注释掉 config.threadsafe!),这似乎暂时有效,直到 heroku 齐心协力。

于 2012-12-11T23:00:16.993 回答