ruby-on-rails - NameError:rake 任务中未初始化的常量 Class::Class

标签 ruby-on-rails ruby 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

关于ruby-on-rails - NameError:rake 任务中未初始化的常量 Class::Class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40886731/

相关文章:

ruby-on-rails - 管理 'delete' 链接的 Rspec 测试失败。 Michael Hartl 的 ROR 3.2 教程 - 第 9.4.2 章

ruby-on-rails - Ruby 我怎样才能在给定日期之后获得星期一的日期

ruby - 未安装 gem 时如何从 require "gem_name"中解救

ruby - 如何在数组数组中获取特定值

ruby - 超薄模板,自定义 DOCTYPE

ruby-on-rails - 多线程 rake 任务

ruby-on-rails - 如何在 Rails Schedule.rake 中包含模块?

ruby-on-rails - Rails session 数据 - 存储在哈希中

ruby-on-rails - rails 3.1 : how to run an initializer only for the web app (rails server/unicorn/etc)

ruby-on-rails - 乘客/mod_rails在启动Apache时无法在Fedora 12中初始化