2015-11-03 24 views
1

我正在尝试使用Sinatra和ActiveRecord更简单的设置,我遇到了一些令人困惑的问题,并且会爱上它的另一组眼睛。我会给所有相关的文件:Sinatra和ActiveRecord(无轨) - 创建测试数据库

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

我知道我使用ActiveRecord以外的Rails的,所以我怀疑问题出地方有关处理database.yml或者一些环境变量什么的。但我无法弄清楚。

想法?

回答

4

尝试RACK_ENV而不是RAILS_ENV

$ rake db:create RACK_ENV=test 

或者:

$ RACK_ENV=test rake db:create 
+0

有趣:创建一个空的test.sqlite3(0字节) – pitosalas

+0

好了,这是什么'分贝:migrate'呢? –

+0

Ah:RACK_ENV = test rake db:migrate似乎有效,RACK_ENV = test rake db:seed也是如此。他们正在创建测试数据库。你能解释一下rails_env和rack_env之间的关系吗? – pitosalas