class Flake
Public Class Methods
execute(args = {})
click to toggle source
# File lib/flakes.rb, line 13 def self.execute(args = {}) new(args).execute end
execute_later(args = {})
click to toggle source
# File lib/flakes.rb, line 17 def self.execute_later(args = {}) options = {} options[:wait] = args.delete(:wait) if args.key?(:wait) # initialize ActiveJob::Core only when Flake is enqueued to prevent conflics with ActiveModel::Model flake = new flake.send(:active_job_initialize, args) if queue_adapter.class.name.demodulize == "InlineAdapter" flake.enqueue else flake.enqueue(options) end end
Public Instance Methods
execute(*)
click to toggle source
# File lib/flakes.rb, line 39 def execute(*) raise NotImplementedError, "no `execute` method defined for #{self.class}" end
on_failure(&callback)
click to toggle source
# File lib/flakes.rb, line 48 def on_failure(&callback) @failure = callback self end
on_success(&callback)
click to toggle source
# File lib/flakes.rb, line 43 def on_success(&callback) @success = callback self end
perform(args = {})
click to toggle source
# File lib/flakes.rb, line 34 def perform(args = {}) args.each { |key, value| instance_variable_set(:"@#{key}", value) } execute end
Private Instance Methods
default_failure()
click to toggle source
# File lib/flakes.rb, line 85 def default_failure proc do |args| obj = args || self raise(Error, obj.errors.full_messages) if obj.respond_to?(:errors) raise(Error, obj.full_messages) if obj.is_a?(ActiveModel::Errors) raise(Error, obj.inspect) end end
default_success()
click to toggle source
# File lib/flakes.rb, line 81 def default_success proc { true } end
failure(*args)
click to toggle source
# File lib/flakes.rb, line 75 def failure(*args) @failure ||= default_failure @failure.call(*args) false end
success(*args)
click to toggle source
# File lib/flakes.rb, line 65 def success(*args) if args.size == 1 && args.first.respond_to?(:errors) && args.first.errors.present? failure(args.first.errors) else @success ||= default_success @success.call(*args) return args.first end end
with_valid_params() { || ... }
click to toggle source
# File lib/flakes.rb, line 55 def with_valid_params if block_given? && valid? ApplicationRecord.transaction do yield end else failure(errors) end end