2012-03-13 3 views
0

Я изо всех сил, чтобы отправить код, приведенный ниже в качестве фонового задания, в то время как врезаться в одну или другую ошибку во времени времени,Rescue - NoMethodError - неопределенная журнал метод brassring класса

мое приложение/рабочие/brassring .rb является

require File.dirname(__FILE__)+"/base_parser" 
class Brassring < BaseParser 
@queue = :Brassring_queue 
def self.perform(page) 
super page 
    ............. 
end 
    site_done 

rescue Exception => e 
def self.perform 
log "error: #{e}" 
end 

end 
end 

и мое приложение/рабочие/base_parser.rb является

#require 'rubygems' 
require 'mechanize' 
require 'mechanize/form' 


class BaseParser 


def initialize(site) 
...... 
end 


def add_fields_to_form(form, fields) 
..... 
end 


def run 
................. 

end 




def html2text(data) 
...... 
end 


def save_result_page(url, result_params) 
............ 
end 

def get_fields_from_page(page) 
....... 
    end 

def set_site_status(status) 
........ 
end 


def update_run_counter 
....... 
end 

def site_done 
...... 
end 


def log(what) 
..... 
end 

def utf8(untrusted_string) 
....... 
end 

Я очередями это с помощью метода Rescue_enqueue в моем Lib/brassring.rb, как

Resque.enqueue(Brassring,@site_id) 

при попытке выполнить задание, используя грабли Resque: работа ОЧЕРЕДЬ = * Это терпит неудачу на в моей спасательной панели управления

NoMethodError Ошибка: не определен метод log' for Brassring:Class /home/my/to/sorc/app/workers/brassring.rb:39:in спасение в Perform» /дома /my/to/sorc/app/workers/brassring.rb:5:in `выполнить '

или что мне делать, чтобы заставить его работать.

Заранее спасибо

+0

Вы не указали строку 39 из /app/workers/brassring.rb:39 в своем коде, добавьте ее. – TomDunning

+0

также, кажется, у вас есть два метода 'self.perform' в brassring.rb – TomDunning

+0

log" error: # {e} "это строка 39, так как это мой первый вопрос в переполнении стека. Я не знаю, как добавить номера строк:) –

ответ

0

Я думаю, ваша проблема в том, что вы недоразумение, как rescue оператор работает в Ruby. Вам нужно начать с begin, а затем положить оператор rescue в нижней части вашего заявления begin, чтобы закрыть его, диктуя, что делать, если/когда ошибки кода отсутствуют. Я бы посоветовал вам прочитать руководство, в котором рассказывается, как исключения и спасательные работы в рубине such as this one.

+0

Извините, я не говорил об исключениях рубина, а скорее о вакансиях resque (фоновые задания) –

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