module Apipie::DSL::Controller

Public Instance Methods

_apipie_concern_subst() click to toggle source
# File lib/apipie/dsl_definition.rb, line 384
def _apipie_concern_subst
  @_apipie_concern_subst ||= {:controller_path => self.controller_path,
                              :resource_id => Apipie.get_resource_name(self)}
end
_apipie_perform_concern_subst(string) click to toggle source
# File lib/apipie/dsl_definition.rb, line 389
def _apipie_perform_concern_subst(string)
  return _apipie_concern_subst.reduce(string) do |ret, (key, val)|
    ret.gsub(":#{key}", val)
  end
end
apipie_concern?() click to toggle source
# File lib/apipie/dsl_definition.rb, line 395
def apipie_concern?
  false
end
apipie_concern_subst(subst_hash) click to toggle source

defines the substitutions to be made in the API paths deifned in concerns included. For example:

There is this method defined in concern:

api GET ':controller_path/:id'
def show
  # ...
end

If you include the concern into some controller, you can specify the value for :controller_path like this:

apipie_concern_subst(:controller_path => '/users')
include ::Concerns::SampleController

The resulting path will be '/users/:id'.

It has to be specified before the concern is included.

If not specified, the default predefined substitions are

{:conroller_path => controller.controller_path,
 :resource_id  => %x`resource_id_from_apipie` }
# File lib/apipie/dsl_definition.rb, line 380
def apipie_concern_subst(subst_hash)
  _apipie_concern_subst.merge!(subst_hash)
end
method_added(method_name) click to toggle source

create method api and redefine newly added method

Calls superclass method
# File lib/apipie/dsl_definition.rb, line 400
def method_added(method_name) #:doc:
  super
  return if !Apipie.active_dsl? || !_apipie_dsl_data[:api]

  return if _apipie_dsl_data[:api_args].blank? && _apipie_dsl_data[:api_from_routes].blank?

  # remove method description if exists and create new one
  Apipie.remove_method_description(self, _apipie_dsl_data[:api_versions], method_name)
  description = Apipie.define_method_description(self, method_name, _apipie_dsl_data)

  _apipie_dsl_data_clear
  _apipie_define_validators(description)
ensure
  _apipie_dsl_data_clear
end