Как получить доступ к переменным, определенным в environment.rb в RoR? - PullRequest
2 голосов
/ 05 апреля 2009

Я хочу создать объект потока в environment.rb и использовать его в каком-либо другом действии какого-либо контроллера.

Как мне это сделать?

Заранее спасибо.


На самом деле, я хочу, чтобы три процесса выполнялись постоянно, которые выбирают некоторые данные и хранят их в базе данных. Вот почему я использую темы. Есть ли другой способ сделать это?

Ответы [ 3 ]

3 голосов
/ 05 апреля 2009

Чтобы ответить на ваш первоначальный вопрос, константы, объявленные в environment.rb, доступны по всей базе кода. Избегайте этого, если можете; это может довольно быстро стать конфигурацией спагетти.

В более широком смысле, хотя Rails был (из того, что я понимаю) поточно-ориентированным, начиная с версии 2.2, потоки все еще довольно редки - особенно в MRI - как способ обеспечения параллельной работы, а зеленые потоки MRI в любом случае не особенно полезны , Подумайте об использовании очереди сообщений типа Starling , которая раскручивает другие процессы Ruby для выполнения асинхронной работы.

0 голосов
/ 05 апреля 2009

В дополнение к тому, что говорит Брайан, рассмотрите возможность использования инициализатора (поместите в config / initializer для его выполнения). Я думаю, что это делает намерение более ясным, чем использование environment.rb.

0 голосов
/ 05 апреля 2009

Будьте очень осторожны с этим. Насколько я знаю, рельсы не являются потокобезопасными. И пытаясь безопасно использовать потоки перед лицом всей магии (извините, «метапрограммирование»), звучит рискованно, когда все выходят.

Зачем вам нужен объект потока?

В ответ на комментарий, сказать, что rails безопасен для потоков может означать не так много, как вы думаете . Я, конечно, буду осторожен, если буду в этом нуждаться.

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