rake db:迁移不适用于travis-ci构建

我正在尝试在Travis-CI上从github构建我的Ruby on Rails项目,但我遇到了迁移问题。 它为迁移运行了一个rake任务,但在此之后它抱怨了相同的迁移步骤。

它遵循我的.travis.yml文件:

language: ruby rvm: - 1.9.2 before_script: - "rake db:migrate RAILS_ENV=test" 

这是构建输出:

 1Using worker: ruby4.worker.travis-ci.org:travis-ruby-3 2 3 4 5$ cd ~/builds 6 7 8$ git clone --depth=100 --quiet git://github.com/rafaelportela/bacilo.git rafaelportela/bacilo 9 10 11 12$ cd rafaelportela/bacilo 13 14$ git checkout -qf 7553b7351b7a642e39ea7b55204de6cd4f320c36 15 16 17$ export TRAVIS_RUBY_VERSION=1.9.2 18 19$ rvm use 1.9.2 20Using /home/vagrant/.rvm/gems/ruby-1.9.2-p290 21 22$ ruby --version 23ruby 1.9.2p290 (2011-07-09 revision 32553) [i686-linux] 24 25$ gem --version 261.8.17 27 28 29$ export BUNDLE_GEMFILE=/home/vagrant/builds/rafaelportela/bacilo/Gemfile 30 31$ bundle install 32Fetching gem metadata from https://rubygems.org/....... 33Using rake (0.9.2.2) 34Installing i18n (0.6.0) 35Installing multi_json (1.3.4) 36Installing activesupport (3.2.2) 37Installing builder (3.0.0) 38Installing activemodel (3.2.2) 39Installing erubis (2.7.0) 40Installing journey (1.0.3) 41Installing rack (1.4.1) 42Installing rack-cache (1.2) 43Installing rack-test (0.6.1) 44Installing hike (1.2.1) 45Installing tilt (1.3.3) 46Installing sprockets (2.1.3) 47Installing actionpack (3.2.2) 48Installing mime-types (1.18) 49Installing polyglot (0.3.3) 50Installing treetop (1.4.10) 51Installing mail (2.4.4) 52Installing actionmailer (3.2.2) 53Installing arel (3.0.2) 54Installing tzinfo (0.3.33) 55Installing activerecord (3.2.2) 56Installing activeresource (3.2.2) 57Installing bcrypt-ruby (3.0.1) with native extensions 58Installing coffee-script-source (1.3.1) 59Installing execjs (1.3.1) 60Installing coffee-script (2.2.0) 61Installing rack-ssl (1.3.2) 62Installing json (1.7.0) with native extensions 63Installing rdoc (3.12) 64Installing thor (0.14.6) 65Installing railties (3.2.2) 66Installing coffee-rails (3.2.2) 67Installing orm_adapter (0.0.7) 68Installing warden (1.1.1) 69Installing devise (2.0.4) 70Installing jquery-rails (2.0.2) 71Installing pg (0.13.2) with native extensions 72Using bundler (1.1.3) 73Installing rails (3.2.2) 74Installing sass (3.1.16) 75Installing sass-rails (3.2.5) 76Installing sqlite3 (1.3.6) with native extensions 77Installing uglifier (1.2.4) 78Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. 79Post-install message from rdoc: 80Depending on your version of ruby, you may need to install ruby rdoc/ri data: 81 82= 1.9.2 : nothing to do! Yay! 86 87 88$ rake db:migrate RAILS_ENV=test 89== DeviseCreateUsers: migrating ============================================== 90-- create_table(:users) 91 -> 0.0174s 92-- add_index(:users, :email, {:unique=>true}) 93 -> 0.0017s 94-- add_index(:users, :reset_password_token, {:unique=>true}) 95 -> 0.0010s 96== DeviseCreateUsers: migrated (0.0239s) ===================================== 97 98 99$ bundle exec rake 100You have 1 pending migrations: 101 20120508052346 DeviseCreateUsers 102Run `rake db:migrate` to update your database then try again. 103 104 105Done. Build script exited with: 1 

我很感激任何建议! =]

当我试图让我的Rails 3.2应用程序与Travis CI一起工作时, 这篇博客文章给了我极大的帮助,并写了一个实际工作的.travis.yml文件。 这是我的参考,所以希望它有所帮助:

.travis.yml

 language: ruby rvm: - 1.9.2 - 1.9.3 env: - DB=sqlite - DB=mysql - DB=postgresql script: - RAILS_ENV=test bundle exec rake db:migrate --trace - bundle exec rake db:test:prepare - bundle exec rspec spec/ before_script: - mysql -e 'create database my_app_test' - psql -c 'create database my_app_test' -U postgres bundler_args: --binstubs=./bundler_stubs 

而不是运行rake db:migrate RAILS_ENV=test run rake db:test:prepare

这是因为rake db:migrate将针对您的测试数据库运行所有迁移,如果您进行了大量迁移,这可能需要很长时间。 db:test:prepare任务不会这样做,而只是使用db/schema.rb的模式设置测试数据库。

试一试,看看是否有效。

为我解决问题的解决方案是运行: rake db:schema:load而不是rake db:migrate RAILS_ENV=test