Module: Repositorish
- Defined in:
- lib/repositorish.rb,
lib/repositorish/version.rb
Overview
Simple Repository(ish) solution to hold query and command logic into self contained objects
# Example:
“‘ruby class UserRepository
include Repositorish
repositorish :user, scope: :all
def confirmed
where.not(confirmed_at: nil)
end
end
UserRepository.confirmed # => <User::ActiveRecord_Relation …> “‘
Defined Under Namespace
Modules: ClassMethods Classes: DomainMethodError
Constant Summary collapse
- CHAINABLE_NAMESPACES =
%w(ActiveRecord ActiveRecord_Relation ActiveRecord_AssociationRelation)- CHAINABLE_NAMESPACES_REGEX =
/(?:^|::)(?:#{CHAINABLE_NAMESPACES.join('|')})(?:$|::)/.freeze
- VERSION =
'0.1.0'.freeze
Class Method Summary collapse
Instance Method Summary collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method, *args, &block) ⇒ Object
35 36 37 38 39 40 41 42 43 |
# File 'lib/repositorish.rb', line 35 def method_missing(method, *args, &block) return super unless domain.respond_to?(method) result = domain.public_send(method, *args, &block) return result unless chainable?(result) @domain = result self end |
Class Method Details
.included(base) ⇒ Object
27 28 29 |
# File 'lib/repositorish.rb', line 27 def self.included(base) base.send :extend, ClassMethods end |
Instance Method Details
#initialize(domain) ⇒ Object
31 32 33 |
# File 'lib/repositorish.rb', line 31 def initialize(domain) @domain = domain end |
#to_ary ⇒ Object
45 46 47 |
# File 'lib/repositorish.rb', line 45 def to_ary @domain.to_ary end |