我正试图以这种方式做一个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
它将我需要的所有信息保存到我的数据库中。但是我怎么能在佣金任务中做到这一点?任何帮助将是欣赏。感谢。
答案 0 :(得分:3)
替换
时是否有效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
答案 1 :(得分:0)
这就是我在我的应用中使用的方式
namespace :raw_logs do
desc 'Download - Decrypt - Save raw logs'
task process: :environment do
LogItem.create(org_id: 12)
end
end
我的佣金任务是佣金raw_logs:process