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

pit*_*las 2 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'] %>
Run Code Online (Sandbox Code Playgroud)

Rake文件:

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

Rake::TestTask.new do |t|
  t.pattern = "test/*_test.rb"
end
Run Code Online (Sandbox Code Playgroud)

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!
Run Code Online (Sandbox Code Playgroud)

迁移文件:

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
Run Code Online (Sandbox Code Playgroud)

现在,我想对测试数据库运行测试.当我尝试做的时候

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

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

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

思考?

Jor*_*ing 7

尝试RACK_ENV而不是RAILS_ENV:

$ rake db:create RACK_ENV=test
Run Code Online (Sandbox Code Playgroud)

要么:

$ RACK_ENV=test rake db:create
Run Code Online (Sandbox Code Playgroud)