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

Sinatra and ActiveRecord (no Rails) - Creating test database

我正在尝试将 Sinatra 与 ActiveRecord 结合使用的更简单的设置,但我 运行 遇到了一些令人费解的问题,希望有其他人关注它。我将提供所有相关文件:

database.yml:

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

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

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

Rakefile:

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 - 相同 + 运行s 迁移

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

想法?

尝试 RACK_ENV 而不是 RAILS_ENV:

$ rake db:create RACK_ENV=test

或者:

$ RACK_ENV=test rake db:create