Rescue - NoMethodError - неопределенный журнал методов для класса brassring - PullRequest
0 голосов
/ 13 марта 2012

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

мое приложение / worker / 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

и мой app / worker / 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)

, когда я пытаюсьзапустите задание с помощью rake resque: work QUEUE = * Ошибка в моей панели управления спасением

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

или что я должен сделать, чтобы это заработало.

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

1 Ответ

0 голосов
/ 13 марта 2012

Я думаю, что ваша проблема в том, что вы неправильно понимаете, как работает оператор rescue в Ruby. Вам нужно начать с begin, а затем поместить оператор rescue внизу вашего оператора begin, чтобы закрыть его, диктуя, что следует делать, если / когда код выходит из строя. Я бы порекомендовал вам прочитать руководство, в котором описано, как исключения и спасение работают в ruby ​​, например, это .

...