Module: Lev::Routine::ClassMethods
- Defined in:
- lib/lev/routine.rb
Instance Method Summary collapse
- #[](*args, &block) ⇒ Object
- #active_job_enqueue_options ⇒ Object
- #call(*args, &block) ⇒ Object
- #class_to_symbol(klass) ⇒ Object
- #create_status ⇒ Object
- #delegates_to ⇒ Object
- #express_output ⇒ Object
- #find_status(id) ⇒ Object
- #nested_routines ⇒ Object
- #perform_later(*args, &block) ⇒ Object
- #raise_fatal_errors? ⇒ Boolean
- #set(options) ⇒ Object
- #transaction_isolation ⇒ Object
-
#uses_routine(routine_class, options = {}) ⇒ Object
Called at a routine’s class level to foretell which other routines will be used when this routine executes.
Instance Method Details
#[](*args, &block) ⇒ Object
207 208 209 210 211 |
# File 'lib/lev/routine.rb', line 207 def [](*args, &block) result = call(*args, &block) result.errors.raise_exception_if_any! result.outputs.send(@express_output) end |
#active_job_enqueue_options ⇒ Object
222 223 224 |
# File 'lib/lev/routine.rb', line 222 def @active_job_enqueue_options || { queue: :default } end |
#call(*args, &block) ⇒ Object
203 204 205 |
# File 'lib/lev/routine.rb', line 203 def call(*args, &block) new.call(*args, &block) end |
#class_to_symbol(klass) ⇒ Object
264 265 266 |
# File 'lib/lev/routine.rb', line 264 def class_to_symbol(klass) klass.name.underscore.gsub('/','_').to_sym end |
#create_status ⇒ Object
268 269 270 |
# File 'lib/lev/routine.rb', line 268 def create_status create_status_proc.call end |
#delegates_to ⇒ Object
251 252 253 |
# File 'lib/lev/routine.rb', line 251 def delegates_to @delegates_to end |
#express_output ⇒ Object
247 248 249 |
# File 'lib/lev/routine.rb', line 247 def express_output @express_output end |
#find_status(id) ⇒ Object
272 273 274 |
# File 'lib/lev/routine.rb', line 272 def find_status(id) find_status_proc.call(id) end |
#nested_routines ⇒ Object
255 256 257 |
# File 'lib/lev/routine.rb', line 255 def nested_routines @nested_routines ||= {} end |
#perform_later(*args, &block) ⇒ Object
217 218 219 220 |
# File 'lib/lev/routine.rb', line 217 def perform_later(*args, &block) # Delegate to a subclass of Lev::Routine::ActiveJob::Base Lev::ActiveJob::Base.new.perform_later(self, , *args, &block) end |
#raise_fatal_errors? ⇒ Boolean
259 260 261 262 |
# File 'lib/lev/routine.rb', line 259 def raise_fatal_errors? @raise_fatal_errors || (Lev.configuration.raise_fatal_errors && @raise_fatal_errors.nil?) end |
#set(options) ⇒ Object
213 214 215 |
# File 'lib/lev/routine.rb', line 213 def set() Lev::ActiveJob::ConfiguredJob.new(self, ) end |
#transaction_isolation ⇒ Object
243 244 245 |
# File 'lib/lev/routine.rb', line 243 def transaction_isolation @transaction_isolation ||= TransactionIsolation.mysql_default end |
#uses_routine(routine_class, options = {}) ⇒ Object
Called at a routine’s class level to foretell which other routines will be used when this routine executes. Helpful for figuring out ahead of time what kind of transaction isolation level should be used.
229 230 231 232 233 234 235 236 237 238 239 240 241 |
# File 'lib/lev/routine.rb', line 229 def uses_routine(routine_class, ={}) symbol = [:as] || class_to_symbol(routine_class) raise Lev.configuration.illegal_argument_error, "Routine #{routine_class} has already been registered" \ if nested_routines[symbol] nested_routines[symbol] = { routine_class: routine_class, options: } transaction_isolation.replace_if_more_isolated(routine_class.transaction_isolation) end |