コンピューターで動作するsinatraアプリがあり、テストをCodeshipで実行しようとしています。私が抱えている問題を整理できるかどうかを確認するために、それを小さなサブセットに減らしました。もう一組の目をいただければ幸いです...
主なファイルは次のとおりです。
レーキファイル:
require 'sinatra/activerecord/rake'
require 'rake/testtask'
require_relative "demo_app"
Rake::TestTask.new do |t|
t.pattern = "test/*_test.rb"
end
データベース.yml
development:
adapter: sqlite3
database: db/development.sqlite3
test:
adapter: sqlite3
database: db/test.sqlite3
production:
url: <%= ENV['DATABASE_URL'] %>
demo_app.rb:
require 'sinatra/activerecord'
require './models/event'
require './models/person'
require './models/registration'
require 'pry-byebug'
移行:
class CreateEvents < ActiveRecord::Migration
def change
create_table :events do |t|
t.string :name
t.date :date
end
end
end
test_helper.rb:
ENV['RACK_ENV'] = "test"
ENV["SINATRA_ENV"] = "test"
require_relative '../demo_app'
require 'minitest/autorun'
require 'rack/test'
ActiveRecord::Migration.maintain_test_schema!
event_test.rb:
require_relative './test_helper.rb'
describe Event do
it "can add events" do
Event.create(name: "An Event")
Event.create(name: "Another Event")
Event.all.size.must_equal 2
end
end
そのため、そのコンテキストで Codeship をセットアップしました。主な設定は次のとおりです。
セットアップ コマンド:
rvm use 2.2.2
bundle install
RACK_ENV=test bundle exec rake db:migrate
テスト パイプライン (1/1)
rake test
そして今、git にプッシュし、codeship がそれを取得すると、demo_app.rb の 1 行目に次のエラーが表示されますsinatra/activerecord
。
rake aborted!
Database URL cannot be empty
.....
何らかの理由で、私がテストモードで実行しているという事実に注意を払っていないようです。したがって、database.yml のテスト句を使用する必要があります。
考え?