Задача: загрузить из дропбокс файла список сайтов клиентов и вывести в гуишке. Листинг:
| Код | # coding: utf-8 require 'rubygems' require 'wx' # гем wxruby require 'mechanize' require File.join(File.dirname(__FILE__), 'guishka') class Gena < XFrame def initialize super #инициализация родительского конструктора #вешаем события на кнопки evt_button(b_reload) { reload_sites } timer = Wx::Timer.new(self, Wx::ID_ANY) evt_timer(timer.id) {Thread.pass} timer.start(10) end def curr(str) @curr_action.set_label(str.to_s) end def curr_clear @curr_action.set_label("OK") puts 'OK' end def reload_sites curr "Загружаю дропбокс..." #тут работает нормально Thread.new do agent = Mechanize.new agent.agent.http.verify_mode = OpenSSL::SSL::VERIFY_NONE data = agent.get $config['dropbox'].to_s tmp = Array.new data.body.each_line do |line| line.chomp! tmp << line.split(";")[1] puts line.split(";")[1] end @list_site.insert_items(tmp, 0) #На этом шаге приложение зависает, и белеет (виндовс 7) curr_clear #Если убрать предыдущий шаг, все равно вылетит вот в этом месте, так как в этом методе идет обращение к методам гуя end end end Wx::App.run do Gena.new.show end
|
В общем проблема в том, что когда я пытаюсь из потока обратиться к методам объектов из класса, в котором был вызван поток, все падает.
В чем причина может быть? Я даже не знаю как отловить баг, Begin... rescue - не ловит ничего.
Спасибо заранее. |