NameError:rake 任务中未初始化的常量 Class::Class

Ale*_*kyi 1 ruby ruby-on-rails rake-task

我正在尝试以这样的方式进行 rake 任务:

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
Run Code Online (Sandbox Code Playgroud)

在我的代码中,lib/news_parser.rb我有类和实例方法,它们可以在 Rails 控制台中完美运行,只需执行以下操作:

load 'lib/news_parser.rb'
ProcherkParser.new.save_novelties
Run Code Online (Sandbox Code Playgroud)

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

Eri*_*nil 5

更换后可以用吗

task :parse_news do
Run Code Online (Sandbox Code Playgroud)

task :parse_news => :environment do
Run Code Online (Sandbox Code Playgroud)

它会在执行任务之前加载 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
Run Code Online (Sandbox Code Playgroud)