module Walruz class Config # Given a list of classes, it will include the Actor module # in each of them. # # @param [Class] actors The list of classes that will be Actors in the # system def actors=(actors) Array(actors).each do |actor| actor.send(:include, Actor) end end # Given a list of classes, it will include the Subject module # in each of them. # # @param [Class] subjects The list of classes that will be Subject in the # system def subjects=(subjects) Array(subjects).each do |subject| subject.send(:include, Subject) end end def enable_will_paginate_extension(options = {}) options = { :include_rails => false }.merge!(options) gem 'mislav-will_paginate' require 'will_paginate' require File.expand_path( File.join(File.dirname(__FILE__), 'more', 'pagination') ) safe_include(WillPaginate::Collection, Walruz::More::Pagination::WillPaginateCollection) safe_include(Array, Walruz::More::Pagination::Base) if options[:include_rails] raise LoadError.new("You ask to enable Walruz extensions on \ ActiveRecord::Base, but it was not found. Maybe you should require \ 'active_record' first?") unless defined?("ActiveRecord::Base") safe_include(::ActiveRecord::Base, Walruz::More::Pagination::Base) end rescue Gem::LoadError raise LoadError.new("You ask to enable Walruz extensions on \ WillPaginate, but it was not found, Maybe you should \ require 'will_paginate' first") end # Will include the Walruz:CoreExt:Array module # to the Array class def enable_array_extension require File.expand_path( File.join(File.dirname(__FILE__), 'core_ext', 'array') ) safe_include(Array, Walruz::CoreExt::Array) end protected def safe_include(base, module_to_include) return if base.included_modules.include?(module_to_include) base.send(:include, module_to_include) end end end