我有一些奇怪的问题正在进行(对于一个非常奇怪的用例,我会解释一下)。我正在使用postgres模式设置多租户应用程序以实现数据多租户。ruby加载文件异步?
我系统中的每个company
都会得到自己的模式。我完成此工作的方式是在模型上创建一个after_commit
,然后创建一个新的postgres架构,并将schema.rb
加载到该模型中。 (复制自rake db:schema:load
代码)使用ruby load
。
你可以看到宝石here
无论如何,这一切工作(控制台)。创建一个公司创建新的模式,我可以切换到它等等...我的问题在于我的集成测试。我有一个像这样创建的公司一个RSpec测试:
before do
@c1 = Factory :company
@c2 = Factory :company
end
有什么奇怪的是,我开始变得对DB模式装载日志,但他们被截断。就好像它们并行发生一样。下面是一个示例输出:
>> create: database: unique_name1
-- create_table("first_table_in_schema_rb", {:force=>true})
>> create: database: unique_name2
create: database
是我的日志行中,-- create_table
是schema.rb
本身。
正如您所看到的,第二个create: database
似乎发生在我从第一家公司创建时加载schema.rb
时发生。
有谁知道load
是不是异步?我知道红宝石没有真正的线程,但它可以使用光纤或什么?这真让我感到困惑,因为当我的测试出现时,本来意图创建的postgres模式似乎并不存在。
的Rails 3.0.8
的Ruby 1.9.2