Sha256: 38e5964afac538c4f6a5f0318ff1b103867dc97ab6acec93497b06d25092e6f5

Contents?: true

Size: 1.28 KB

Versions: 8

Compression:

Stored size: 1.28 KB

Contents

module RailsOps
  class Context < ActiveType::Object
    attribute :user
    attribute :ability
    attribute :op_chain, default: []
    attribute :session
    attribute :called_via_hook
    attribute :url_options
    attribute :view

    # For compatibility with rails < 4
    if defined?(attr_accessible)
      attr_accessible :user
      attr_accessible :ability
      attr_accessible :op_chain
      attr_accessible :session
      attr_accessible :called_via_hook
      attr_accessible :url_options
      attr_accessible :view
    end

    # Returns a copy of the context with the given operation added to the
    # contexts operation chain.
    def spawn(op)
      return Context.new(
        user:            user,
        ability:         ability,
        session:         session,
        op_chain:        op_chain + [op],
        called_via_hook: false,
        url_options:     url_options,
        view:            view
      )
    end

    # Runs the given operation in this particular context with the given args
    # using the non-bang `run` method.
    def run(op, *args)
      op.run(self, *args)
    end

    # Runs the given operation in this particular context with the given args
    # using the bang `run!` method.
    def run!(op, *args)
      op.run!(self, *args)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
rails_ops-1.0.11 lib/rails_ops/context.rb
rails_ops-1.0.10 lib/rails_ops/context.rb
rails_ops-1.0.9 lib/rails_ops/context.rb
rails_ops-1.0.7 lib/rails_ops/context.rb
rails_ops-1.0.6 lib/rails_ops/context.rb
rails_ops-1.0.5 lib/rails_ops/context.rb
rails_ops-1.0.4 lib/rails_ops/context.rb
rails_ops-1.0.3 lib/rails_ops/context.rb