34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'app/models/extface/device.rb', line 34
def session(description = nil)
job = jobs.create!(description: description, started_at: Time.now)
job.thread = Thread.new do
Thread.current[:extface_job] = job.id
ActiveRecord::Base.establish_connection unless ActiveRecord::Base.connection.active?
begin
raise 'No driver configured' unless driver.present?
if driver.set_job(job)
yield driver
job.complete!
else
raise driver.errors.full_messages.join(', ')
end
rescue => e
STDERR.puts e.message
e.backtrace.each do |line|
p line
end
job.failed! e.message
ensure
ActiveRecord::Base.connection.close unless Thread.list.select{ |t| t[:extface_job].present? }.many?
end
end
job
end
|