気の向くままに書き綴る

勉強会参加したメモや日々の思ったことのメモ等

TravisCIの設定:Rails4.0.0 MySQL

.travis.ymlを[RAILS_ROOT]に配置して、以下のように設定。

$ cat .travis.yml
language: ruby
rvm:
  - 2.0.0
gemfile:
  - Gemfile
env:
  - DB=mysql
script:
  - cd matsuri2
  - bundle install --standalone --clean
  - RAILS_ENV=test bundle exec rake --trace db:create
  - RAILS_ENV=test bundle exec rake --trace db:migrate
  - bundle exec rake db:test:prepare
  - bundle exec rspec spec/

 

TravisCI用にdatabese.ymlを変更。

usernameとpasswordは空で、

hostはローカルホストに設定。

socketはデフォルトのまま。

 

$ cat config/database.yml

・・・・・・

test:
  adapter: mysql2
  encoding: utf8
  database: matsuri2_test
  pool: 5
  username:
  password:
  host: 127.0.0.1
  socket: /tmp/mysql.sock

後は、GithubへコミットすることでtravisCIが動いてくれます。

 

番外編:作業時にハマったところ

 

$ bundle exec rspec spec/
`require': cannot load such file -- spec_helper (LoadError)

 

rails g rspec:install で解決

 

$ rails g rspec:install
      create  .rspec
       exist  spec
      create  spec/spec_helper.rb

解決!

 

$ bundle exec rspec spec/

 Could not find table 'table名'

 

→rake db:test:prepareで解決

$ rake db:test:prepare

解決!

 

自分の環境で動かしてみると

$ bundle exec rspec spec/

:in `check_pending!': Migrations are pending; run 'rake db:migrate RAILS_ENV=test' to resolve this issue. (ActiveRecord::PendingMigrationError)

 

→あら、確かにtestでのmigrationをしたことがなかったかも

$ rake db:migrate RAILS_ENV=test

もう一度

$ bundle exec rspec spec/

 

動いた-