如何访问RoR中environment.rb中定义的变量?

时间:2009-04-05 05:18:50

标签: ruby-on-rails ruby

我想在 environment.rb 中创建一个线程对象,并在某些控制器的其他操作中使用它。

我该怎么办?

提前致谢。


实际上,我希望永久运行三个进程,这些进程可以获取一些数据并将其存储在数据库中。这就是我使用线程的原因。有没有其他方法可以这样做?

3 个答案:

答案 0 :(得分:3)

要回答您的初始问题,环境.rb中声明的常量在整个代码库中都可用。但是,如果可以,请避免这样做;这可以很快成为配置意大利面。

更广泛地说,尽管Rails(从我的理解)自2.2版以来一直是线程安全的,但线程仍然非常罕见 - 特别是在MRI中 - 作为提供并发操作的一种方式,并且MRI的绿色线程无论如何都不是特别有帮助。考虑使用像Starling这样的消息队列来驱动其他Ruby进程来执行异步工作。

答案 1 :(得分:0)

要非常小心。据我所知,rails不是线程安全的。并试图在面对所有魔法时安全地使用线程(对不起,“元编程”)它听起来有风险,因为所有人都会离开。

为什么你还想要一个线程对象?

在回复评论时,说rails是线程安全的might not mean as much as you think。如果我不需要的话,我一定很谨慎。

答案 2 :(得分:0)

除了Brian所说的,还要考虑使用初始化程序(放入config / initializers来执行它)。我认为它比使用environment.rb更清晰。