Module: Lev::Routine::ClassMethods
- Defined in:
- lib/lev/routine.rb
Instance Method Summary collapse
- #[](*args, &block) ⇒ Object
- #active_job_queue ⇒ Object
- #call(*args, &block) ⇒ Object
- #class_to_symbol(klass) ⇒ Object
- #delegates_to ⇒ Object
- #express_output ⇒ Object
- #nested_routines ⇒ Object
- #perform_later(*args, &block) ⇒ Object
- #raise_fatal_errors? ⇒ Boolean
- #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
205 206 207 208 209 |
# File 'lib/lev/routine.rb', line 205 def [](*args, &block) result = call(*args, &block) result.errors.raise_exception_if_any! result.outputs.send(@express_output) end |
#active_job_queue ⇒ Object
217 218 219 |
# File 'lib/lev/routine.rb', line 217 def active_job_queue @active_job_queue || :default end |
#call(*args, &block) ⇒ Object
201 202 203 |
# File 'lib/lev/routine.rb', line 201 def call(*args, &block) new.call(*args, &block) end |
#class_to_symbol(klass) ⇒ Object
260 261 262 |
# File 'lib/lev/routine.rb', line 260 def class_to_symbol(klass) klass.name.underscore.gsub('/','_').to_sym end |
#delegates_to ⇒ Object
247 248 249 |
# File 'lib/lev/routine.rb', line 247 def delegates_to @delegates_to end |
#express_output ⇒ Object
243 244 245 |
# File 'lib/lev/routine.rb', line 243 def express_output @express_output end |
#nested_routines ⇒ Object
251 252 253 |
# File 'lib/lev/routine.rb', line 251 def nested_routines @nested_routines ||= {} end |
#perform_later(*args, &block) ⇒ Object
212 213 214 215 |
# File 'lib/lev/routine.rb', line 212 def perform_later(*args, &block) # Delegate to a subclass of Lev::Routine::ActiveJob::Base Lev::ActiveJob::Base.perform_later(self, *args, &block) end |
#raise_fatal_errors? ⇒ Boolean
255 256 257 258 |
# File 'lib/lev/routine.rb', line 255 def raise_fatal_errors? @raise_fatal_errors || (Lev.configuration.raise_fatal_errors && @raise_fatal_errors.nil?) end |
#transaction_isolation ⇒ Object
239 240 241 |
# File 'lib/lev/routine.rb', line 239 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.
225 226 227 228 229 230 231 232 233 234 235 236 237 |
# File 'lib/lev/routine.rb', line 225 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 |