【问题标题】:Sinatra and ActiveRecord (no Rails) - Creating test databaseSinatra 和 ActiveRecord(无 Rails) - 创建测试数据库
【发布时间】:2016-02-03 01:10:32
【问题描述】:

我正在尝试一个更简单的设置,以便将 Sinatra 与 ActiveRecord 结合使用,但我遇到了一些令人费解的问题,希望能有另一双眼睛关注它。我将提供所有相关文件:

数据库.yml:

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

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

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

瑞克文件:

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 或某些环境变量或其他东西的处理有关的某个地方。但我无法弄清楚。

想法?

【问题讨论】:

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


    【解决方案1】:

    尝试RACK_ENV 而不是RAILS_ENV

    $ rake db:create RACK_ENV=test
    

    或者:

    $ RACK_ENV=test rake db:create
    

    【讨论】:

    • 有趣:创建一个空的 test.sqlite3 (0 bytes)
    • 好的,db:migrate 是做什么的?
    • 啊:RACK_ENV=test rake db:migrate 似乎有效,RACK_ENV=test rake db:seed 也是如此。他们正在创建测试数据库。能解释一下 rails_env 和 rack_env 的关系吗?
    • Rack 是 Sinatra 使用的 Web 服务器接口(顺便说一下,R​​ails 也使用它)。 RACK_ENV 的作用与 Sinatra 中的 RAILS_ENV 相同。
    • RACK_ENVRAILS_ENV 的用途不同。 github.com/rack/rack/blob/…
    猜你喜欢
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2018-09-03
    • 2014-12-15
    • 2022-12-07
    • 1970-01-01
    相关资源
    最近更新 更多