用TravisCI和PostgreSQL 9.4测试Rails应用程序

我想做的事情。

我想使用最新的PostgreSQL(9.4)来测试使用Rails的应用程序,使用TravisCI。

顺便测试一下我正在使用的本地SQLite3。

暂时放下MySQL。

步驟

Gemfile(摘录)

group :development, :test do
  gem 'sqlite3', '~> 1.3.10'
end

group :production, :test do
  gem 'pg', '~> 0.17.1'
end

测试中安装sqlite3和pg,为了在我的Mac上运行,需要安装postgresql是一个困难。

config/database.travis.yml 的配置文件

在执行测试之前,准备好适用于TravisCI的database.yml文件,并进行复制。

sqlite: &sqlite
  adapter: sqlite3
  database: db/<%= Rails.env %>.sqlite3

postgresql: &postgresql
  adapter: postgresql
  username: postgres
  password:
  database: YOUR_APP_NAME_<%= Rails.env %>
  min_messages: ERROR

defaults: &defaults
  pool: 5
  timeout: 5000
  host: localhost
  <<: *<%= ENV['DB'] || "postgresql" %>

development:
  <<: *defaults

test:
  <<: *defaults

production:
  <<: *defaults

.travis.yml(节选)

我指定了各种预处理。

before_install : PostgreSQL 9.4をインストール

走ってるpostgresqlを止める
PostgreSQL 9.1〜9.3を削除

pg_hba.conf を書き換え

http://www.postgresql.org/docs/9.4/static/auth-pg-hba-conf.html
デフォルトではUnixユーザとpostgresのユーザ名が違うと怒られる

env : sqliteとpostgresqlでテストするよ、と宣言

script : テストを実行するコマンド

before_script : テスト実行前の操作

config/database.travis.yml をコピー
テスト用データベースを作成

before_install:
  - sudo /etc/init.d/postgresql stop
  - sudo apt-get update
  - sudo apt-get purge postgresql-9.1 postgresql-9.2 postgresql-9.3
  - sudo apt-get language-pack-es postgresql-9.4
  - sudo chmod 777 /etc/postgresql/9.4/main/pg_hba.conf
  - sudo echo "local   all         postgres                          trust" >  /etc/postgresql/9.4/main/pg_hba.conf
  - sudo echo "local   all         all                               trust" >> /etc/postgresql/9.4/main/pg_hba.conf
  - sudo echo "host    all         all         127.0.0.1/32          trust" >> /etc/postgresql/9.4/main/pg_hba.conf
  - sudo echo "host    all         all         ::1/128               trust" >> /etc/postgresql/9.4/main/pg_hba.conf
  - sudo /etc/init.d/postgresql restart
  - psql --version
env:
  - DB=sqlite
  - DB=postgresql
script:
  - RAILS_ENV=test bundle exec rake db:migrate --trace
  - bundle exec rake db:test:prepare
  - bundle exec rake
before_script:
  - cp config/database.travis.yml config/database.yml
  - psql -c 'create database YOUR_APP_NAME_test' -U postgres

请参考以下链接。

(Translation: Please refer to the following link.)

    • http://stackoverflow.com/questions/9321153/rails-database-setup-on-travis-ci

 

    • http://docs.travis-ci.com/user/using-postgresql/

 

    • https://github.com/travis-ci/travis-ci/issues/2983

 

    https://code.google.com/p/plv8js/source/browse/.travis.yml

自言自语

    • HerokuはまだPostgreSQLが9.3なので、Travisで用意されている9.3を使えば簡単だったはず

 

    • でも近いうちに上がるだろうし、9.4でやらない理由はない

 

    …と思ったらわりといらない苦労をしてしまった
广告
将在 10 秒后关闭
bannerAds