Głównie inspirowana z tego postu: http://blog.markstarkman.com/blog/2013/01/23/using-sqlite-to-test-active-record-models/
Po pierwsze, w swojej gemspec można dodać ActiveRecord i sqlite3 jako zależności tak:
spec.add_development_dependency "activerecord", "~> 4.0.0"
spec.add_development_dependency "sqlite3"
Następnie w specyfikacji/schema.rb, można zdefiniować schemat tak:
ActiveRecord::Schema.define do
self.verbose = false
create_table :users, :force => true do |t|
t.string :key
t.string :name
t.integer :age
t.datetime :dob
t.timestamps
end
end
Następnie można tworzyć modele w pliku models.rb:
class User < ActiveRecord::Base
end
W swojej spec_helper.rb, chcesz połączyć się z bazą danych sqlite w pamięci, należy załadować schematu i wymagają modele:
require 'active_record'
ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
load File.dirname(__FILE__) + '/schema.rb'
require File.dirname(__FILE__) + '/models.rb'
musiałem zmienić 'wymagają„activerecord'' do być 'require 'active_record'. Bardzo łatwo zepsuć. Dziękuję za odpowiedź. Wątpię, bym zauważył mój problem bez iti. – wuliwong
Być może nie jest to dobry pomysł, ponieważ różne adaptery, na przykład sqlite3, mysql i postgresql, są w rzeczywistości różne. Aby uzyskać bardziej wszechstronny test, musisz przetestować wszystkie 3 adaptery. Jednak adaptery z wyjątkiem sqlite3 są nieco trudne do przetestowania w czasie instalacji. Dlatego wolę przetestować je tylko w czasie projektowania. – Robert