我想在 environment.rb 中创建一个线程对象,并在某些控制器的其他操作中使用它。
我该怎么办?
提前致谢。
实际上,我希望永久运行三个进程,这些进程可以获取一些数据并将其存储在数据库中。这就是我使用线程的原因。有没有其他方法可以这样做?
答案 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更清晰。