NameError: uninitialized constant Class::Class in a rake-task

NameError: uninitialized constant Class::Class in a rake-task

我正在尝试以这种方式进行佣金任务:

require 'open-uri'

namespace :news_parser do
  desc 'Parsing news from 6 news sites'
  task :parse_news do
    load 'lib/news_parser.rb'
    ProcherkParser.new.save_novelties
    VikkaParser.new.save_novelties
    InfomistParser.new.save_novelties
    ZmiParser.new.save_novelties
    VycherpnoParser.new.save_novelties
    ProvceParser.new.save_novelties
  end
end

在我的 lib/news_parser.rb 中,我有 类 和实例方法,通过执行以下操作,它们在 rails 控制台中完美运行:

load 'lib/news_parser.rb'
ProcherkParser.new.save_novelties

它将我需要的所有信息保存到我的数据库中。但是我怎样才能在 rake-task 中做到这一点呢?任何帮助将不胜感激。谢谢

替换后是否有效

task :parse_news do

task :parse_news => :environment do

?

它将在您的任务之前加载您的 Rails 环境,并且您的代码应该像在 rails 控制台中一样工作。

此外,您可以稍微干燥一下代码:

require 'open-uri'

namespace :news_parser do
  desc 'Parsing news from 6 news sites'
  task :parse_news => :environment do
    load 'lib/news_parser.rb'
    [ProcherkParser, VikkaParser, InfomistParser, ZmiParser, VycherpnoParser, ProvceParser].each do |parser_klass|
      parser_klass.new.save_novelties
    end
  end
end

这就是我在我的应用程序中使用的方式

namespace :raw_logs do
  desc 'Download - Decrypt - Save raw logs'
  task process: :environment do
   LogItem.create(org_id: 12)
  end
end

我的 rake 任务是 rake raw_logs:process