Sinatra和ActiveRecord(无Rails) - 创建测试数据库

时间:2015-11-03 00:52:15

标签: ruby-on-rails sinatra sinatra-activerecord

我尝试使用ActiveRecord使用Sinatra的更简单的设置,我遇到了一些令人费解的问题,并且会喜欢另一组眼睛。我将提供所有相关文件:

database.yml中:

development:
  adapter: sqlite3
  database: db/development.sqlite3

test:
  adapter: sqlite3
  database: db/test.sqlite3

production:
  url: <%= ENV['DATABASE_URL'] %>

Rake文件:

require_relative "demo_app"
require 'sinatra/activerecord/rake'
require 'rake/testtask'

Rake::TestTask.new do |t|
  t.pattern = "test/*_test.rb"
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!

迁移文件:

class CreatePeople < ActiveRecord::Migration
  def change
    create_table :people do |t|
      t.string :name
      t.date :dob
      t.string :gender
      t.string :gender
      t.integer :zipcode
    end
  end
end

现在,我想针对测试数据库运行测试。我试图做的时候

rake db:create RAILS_ENV=test - 它创建了一个development.sqlite3

rake db:migrate RAILS_ENV=test - 同样的+运行迁移

我知道我在Rails之外使用ActiveRecord,所以我怀疑问题出在与database.yml或某些环境变量或其他东西的处理有关的地方。但我无法弄明白。

思想?

1 个答案:

答案 0 :(得分:6)

尝试使用OUTPUT=`/usr/bin/time -o timefile --format="%U" date` TIME=$(<timefile) 代替RACK_ENV

RAILS_ENV

或者:

$ rake db:create RACK_ENV=test