Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用config.threadsafe时,从lib/加载模块/类的正确方法是什么!选项_Ruby On Rails_Ruby - Fatal编程技术网

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

Ruby on rails 使用config.threadsafe时,从lib/加载模块/类的正确方法是什么!选项,ruby-on-rails,ruby,Ruby On Rails,Ruby,我一直在努力让我们的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/actives

我一直在努力让我们的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通常在查找和加载文件方面没有问题

我是否需要手动要求所有的lib,或者是否有一种更像Rails的方式来处理我所缺少的lib?

threadsafe
提到它禁用了自动依赖项加载。原因是,如果两个或多个线程都确定它们仍然缺少某个类,那么在加载文件期间可能会出现争用条件


相反,您应该手动
初始值设定项中需要
所有文件

文档链接不包含任何信息,因此这里有一些与#threadsafe!相关的文档:

启用线程模式。允许 对控制器的并发请求 操作和多数据库 连接。也会禁用自动 启动后加载依赖项,以及 禁用在每个服务器上重新加载代码 请求,因为这些基本上是 与线程安全性不兼容


config.autoload_路径
更改为
config.eager_load_路径

(基于和,)