1

コンピューターで動作する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 のテスト句を使用する必要があります。

考え?

4

0 に答える 0