我能够推送到heroku,现在我需要迁移数据库但是我得到错误rake中止了!
我运行命令heroku rake db:migrate并且我的命令行错误是
WARNING: `heroku rake` has been deprecated. Please use `heroku run rake` instead.
Running `rake db:migrate` attached to terminal... up, run.6184
rake aborted!
uninitialized constant MiniTest::Rails
/app/vendor/bundle/ruby/2.0.0/gems/minitest-4.7.5/lib/minitest/unit.rb:19:in `const_missing'
/app/Rakefile:9:in `<top (required)>'
(See full trace by running task with --trace)
然后我跑了命令
Running `rake db:migrate` attached to terminal... up, run.8495
rake aborted!
uninitialized constant MiniTest::Rails
/app/vendor/bundle/ruby/2.0.0/gems/minitest-4.7.5/lib/minitest/unit.rb:19:in `const_missing'
/app/Rakefile:9:in `<top (required)>'
(See full trace by running task with --trace)
这是我的Rakefile的副本
#!/usr/bin/env rake
# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
require File.expand_path('../config/application', __FILE__)
require 'rake/dsl_definition'
require 'rake'
Portfolio::Application.load_tasks
MiniTest::Rails::Testing.default_tasks << "features"
这里也是我的Gemfile的副本
group :development, :test do
gem "minitest-rails"
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
group :test do
gem "minitest-rails-capybara"
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
# gem 'therubyracer', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
# To use ActiveModel has_secure_password
# gem 'bcrypt-ruby', '~> 3.0.0'
# To use Jbuilder templates for JSON
# gem 'jbuilder'
# Use unicorn as the app server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'debugger'
任何人都确定我的问题是什么以及为什么我无法迁移到heroku?
答案 0 :(得分:2)
你的gemfile在:test组中只有minitest,这很好,但是你的rake文件试图使用MiniTest类。试试这个:
if Rails.env == "test"
MiniTest::Rails::Testing.default_tasks << "features"
end
答案 1 :(得分:1)
原因如下: uninitialized constant MiniTest::Rails
您仅为开发和测试环境指定了minitest-rails。默认情况下,heroku在生产环境中运行应用程序,并且您没有针对prod的minitest-rails。
以及仅为测试运行测试任务的条件:
MiniTest :: Rails :: Testing.default_tasks&lt;&lt; “功能”如果Rails.env =='test'
答案 2 :(得分:0)
jeanaux和rb512肯定是在正确的轨道上,谢谢!
Heroku使用Rakefile
,您无法引用MiniTest:Rails
模块,因为该gem仅包含在Gemfile
我必须做的是检查测试和开发环境,让Rake再次工作。
if (Rails.env == "test" || Rails.env == "development")
MiniTest::Rails::Testing.default_tasks << "features"
end