我有一些奇怪的問題正在進行(對於一個非常奇怪的用例,我會解釋一下)。我正在使用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