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 of 1)

rake test

现在,当我推送到 git 并且 codeship 将其拾取时,我在 demo_app.rb 的第 1 行收到此错误,这是一个要求sinatra/activerecord

rake aborted! Database URL cannot be empty .....

似乎由于某种原因,它没有注意我在测试模式下运行的事实,所以它应该使用 database.yml 的测试子句。

想法?

4

0 回答 0