gpt4 book ai didi

ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项?

转载 作者:数据小太阳 更新时间:2023-10-29 07:13:12 25 4
gpt4 key购买 nike

我一直致力于让我们的 Rails 2.3.8 应用程序在 JRuby 下正确运行。一切正常,直到我启用 config.threadsafe! 以实现 JRuby 提供的并发性。这导致 lib/ 中的模块和类不再自动加载。

使用 config.threadsafe!启用:

$ ruby script/runner -e production 'p Sim::Sim200Provisioner'

/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in `const_missing': uninitialized constant Sim::Sim200Provisioner (NameError)
from (eval):1

使用 config.threadsafe!禁用:

$ ruby script/runner -e production 'p Sim::Sim200Provisioner'
Sim::Sim200Provisioner

有问题的文件是 lib/sim/sim200_provisioner.rb,其中 Simapp/models/sim.rb。 Rails 通常可以轻松找到和加载文件。

我是否需要手动要求我们所有的库,或者是否有我缺少的更像 Rails 的方式来处理它?<​​/p>

最佳答案

documentation threadsafe! 提到它禁用自动依赖加载。原因是如果两个或多个线程都认为它们仍然缺少某个类,则在加载文件期间可能会出现竞争条件。

相反,您应该在 initializer 中手动require 所有您需要的文件。

关于ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3336925/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com