2012-05-14 8 views
13

Ich versuche mein Ruby on Rails-Projekt von Github auf Travis-CI zu erstellen, aber ich stoße auf ein Migrationsproblem. Es führt eine Rake-Aufgabe für die Migration aus, beschwert sich aber danach über denselben Migrationsschritt.Rake db: Migration funktioniert nicht auf travis-ci build

Es folgt meine .travis.yml Datei:

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

Und hier ist die Build-Ausgabe:

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 

ich jeden Vorschlag schätzen würde! =]

+0

Hallo rafael, Ich nehme an, dass Sie Ihre Testumgebung auf einer SQLite3-Datenbank mit In-Memory-Nutzung ausführen, oder? Weil ich mit dem gleichen Problem zu kämpfen bin kombiniert aus: - ** travis-ci ** - ** ** SQLite {Datenbank: "**: memory: **"} ich bin auch fragen, , weil diese Einstellung auch als Beispiel im [travis-ci doc] (http://docs.travi-ci.com/user/database-setup/#SQLite3) empfohlen/gegeben wird. – loybert

+0

das funktioniert, aber Sie müssen es möglicherweise ändern, um 'Bündel exec Rake db: migrieren RAILS_ENV = test' – equivalent8

Antwort

28

This blog post hat mir enorm geholfen, als ich versuchte, meine Rails 3.2 App mit Travis CI zu arbeiten und eine .travis.yml Datei zu schreiben, die tatsächlich funktionierte. Hier ist meins für Ihre Referenz, so hoffe es hilft:

.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 
+0

Danke. Wie hast du die Datenbank.yml für Travis verwaltet? und kannst du bitte den Inhalt der Bundler_stubs-Datei posten? –

+0

@Pratick, hoffentlich sollten Sie Ihre Antworten von [dieser StackOverflow Frage] (http://stackoverflow.com/q/11156627/567863) erhalten. –

6

Anstatt rake db:migrate RAILS_ENV=test laufen zu lassen rake db:test:prepare statt.

Dies ist, weil rake db:migratealle die Migrationen gegen Ihre Test-Datenbank ausgeführt wird, die sehr lange dauern könnte, wenn Sie viele Migrationen hatten. Der Task db:test:prepare wird dies nicht tun, stattdessen wird nur die Testdatenbank mit dem Schema von db/schema.rb eingerichtet.

Geben Sie das eine Chance und sehen, ob das funktioniert.

+1

Dies ist im Allgemeinen eine schlechte Idee. Sie möchten, dass Ihre Testumgebung Probleme findet, die möglicherweise in der Produktion auftreten können. In der Produktion führen Sie Migrationen durch und laden Ihr Schema nicht aus Ihrer db/schema.rb. Um mögliche Probleme mit Migrationen zu finden, die bei der Produktion auftreten können, ist es besser, 'rake db: migrate' zu ​​verwenden. –

0

Die Lösung, die das Problem für mich festgelegt wurde ausgeführt: rake db:schema:load statt rake db:migrate RAILS_ENV=test

Verwandte Themen