2016-11-30 4 views
1

Я пытаюсь сделать грабли-задачу в таким образом:NameError: неинициализированный постоянный класс :: класс в рейк-задаче

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 у меня есть классы и методы экземпляра, которые прекрасно работайте в консоли рельсов, выполнив следующие действия:

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

Это сохраняет мне всю информацию, в которой я нуждаюсь. Но как я могу это сделать в рейк-задаче? Любая помощь будет оценена. Благодарю.

ответ

2

ли работа при замене

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

 Смежные вопросы

  • Нет связанных вопросов^_^