Module: Dalliance
- Extended by:
- ActiveSupport::Concern
- Defined in:
- lib/dalliance.rb,
lib/dalliance/schema.rb,
lib/dalliance/railtie.rb,
lib/dalliance/version.rb,
lib/dalliance/workers.rb,
lib/dalliance/progress_meter.rb,
lib/dalliance/workers/resque.rb,
lib/dalliance/workers/delayed_job.rb,
lib/generators/dalliance/update/update_generator.rb,
lib/generators/dalliance/progress_meter/progress_meter_generator.rb
Defined Under Namespace
Modules: ClassMethods, Glue, Schema, VERSION, Workers
Classes: ProgressMeter, ProgressMeterGenerator, Railtie, UpdateGenerator
Class Method Summary
collapse
Instance Method Summary
collapse
Class Method Details
.background_processing=(value) ⇒ Object
28
29
30
|
# File 'lib/dalliance.rb', line 28
def background_processing=(value)
options[:background_processing] = value
end
|
.background_processing? ⇒ Boolean
24
25
26
|
# File 'lib/dalliance.rb', line 24
def background_processing?
options[:background_processing]
end
|
32
33
34
|
# File 'lib/dalliance.rb', line 32
def configure
yield(self) if block_given?
end
|
.detect_worker_class ⇒ Object
.options ⇒ Object
16
17
18
19
20
21
22
|
# File 'lib/dalliance.rb', line 16
def options
@options ||= {
:background_processing => (defined?(Rails) ? Rails.env.production? : true),
:dalliance_progress_meter_total_count_method => :dalliance_progress_meter_total_count,
:worker_class => detect_worker_class
}
end
|
Instance Method Details
#calculate_dalliance_progress_meter_total_count ⇒ Object
If the progress_meter_total_count_method is not implemented just use 1…
141
142
143
144
145
146
147
|
# File 'lib/dalliance.rb', line 141
def calculate_dalliance_progress_meter_total_count
if respond_to?(self.class.dalliance_options[:dalliance_progress_meter_total_count_method])
self.send(self.class.dalliance_options[:dalliance_progress_meter_total_count_method])
else
1
end
end
|
#dalliance_background_process(backgound_processing = nil) ⇒ Object
Force backgound_processing w/ true
93
94
95
96
97
98
99
|
# File 'lib/dalliance.rb', line 93
def dalliance_background_process(backgound_processing = nil)
if backgound_processing || (backgound_processing.nil? && Dalliance.background_processing?)
self.class.dalliance_options[:worker_class].enqueue(self)
else
dalliance_process(false)
end
end
|
#dalliance_process(backgound_processing = false) ⇒ Object
backgound_processing == false will re-raise any exceptions
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
# File 'lib/dalliance.rb', line 102
def dalliance_process(backgound_processing = false)
begin
start_dalliance!
build_dalliance_progress_meter(:total_count => calculate_dalliance_progress_meter_total_count).save!
self.send(self.class.dalliance_options[:dalliance_method])
finish_dalliance!
rescue StandardError => e
self.dalliance_error_hash = {:error => e.class.name, :message => e.message, :backtrace => e.backtrace}
error_dalliance!
raise e unless backgound_processing
ensure
if dalliance_progress_meter
Dalliance::ProgressMeter.delete(dalliance_progress_meter.id)
self.dalliance_progress_meter = nil
end
end
end
|
#dalliance_progress ⇒ Object
128
129
130
131
132
133
134
135
136
137
138
|
# File 'lib/dalliance.rb', line 128
def dalliance_progress
if completed?
100
else
if dalliance_progress_meter
dalliance_progress_meter.progress
else
0
end
end
end
|
#error_or_completed? ⇒ Boolean
84
85
86
|
# File 'lib/dalliance.rb', line 84
def error_or_completed?
processing_error? || completed?
end
|
#pending_or_processing? ⇒ Boolean
88
89
90
|
# File 'lib/dalliance.rb', line 88
def pending_or_processing?
pending? || processing?
end
|