Module: Cloudsearchable::ClassMethods
- Defined in:
- lib/cloudsearchable.rb
Instance Method Summary collapse
- #cloudsearch_domains ⇒ Object
- #cloudsearch_domains=(domains) ⇒ Object
- #cloudsearch_index(name = nil) ⇒ Object
-
#cloudsearch_prefix ⇒ Object
Prefix name used for indexes, defaults to class name underscored.
-
#index_in_cloudsearch(name = nil, &block) ⇒ Object
Declares a Cloudsearchable index that returns a list of object of this class.
-
#materialize_method(method_name = nil) ⇒ Object
By default use ‘find’ to materialize items.
- #new_cloudsearch_index(name) ⇒ Object
Instance Method Details
#cloudsearch_domains ⇒ Object
94 95 96 |
# File 'lib/cloudsearchable.rb', line 94 def cloudsearch_domains @cloudsearch_domains || {} end |
#cloudsearch_domains=(domains) ⇒ Object
90 91 92 |
# File 'lib/cloudsearchable.rb', line 90 def cloudsearch_domains= domains @cloudsearch_domains = domains end |
#cloudsearch_index(name = nil) ⇒ Object
132 133 134 |
# File 'lib/cloudsearchable.rb', line 132 def cloudsearch_index name = nil cloudsearch_domains[name] end |
#cloudsearch_prefix ⇒ Object
Prefix name used for indexes, defaults to class name underscored
139 140 141 |
# File 'lib/cloudsearchable.rb', line 139 def cloudsearch_prefix name.pluralize.underscore.gsub('/', '_') end |
#index_in_cloudsearch(name = nil, &block) ⇒ Object
Declares a Cloudsearchable index that returns a list of object of this class.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/cloudsearchable.rb', line 107 def index_in_cloudsearch(name = nil, &block) locator_field = :"#{cloudsearch_prefix.singularize}_id" # Fetches the existing search domain, or generates a new one unless domain = cloudsearch_domains[name] domain = new_cloudsearch_index(name).tap do |d| # This id field is used to reify search results d.add_field(locator_field, :literal, :result_enabled => true, :search_enabled => true, :source => :id) end self.cloudsearch_domains = self.cloudsearch_domains.merge({name => domain}) end if block_given? dsl = DSL.new(domain, self) dsl.instance_exec &block end # Define the search method search_method_name = "search#{name && ('_' + name.to_s)}".to_sym define_singleton_method search_method_name do Query.new(self, cloudsearch_index(name), locator_field) end end |
#materialize_method(method_name = nil) ⇒ Object
By default use ‘find’ to materialize items
149 150 151 152 |
# File 'lib/cloudsearchable.rb', line 149 def materialize_method method_name = nil @materialize_method = method_name unless method_name.nil? @materialize_method.nil? ? :find : @materialize_method end |
#new_cloudsearch_index(name) ⇒ Object
143 144 145 146 |
# File 'lib/cloudsearchable.rb', line 143 def new_cloudsearch_index name name = [cloudsearch_prefix, name].compact.join('-').gsub('_','-') Cloudsearchable::Domain.new name end |