我正在尝试以这种方式进行抽取任务:
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/