gpt4 book ai didi

ruby - Gem 中的测试需要测试迁移生成器并为测试应用迁移

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:28 24 4
gpt4 key购买 nike

我正在开发一个 Gem,它包含一个迁移生成器和一堆模型、类等,它们利用在迁移过程中创建的表。

虽然测试迁移生成器本身很容易——有大量教程可以完成这项工作,但我正在努力解决的是如何在测试数据库上实际运行迁移,以便稍后测试 gem与测试数据交互?

由于 gem 没有 schema.rb,我不知道该怎么做。

最佳答案

这就是我在代码中运行迁移的方式;

  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
ActiveRecord::Migration.verbose = false

@migration = Class.new(ActiveRecord::Migration) do

def change
create_table :users, :force => true do |t|
t.string :roles_mask
end
create_table :user_without_roles, :force => true do |t|
t.string :roles_mask
end
create_table :user_without_role_masks, :force => true do |t|
end
end

end

@migration.new.migrate(:up)

如果您有一个包含生成的迁移的字符串,您可以在测试设置中执行类似的操作;

  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
ActiveRecord::Migration.verbose = false

# Or however you intend to grab the output of the migration generator
migration_string = ERB.new(File.read(<file name here>)).result

migration = Class.new(ActiveRecord::Migration)
migration.class_eval(migration_string)
migration.new.migrate(:up)

这应该会使用您生成的迁移为您提供迁移后的数据库。

关于ruby - Gem 中的测试需要测试迁移生成器并为测试应用迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9937536/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com