我正在尝试在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.8.6 : unsupported
83 = 1.8.7 : gem install rdoc-data; rdoc-data --install
84 = 1.9.1 : gem install rdoc-data; rdoc-data --install
85>= 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
我很感激任何建议! =]
答案 0 :(得分:30)
This blog post给了我极大的帮助,并写了一个实际有效的.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
答案 1 :(得分:6)
而不是运行rake db:migrate RAILS_ENV=test
运行rake db:test:prepare
。
这是因为rake db:migrate
将针对您的测试数据库运行所有迁移,如果您进行了大量迁移,这可能需要很长时间。 db:test:prepare
任务不会这样做,而是只使用db/schema.rb
中的模式设置测试数据库。
试一试,看看是否有效。
答案 2 :(得分:0)
为我解决问题的解决方案是:
rake db:schema:load
代替rake db:migrate RAILS_ENV=test