2

我在 Rails 2 应用程序中有一个脚本,该脚本涉及使用线程并行执行许多任务(使用并行gem)。由于 Rails(或 ActiveSupport?)加载依赖项的方式,我遇到的是未初始化常量的问题。

我的在线研究向我表明,我可能应该使用config.threadsafe!或类似的东西来解决这个问题。但是,那里的问题是我不想改变整个应用程序的工作方式(通过更改 environment.rb),因为线程的使用实际上是本地化到这个脚本的。

到目前为止,我所做的只是在创建任何新Thread对象之前初始化尽可能多的常量:

constants_to_load = [
  User,
  Merchant,
  Loggable,
  UserMailer,
  # etc.
]

# code involving threads

这显然不是一个好方法,因为它完全基于我自己猜测的需要加载哪些常量的列表(主要是在遇到异常时反应性地添加常量),并且与它所获得的未来证明相去甚远。是否可以只说“加载我可能需要的一切”之类的话?我知道这可能听起来很糟糕。这对我来说似乎是最简单的方法。但如果有另一种方法可以做到这一点,我会全力以赴。

4

0 回答 0