如何将activerecord连接传递到ruby中的自定义gem

如何将activerecord连接传递到ruby中的自定义gem,ruby,activerecord,gem,Ruby,Activerecord,Gem,我正在尝试将activerecord连接传递到更新数据库和多个表的gem。到目前为止我一直不成功。我需要多个线程都连接到数据库来添加数据 调用MyGem的主代码 database_yml = File.expand_path('database.yml', File.dirname(__FILE__)) db_config = YAML.load_file(database_yml) connection = ActiveRecord::Base.establish_connection(db_

我正在尝试将activerecord连接传递到更新数据库和多个表的gem。到目前为止我一直不成功。我需要多个线程都连接到数据库来添加数据

调用MyGem的主代码

database_yml = File.expand_path('database.yml', File.dirname(__FILE__))
db_config = YAML.load_file(database_yml)
connection = ActiveRecord::Base.establish_connection(db_config)

puts "Command array: #{options_array}"
threads = options_array.length
options_array.pmap(threads) do |option|
  MyGem::RoboCopy.run_and_parse_robocopy option, connection
end
此调用的Gem方法

module MyGem
  class RoboCopy
    def self.run_and_parse_robocopy(options, db_connection)
      ActiveRecord::Base.connection db_connection
      statistic = RobocopyData.create output_file: options[:output_file], file_gen_start: Time.now.strftime("%Y-%m-%d %H:%M:%S"), status: 'Started'
      #More Code
    end
  end
end
这会导致以下错误:

ArgumentError:调用连接的参数数目错误(1代表0)

我试过了

ActiveRecord::Base.connection = db_connection ActiveRecord::Base.connection=db\u连接 但我犯了这个错误:

NoMethodError:ActiveRecord::Base:类的未定义方法“connection=”

我错过了什么


谢谢

不要传递连接对象本身,而是传递db_config,然后在gem中建立新连接:

module MyGem
  class RoboCopy
    def self.run_and_parse_robocopy(options, db_config)
      ActiveRecord::Base.establish_connection db_config
      # ...
    end
  end
end
在主代码中:

MyGem::RoboCopy.run_and_parse_robocopy option, db_config
在你的宝石:

module MyGem
  class RoboCopy
    def self.run_and_parse_robocopy(options, db_config)
      ActiveRecord::Base.establish_connection db_config
      # ...
    end
  end
end