我有一个在我的计算机上运行的 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 的测试子句。
想法?