Ruby on rails rake任务中的Rails循环依赖项错误仅在不删除所有内容的多线程处理时出现

Ruby on rails rake任务中的Rails循环依赖项错误仅在不删除所有内容的多线程处理时出现,ruby-on-rails,ruby,multithreading,Ruby On Rails,Ruby,Multithreading,我试图创建一个rake任务来更新数据。问题是它有点慢,所以我想我应该让它多线程来加速。问题是,当我在1个线程中运行它时,这很好,但是当我在5个线程中运行它时,我只是有时得到一个 rake aborted! Circular dependency detected while autoloading constant ClassInfo /home/Tomer/.rvm/gems/ruby-2.2.2/gems/activesupport-4.2.3/lib/active_support/depe

我试图创建一个rake任务来更新数据。问题是它有点慢,所以我想我应该让它多线程来加速。问题是,当我在1个线程中运行它时,这很好,但是当我在5个线程中运行它时,我只是有时得到一个

rake aborted!
Circular dependency detected while autoloading constant ClassInfo
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:492:in `load_missing_constant'
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:184:in `const_missing'
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:526:in `load_missing_constant'
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:184:in `const_missing'
/home/Tomer/workspace/DrexelRegistrationBackend/app/helpers/html_parse_helper.rb:66:in `block in load_class_from_link'
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:187:in `block in each'
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `upto'
/home/Tomer/.rvm/gems/ruby-2.2.2/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `each'
/home/Tomer/workspace/DrexelRegistrationBackend/app/helpers/html_parse_helper.rb:59:in `load_class_from_link'
/home/Tomer/workspace/DrexelRegistrationBackend/app/helpers/html_parse_helper.rb:43:in `block (3 levels) in load_classes_from_catalog'
/home/Tomer/workspace/DrexelRegistrationBackend/app/helpers/html_parse_helper.rb:42:in `each'
/home/Tomer/workspace/DrexelRegistrationBackend/app/helpers/html_parse_helper.rb:42:in `block (2 levels) in load_classes_from_catalog'
我正在使用nokogiri,打开一个url和html解析它,然后将它插入到我的数据库中。奇怪的是,如果我一开始就插入ClassInfo.delete\u,错误就会消失,但我不想这样做。我需要检查它是否在我的数据库中,所以我检查它是否存在于我崩溃的这一行中

myclass = ClassInfo.find_by(class_id: class_id)
它没有连接或其他依赖于它的类。这是我的迁移

create_table :class_infos do |t|
      t.text :class_id, index: true
      t.text :subject_code
      t.text :subject
      t.text :course_number
      t.text :title
      t.float :credits_lower_range
      t.float :credits_upper_range
      t.text :description
      t.boolean :writing_intensive
      t.text :college
      t.text :repeat_status
      t.text :prereqs
      t.text :restrictions
      t.text :coreqs
      t.text :term_type
      t.text :student_type
      t.timestamps null: false
    end
这就是模型

class ClassInfo < ActiveRecord::Base
end

最后是迫不及待的装载把我搞砸了

我刚才补充说

Rails.application.eager_load!

从一开始,它就成功了。不幸的是,迫不及待的加载并没有帮到我。我通过引用rake任务中的依赖项来“解决”它,该任务在运行多任务之前串行执行:

   task do_stuff: [:environment] do 
      b = MyModelThatTriggersCircularDependencies
      b = MyOtherModelThatAlsoMisbehaves
      Rake::Task['my_multitask'].invoke
   end

   multitask my_multitask: CONVERT_TXT_TO_MD
   task do_stuff: [:environment] do 
      b = MyModelThatTriggersCircularDependencies
      b = MyOtherModelThatAlsoMisbehaves
      Rake::Task['my_multitask'].invoke
   end

   multitask my_multitask: CONVERT_TXT_TO_MD