Module: Irie
- Defined in:
- lib/irie/config.rb,
lib/irie/version.rb,
lib/irie/class_methods.rb,
lib/irie/param_aliases.rb,
lib/irie/extensions/count.rb,
lib/irie/extensions/limit.rb,
lib/irie/extensions/order.rb,
lib/irie/extensions/offset.rb,
lib/irie/extensions/paging.rb,
lib/irie/configuration_error.rb,
lib/irie/extensions/index_query.rb,
lib/irie/extensions/query_filter.rb,
lib/irie/extensions/smart_layout.rb,
lib/irie/extensions/param_filters.rb,
lib/irie/extensions/query_includes.rb,
lib/irie/extensions/params_to_joins.rb,
lib/irie/extensions/autorender_count.rb,
lib/irie/extensions/conversion/nil_params.rb,
lib/irie/extensions/paging/autorender_page_count.rb
Defined Under Namespace
Modules: ClassMethods, Extensions, ParamAliases Classes: ConfigurationError
Constant Summary collapse
- CONTROLLER_OPTIONS =
[ :autoincludes, :available_actions, :available_extensions, :can_filter_by_default_using, :debug, :function_param_names, :id_is_primary_key_param, :number_of_records_in_a_page, :predicate_prefix, :update_should_return_entity, :extension_include_order ]
- VERSION =
'1.0.2'
Class Method Summary collapse
- .configure(&blk) ⇒ Object
-
.register_extension(extension_sym, extension_class_name, options = {}) ⇒ Object
Adds to extension_include_order and extension_include_order, e.g.
Class Method Details
.configure(&blk) ⇒ Object
19 |
# File 'lib/irie/config.rb', line 19 def configure(&blk); class_eval(&blk); end |
.register_extension(extension_sym, extension_class_name, options = {}) ⇒ Object
Adds to extension_include_order and extension_include_order, e.g.
::Irie.register_extension :boolean_params, '::Focal::Irie::BooleanParams'
Is equivalent to:
::Irie.available_extensions[:boolean_params] = '::Focal::Irie::BooleanParams'
::Irie.extension_include_order << extension_sym
Allowed options are ‘:include`, `:after`, and `:before`. Some examples:
::Irie.register_extension :boolean_params, '::Example::BooleanParams', include: :last # the default, so unnecessary
::Irie.register_extension :boolean_params, '::Example::BooleanParams', include: :first # includes module after all others registered at this point
::Irie.register_extension :boolean_params, '::Example::BooleanParams', after: :nil_params # includes after :nil_params
::Irie.register_extension :boolean_params, '::Example::BooleanParams', before: :nil_params # includes after :nil_params
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/irie/config.rb', line 31 def register_extension(extension_sym, extension_class_name, = {}) raise ::Irie::ConfigurationError.new "Irie.register_extension must provide an extension symbol as the first argument" unless extension_sym raise ::Irie::ConfigurationError.new "Irie.register_extension must provide an extension class name (string) as the second argument" unless extension_sym raise ::Irie::ConfigurationError.new "Irie.register_extension can only provide a single option: :include, :after, or :before" if .size > 1 initial_opts = .dup include_opt, after_opt, before_opt = *[:include, :after, :before].collect{|opt_name| .delete(opt_name)} include_opt = :last unless include_opt || after_opt || before_opt raise ::Irie::ConfigurationError.new "Irie.register_extension unrecognized options: #{.inspect}" if .size > 0 ::Irie.extension_include_order.delete(extension_sym) before_or_after_opt_value = before_opt || after_opt if include_opt == :first ::Irie.extension_include_order.unshift extension_sym elsif include_opt == :last ::Irie.extension_include_order << extension_sym elsif before_or_after_opt_value ind = ::Irie.extension_include_order.index(before_or_after_opt_value) raise ::Irie::ConfigurationError.new "Irie.register_extension cannot insert #{before_opt ? 'before' : 'after'} #{before_or_after_opt_value.inspect}, because #{before_or_after_opt_value.inspect} was not yet registered. A possible workaround for deferred registration may be to require the code that does the prerequisite registration." ::Irie.extension_include_order.insert(ind + (after_opt ? 1 : 0), extension_sym) else raise ::Irie::ConfigurationError.new "Irie.register_extension unsupported options: #{initial_opts.inspect}" end ::Irie.available_extensions[extension_sym] = extension_class_name end |