module MagicResource::Controller

Protected Instance Methods

r(*args) click to toggle source
# File lib/magic-resource/controller.rb, line 30
def r(*args)
  MagicResource::Container._launch(self, *args)
end
resource=(resource) click to toggle source
# File lib/magic-resource/controller.rb, line 25
def resource=(resource)
  @resources, @resource = nil, resource
  prepare_resource_container(resource)
end
resources=(resources) click to toggle source
# File lib/magic-resource/controller.rb, line 20
def resources=(resources)
  @resources, @resource = resources, nil
  prepare_resource_container(resources)
end

Private Instance Methods

_prepare_resource_container(rs) click to toggle source
# File lib/magic-resource/controller.rb, line 55
def _prepare_resource_container(rs)
  self.resource_container = MagicResource::Container.new(rs || resource_name, resource_context)
end
prepare_resource_container(rs = nil) click to toggle source
# File lib/magic-resource/controller.rb, line 46
def prepare_resource_container(rs = nil)
  _prepare_resource_container(rs)

  MagicResource.assert_restriction(
    :assert_resource_name_in_controller,
    "Wrong resource name in controller, expected #{resource_name.inspect} but got #{resource_container.name.inspect}"
  ) unless resource_container.name == resource_name
end
prepare_resource_controller() click to toggle source
# File lib/magic-resource/controller.rb, line 36
def prepare_resource_controller
  resource_config = self.class.name.match(/^(?<name>\w+?)::(?<context>\w+)Controller$/)
  raise "Wrong resource controller name: #{self.class.name}" unless resource_config

  self.resource_name = resource_config[:name].underscore.to_sym
  self.resource_context = resource_config[:context].underscore.to_sym

  prepare_resource_container
end
resource_contents() click to toggle source
# File lib/magic-resource/controller.rb, line 68
def resource_contents
  @_resource_contents ||= {}
end
with_resource_container(new_resource_container) { || ... } click to toggle source
# File lib/magic-resource/controller.rb, line 59
def with_resource_container(new_resource_container)
  same_resource_container = resource_container == new_resource_container
  old_resource_container, self.resource_container = resource_container, new_resource_container unless same_resource_container

  yield
ensure
  self.resource_container = old_resource_container unless same_resource_container
end