Sha256: ead7e29b1476308d444968918370d550d04e255a61d56d26bff0434884483ce1

Contents?: true

Size: 1.29 KB

Versions: 18

Compression:

Stored size: 1.29 KB

Contents

# Mixin for the {RailsOps::Operation} class that provides a simple way of
# running arbitrary operations within operations, automatically passing a
# modified version of the current operation's context to them.
module RailsOps::Mixins::SubOps
  extend ActiveSupport::Concern

  # Instantiates and returns a new operation of the given class and
  # automatically passes a modified version of the current operation's context
  # to it. For one-line runs of operations please use {run_sub!} or {run_sub}
  # which internally use this method.
  def sub_op(op, params = {})
    new_context = context.spawn(self)
    return op.new(new_context, params)
  end

  # Operation-equivalent of controller method 'run!': Instantiates and runs the
  # given operation class. See {sub_op} for more details on how instantiation
  # and context modification is done.
  def run_sub!(klass, params = {})
    op = sub_op(klass, params)

    begin
      return op.run!
    rescue op.validation_errors => e
      fail RailsOps::Exceptions::SubOpValidationFailed, e
    end
  end

  # Operation-equivalent of controller method 'run': Instantiates and runs the
  # given operation class. See {sub_op} for more details on how instantiation
  # and context modification is done.
  def run_sub(op, params = {})
    sub_op(op, params).run
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
rails_ops-1.0.2 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.1 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta15 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta14 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta13 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta12 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta11 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta10 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta9 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta8 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta7 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta6 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta5 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta4 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta3 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta2 lib/rails_ops/mixins/sub_ops.rb
rails_ops-1.0.0.beta1 lib/rails_ops/mixins/sub_ops.rb