waistband 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -12,9 +12,7 @@ brew install elasticsearch
12
12
 
13
13
  Add this line to your application's Gemfile:
14
14
 
15
- gem 'waistband', git: 'git@github.com:taskrabbit/waistband.git', tag: 'v0.0.9'
16
-
17
- Be sure to check out the [releases page](https://github.com/taskrabbit/waistband/releases) to get the latest tag.
15
+ gem 'waistband'
18
16
 
19
17
  And then execute:
20
18
 
@@ -140,14 +138,16 @@ index.read('my_data')
140
138
 
141
139
  ### Searching
142
140
 
143
- For searching, Waistband has the Query class available:
141
+ For searching, you construct a query from your index:
144
142
 
145
143
  ```ruby
146
144
  index = Waistband::Index.new('search')
147
- query = index.query('shopping')
148
- query.add_fields('name', 'description') # look for the search term `shopping` in the attributes `name` and `description`
149
- query.add_term('task', 'true') # only in documents where the attribute task is set to true
150
- query.add_optiona_term('task', 'true') # prefers documents where the attribute task is set to true
145
+ query = index.query(page_size: 5).prepare({
146
+ query: {
147
+ term: { hidden: false }
148
+ },
149
+ sort: { created_at: {order: 'desc' } }
150
+ })
151
151
 
152
152
  query.results # => returns an array of Waistband::QueryResult
153
153
 
@@ -166,21 +166,6 @@ query.results
166
166
 
167
167
  For paginating the results, you can use the `#paginated_results` method, which requires the [Kaminari](https://github.com/amatsuda/kaminari), gem. If you use another gem, you can just override the method, etc.
168
168
 
169
- ### Model
170
-
171
- The gem offers a `Waistband::Model` that you can use to store model type data into the Elastic Search index. You just inherit from the class and define the following class methods:
172
-
173
- ```ruby
174
- class Thing < Waistband::Model
175
- with_index :my_index_name
176
-
177
- columns :user_id, :content, :admin_visible
178
- defaults admin_visible: false
179
-
180
- validates :user_id, :content
181
- end
182
- ```
183
-
184
169
  For more information and extra methods, take a peek into the class docs.
185
170
 
186
171
  ## Contributing
@@ -3,8 +3,6 @@ require 'active_support/core_ext/hash/indifferent_access'
3
3
  module Waistband
4
4
  class Query
5
5
 
6
- include ::Waistband::QueryHelpers
7
-
8
6
  attr_accessor :page, :page_size
9
7
 
10
8
  def initialize(index, options = {})
@@ -19,6 +17,25 @@ module Waistband
19
17
  self
20
18
  end
21
19
 
20
+ def paginated_results
21
+ return Kaminari.paginate_array(results, total_count: total_results).page(@page).per(@page_size) if defined?(Kaminari)
22
+ raise "Please include the `kaminari` gem to use this method!"
23
+ end
24
+
25
+ def results
26
+ hits.map do |hit|
27
+ Waistband::QueryResult.new(hit)
28
+ end
29
+ end
30
+
31
+ def hits
32
+ execute!['hits']['hits'] rescue []
33
+ end
34
+
35
+ def total_results
36
+ execute!['hits']['total'] rescue 0
37
+ end
38
+
22
39
  private
23
40
 
24
41
  def to_hash
@@ -28,6 +45,22 @@ module Waistband
28
45
  @hash
29
46
  end
30
47
 
48
+ def url
49
+ index.search_url
50
+ end
51
+
52
+ def index
53
+ Waistband::Index.new(@index)
54
+ end
55
+
56
+ def execute!
57
+ JSON.parse(RestClient::Request.execute(method: :get, url: url, payload: to_hash.to_json))
58
+ end
59
+
60
+ def from
61
+ @page_size * (@page - 1)
62
+ end
63
+
31
64
  # /private
32
65
 
33
66
  end
@@ -1,3 +1,3 @@
1
1
  module Waistband
2
- VERSION = "0.7.3"
2
+ VERSION = "0.7.4"
3
3
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waistband
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.3
4
+ version: 0.7.4
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - David Jairala
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-10-24 00:00:00.000000000 Z
12
+ date: 2014-01-29 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activesupport
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rest-client
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ~>
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ~>
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: json
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ~>
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ~>
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: bundler
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ~>
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ~>
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: rake
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ! '>='
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ! '>='
81
92
  - !ruby/object:Gem::Version
@@ -100,7 +111,6 @@ files:
100
111
  - lib/waistband/connection.rb
101
112
  - lib/waistband/index.rb
102
113
  - lib/waistband/query.rb
103
- - lib/waistband/query_helpers.rb
104
114
  - lib/waistband/query_result.rb
105
115
  - lib/waistband/quick_error.rb
106
116
  - lib/waistband/stringified_array.rb
@@ -123,26 +133,27 @@ files:
123
133
  homepage: https://github.com/taskrabbit/waistband
124
134
  licenses:
125
135
  - MIT
126
- metadata: {}
127
136
  post_install_message:
128
137
  rdoc_options: []
129
138
  require_paths:
130
139
  - lib
131
140
  required_ruby_version: !ruby/object:Gem::Requirement
141
+ none: false
132
142
  requirements:
133
143
  - - ! '>='
134
144
  - !ruby/object:Gem::Version
135
145
  version: 1.9.3
136
146
  required_rubygems_version: !ruby/object:Gem::Requirement
147
+ none: false
137
148
  requirements:
138
149
  - - ! '>='
139
150
  - !ruby/object:Gem::Version
140
151
  version: '0'
141
152
  requirements: []
142
153
  rubyforge_project:
143
- rubygems_version: 2.0.5
154
+ rubygems_version: 1.8.25
144
155
  signing_key:
145
- specification_version: 4
156
+ specification_version: 3
146
157
  summary: Elastic Search all the things!
147
158
  test_files:
148
159
  - spec/config/waistband/waistband.yml
@@ -158,4 +169,3 @@ test_files:
158
169
  - spec/lib/stringified_hash_spec.rb
159
170
  - spec/spec_helper.rb
160
171
  - spec/support/index_helper.rb
161
- has_rdoc:
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjQ5YjAyNjA1NGIyZGE4ZTZjNDg0MjhkNGU3OWY1NmIwZTYxMTIxZQ==
5
- data.tar.gz: !binary |-
6
- MTU2YjFhN2YyY2QwMzljNWQ4NTJmYTNjNGJlZjE5NDA2YjcxMjU1NA==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- YWVhNTE5MDM5ZGY3OGM2MTE0ZWU5MzY0Njc2ZjcxZGI2MjE0NWViNDNmZjI4
10
- MTgyN2Q2ZGQ5Yzk1Y2I3NjRlYWNhYTc2NmI2NjEzMmQwMTMwZDBmODk2YjI4
11
- ZjJiZDJkMDc5OWNhNGQwZDU0MDMwMTEzNDczZGQ3Yjc2Yjg4MGY=
12
- data.tar.gz: !binary |-
13
- MTRkMDdkYzRlMzFiZGU1OGExY2FjN2QyYmRhNTFkYjBjNzU0ZDg1NWM0MWVl
14
- YWE3NWU0NWRkODI5ZjIyNTViZjAxZjAzNjJjMjFjZDlkM2M1OWI2M2YxMWU0
15
- NjA4MmMyOGM2ZWUyMTBjZWYzMTg0MTc0Yjg3MDQ1ZTFmOWQyNjU=
@@ -1,46 +0,0 @@
1
- require 'rest-client'
2
-
3
- module Waistband
4
- module QueryHelpers
5
-
6
- def paginated_results
7
- return Kaminari.paginate_array(results, total_count: total_results).page(@page).per(@page_size) if defined?(Kaminari)
8
- raise "Please include the `kaminari` gem to use this method!"
9
- end
10
-
11
- def results
12
- hits.map do |hit|
13
- Waistband::QueryResult.new(hit)
14
- end
15
- end
16
-
17
- def hits
18
- execute!['hits']['hits'] rescue []
19
- end
20
-
21
- def total_results
22
- execute!['hits']['total'] rescue 0
23
- end
24
-
25
- private
26
-
27
- def url
28
- index.search_url
29
- end
30
-
31
- def index
32
- Waistband::Index.new(@index)
33
- end
34
-
35
- def execute!
36
- JSON.parse(RestClient::Request.execute(method: :get, url: url, payload: to_hash.to_json))
37
- end
38
-
39
- def from
40
- @page_size * (@page - 1)
41
- end
42
-
43
- # /private
44
-
45
- end
46
- end