ruby загрузить файл асинхронно? - PullRequest
0 голосов
/ 11 июня 2011

У меня происходят некоторые странные проблемы (для очень странного варианта использования, как я объясню).Я настраиваю мультитенантное приложение, используя схемы postgres для мультитенантности данных.

Каждый company в моей системе получит свою собственную схему.Я делаю это с помощью after_commit на модели при создании, которая затем создает новую схему postgres и загружает в нее schema.rb.(скопировано из rake db:schema:load кода) с использованием ruby ​​load.

Вы можете увидеть камень здесь

В любом случае, все это работает (в консоли).Создание компании создает новую схему, и я могу переключиться на нее и т. Д. ... моя проблема заключается в моих интеграционных тестах.У меня есть тест rspec, который создается для таких компаний:

before do
  @c1 = Factory :company
  @c2 = Factory :company
end

Странно, что я начинаю получать журналы о загрузке схемы БД, но они усекаются.Как будто они происходят параллельно.Вот пример выходных данных:

>> 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 как-то асинхронным?Я знаю, что у ruby ​​нет реальных нитей, но может ли это быть использование волокон или что-то?Это действительно меня запутывает, потому что когда приходит мой тест, схема postgres, которая должна была быть создана, кажется, не существует.

Rails 3.0.8
Ruby 1.9.2

Ответы [ 2 ]

0 голосов
/ 11 июня 2011

не имеет значения ... проблема не имеет ничего общего с load, это был тот факт, что я уже был подключен к wrong schema при импорте schema.rb

Было фактически выброшено исключениеэто было молча пойман где-то

0 голосов
/ 11 июня 2011

Я не уверен на 100%, что это ваша проблема, потому что я уверен в том, что происходит с require, но не с load, то, что происходит со мной когда-то с помощью require, потому что require не является атомарным, поэтому загрузка кода из файлас требованием вызовет состояние гонки.Может быть, это то, что происходит с нагрузкой, но я не смог найти никакой информации о нагрузке атомарной или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...