ruby-druid 0.1.2 → 0.1.3

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/.travis.yml ADDED
@@ -0,0 +1,10 @@
1
+ language: ruby
2
+ rvm:
3
+ - jruby
4
+ - 2.0.0
5
+ - 1.9.3
6
+ notifications:
7
+ email: false
8
+ hipchat:
9
+ rooms:
10
+ secure: WhPGqnsNAVchiJz/rmmIPIFHXI7NVd+k/zClVhtgyoPEdebFYFgOCEIGbE/53IVymVeXFFBeJUVQg1Um4AVsZzVpS5sC6ABWw7rH5PZQZ7k177ZmuhbIAVYLLXcX0OmolgsATvGejifVj5i/Kld46kRx3JDlWL/mA465Kso7a/k=
data/Gemfile CHANGED
@@ -2,20 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
4
 
5
+ gem 'liquid-ext'
6
+ gem 'ripl'
7
+ gem 'terminal-table'
8
+
5
9
  group :test, :development do
6
- gem 'guard'
7
- gem 'guard-bundler'
8
- gem 'guard-rspec'
9
- gem 'rb-fsevent'
10
- gem 'rspec'
11
- gem 'ruby_gntp'
10
+ gem 'liquid-development'
12
11
  gem 'webmock'
13
- gem 'debugger'
14
- end
15
-
16
- group :console do
17
- gem 'activesupport'
18
- gem 'awesome_print'
19
- gem 'ripl'
20
- gem 'terminal-table'
21
12
  end
data/README.md CHANGED
@@ -1,84 +1,29 @@
1
1
  # ruby-druid
2
2
 
3
- [![Code Climate](https://codeclimate.com/github/madvertise/ruby-druid.png)](https://codeclimate.com/github/madvertise/ruby-druid)
3
+ A ruby client for [druid](http://druid.io).
4
4
 
5
- A ruby client for [druid](https://github.com/madvertise/druid).
5
+ ruby-druid features a [Squeel](https://github.com/ernie/squeel)-like query DSL
6
+ and generates a JSON query that can be sent to druid directly. A console for
7
+ testing is also provided.
6
8
 
7
- ruby-druid generates complete JSON queries by chaining methods.
8
- The resulting JSON can be send directly to a druid server or handled seperatly.
9
+ [![Gem Version](https://badge.fury.io/rb/ruby-druid.png)](http://badge.fury.io/rb/ruby-druid)
10
+ [![Build Status](https://travis-ci.org/liquidm/ruby-druid.png)](https://travis-ci.org/liquidm/ruby-druid)
11
+ [![Code Climate](https://codeclimate.com/github/liquidm/ruby-druid.png)](https://codeclimate.com/github/liquidm/ruby-druid)
12
+ [![Dependency Status](https://gemnasium.com/liquidm/ruby-druid.png)](https://gemnasium.com/liquidm/ruby-druid)
9
13
 
10
- ## bin/dripl
14
+ ## Installation
11
15
 
12
- ruby-druid now includes a repl:
16
+ Add this line to your application's Gemfile:
13
17
 
14
- ```ruby
15
- $ bin/dripl
16
- >> metrics
17
- [
18
- [0] "actions"
19
- ]
20
-
21
- >> dimensions
22
- [
23
- [0] "actions"
24
- ]
25
-
26
- >> long_sum(:actions)
27
- +---------+
28
- | actions |
29
- +---------+
30
- | 98575 |
31
- +---------+
32
-
33
- >> long_sum(:actions)[-7.days].granularity(:day)
34
- +-------------------------------+----------+
35
- | timestamp | actions |
36
- +-------------------------------+----------+
37
- | 2013-03-28T00:00:00.000+01:00 | 93371 |
38
- | 2013-03-29T00:00:00.000+01:00 | 448200 |
39
- | 2013-03-30T00:00:00.000+01:00 | 117167 |
40
- | 2013-03-31T00:00:00.000+01:00 | 828321 |
41
- | 2013-04-01T00:00:00.000+02:00 | 261578 |
42
- | 2013-04-02T00:00:00.000+02:00 | 05149 |
43
- | 2013-04-03T00:00:00.000+02:00 | 27512 |
44
- | 2013-04-04T00:00:00.000+02:00 | 18897 |
45
- +-------------------------------+----------+
46
-
47
- >> long_sum(:actions)[-7.days].granularity(:day).properties
48
- {
49
- :dataSource => "events",
50
- :granularity => {
51
- :type => "period",
52
- :period => "P1D",
53
- :timeZone => "Europe/Berlin"
54
- },
55
- :intervals => [
56
- [0] "2013-03-28T00:00:00+01:00/2013-04-04T11:57:20+02:00"
57
- ],
58
- :queryType => :groupBy,
59
- :aggregations => [
60
- [0] {
61
- :type => "longSum",
62
- :name => :actions,
63
- :fieldName => :actions
64
- }
65
- ]
66
- }
67
- ```
18
+ gem 'ruby-druid'
68
19
 
69
- ## Getting started
20
+ And then execute:
70
21
 
71
- In your Gemfile:
22
+ $ bundle
72
23
 
73
- ```ruby
74
- gem 'ruby-druid'
75
- ```
24
+ Or install it yourself as:
76
25
 
77
- In your code:
78
-
79
- ```ruby
80
- require 'druid'
81
- ```
26
+ $ gem install ruby-druid
82
27
 
83
28
  ## Usage
84
29
 
@@ -86,85 +31,87 @@ In your code:
86
31
  Druid::Client.new('zk1:2181,zk2:2181/druid').query('service/source')
87
32
  ```
88
33
 
89
- returns a query object on which all other methods can be called to create a full and valid druid query.
34
+ returns a query object on which all other methods can be called to create a
35
+ full and valid druid query.
90
36
 
91
37
  A query object can be sent like this:
92
38
 
93
39
  ```ruby
94
- Druid::Client.new('zk1:2181,zk2:2181/druid').query('service/source').send
95
- #or
96
40
  client = Druid::Client.new('zk1:2181,zk2:2181/druid')
97
41
  query = Druid::Query.new('service/source')
98
42
  client.send(query)
99
43
  ```
100
44
 
101
- The `send` method returns the parsed response from the druid server as an array.
102
- If the response is not empty it contains one `ResponseRow` object for each row.
103
- The timestamp by can be received by a method with the same name (i.e. `row.timestamp`),
104
- all row values by hashlike syntax (i.e. `row['dimension'])
45
+ The `send` method returns the parsed response from the druid server as an
46
+ array. If the response is not empty it contains one `ResponseRow` object for
47
+ each row. The timestamp by can be received by a method with the same name
48
+ (i.e. `row.timestamp`), all row values by hashlike syntax (i.e.
49
+ `row['dimension'])
105
50
 
106
- ### group_by
51
+ ### GroupBy
107
52
 
108
- https://github.com/metamx/druid/wiki/GroupByQuery - Sets the dimensions to group the data.
53
+ A [GroupByQuery](https://github.com/metamx/druid/wiki/GroupByQuery) sets the
54
+ dimensions to group the data.
109
55
 
110
56
  `queryType` is set automatically to `groupBy`.
111
57
 
112
-
113
58
  ```ruby
114
59
  Druid::Query.new('service/source').group_by([:dimension1, :dimension2])
115
60
  ```
116
61
 
117
- ### time_series
62
+ ### TimeSeries
118
63
 
119
- https://github.com/metamx/druid/wiki/TimeseriesQuery - return an array of JSON objects where each object represents a value asked for by the timeseries query
64
+ A [TimeSeriesQuery](https://github.com/metamx/druid/wiki/TimeseriesQuery)
65
+ returns an array of JSON objects where each object represents a value asked for
66
+ by the timeseries query.
120
67
 
121
68
  ```ruby
122
69
  Druid::Query.new('service/source').time_series([:aggregate1, :aggregate2])
123
70
  ```
124
71
 
125
- ### long_sum
72
+ ### Aggregations
126
73
 
127
74
  ```ruby
128
75
  Druid::Query.new('service/source').long_sum([:aggregate1, :aggregate2])
129
76
  ```
130
77
 
131
- ### postagg
78
+ ### Post Aggregations
132
79
 
133
80
  A simple syntax for post aggregations with +,-,/,* can be used like:
134
81
 
135
82
  ```ruby
136
83
  query = Druid::Query.new('service/source').long_sum([:aggregate1, :aggregate2])
137
-
138
84
  query.postagg{(aggregate2 + aggregate2).as output_field_name}
139
85
  ```
140
86
 
141
- Required fields for the postaggregation are fetched automatically by the library.
87
+ Required fields for the postaggregation are fetched automatically by the
88
+ library.
142
89
 
143
- ### interval
90
+ ### Query Interval
144
91
 
145
- The interval for the query takes a string with date and time or objects that provide a `iso8601` method
92
+ The interval for the query takes a string with date and time or objects that
93
+ provide an `iso8601` method.
146
94
 
147
95
  ```ruby
148
96
  query = Druid::Query.new('service/source').long_sum(:aggregate1)
149
-
150
97
  query.interval("2013-01-01T00", Time.now)
151
98
  ```
152
99
 
153
- ### granularity
100
+ ### Result Granularity
154
101
 
155
- granularity can be `:all`, `:none`, `:minute`, `:fifteen_minute`, `:thirthy_minute`, `:hour` or `:day`.
102
+ The granularity can be `:all`, `:none`, `:minute`, `:fifteen_minute`,
103
+ `:thirthy_minute`, `:hour` or `:day`.
156
104
 
157
- It can also be a period granularity as described in https://github.com/metamx/druid/wiki/Granularities.
105
+ It can also be a period granularity as described in the [druid
106
+ wiki](https://github.com/metamx/druid/wiki/Granularities).
158
107
 
159
108
  The period `'day'` or `:day` will be interpreted as `'P1D'`.
160
109
 
161
- If a period granularity is specifed, the (optional) second parameter is a time zone. It defaults
162
- to the machines local time zone.
110
+ If a period granularity is specifed, the (optional) second parameter is a time
111
+ zone. It defaults to the machines local time zone. i.e.
163
112
 
164
- I.E:
165
113
  ```ruby
166
114
  query = Druid::Query.new('service/source').long_sum(:aggregate1)
167
-
168
115
  query.granularity(:day)
169
116
  ```
170
117
 
@@ -172,75 +119,73 @@ is (on my box) the same as
172
119
 
173
120
  ```ruby
174
121
  query = Druid::Query.new('service/source').long_sum(:aggregate1)
175
-
176
122
  query.granularity('P1D', 'Europe/Berlin')
177
123
  ```
178
124
 
179
- ## having (for metrics)
180
-
181
- ### having >
125
+ ### Having
182
126
 
183
127
  ```ruby
184
128
  Druid::Query.new('service/source').having{metric > 10}
185
129
  ```
186
130
 
187
- ### having <
188
-
189
131
  ```ruby
190
132
  Druid::Query.new('service/source').having{metric < 10}
191
133
  ```
192
134
 
193
- ## filter (for dimensions)
135
+ ### Filters
194
136
 
195
- Filters are set by the `filter` method. It takes a block or a hash as parameter.
137
+ Filters are set by the `filter` method. It takes a block or a hash as
138
+ parameter.
196
139
 
197
140
  Filters can be chained `filter{...}.filter{...}`
198
141
 
199
- ### filter == , eq
142
+ #### Base Filters
200
143
 
201
144
  ```ruby
145
+ # equality
202
146
  Druid::Query.new('service/source').filter{dimension.eq 1}
203
-
204
- #this is the same as
205
-
206
147
  Druid::Query.new('service/source').filter{dimension == 1}
207
148
  ```
208
149
 
209
- ### filter != , neq
210
-
211
150
  ```ruby
151
+ # inequality
212
152
  Druid::Query.new('service/source').filter{dimension.neq 1}
153
+ Druid::Query.new('service/source').filter{dimension != 1}
154
+ ```
213
155
 
214
- #this is the same as
156
+ ```ruby
157
+ # greater, less
158
+ Druid::Query.new('service/source').filter{dimension > 1}
159
+ Druid::Query.new('service/source').filter{dimension >= 1}
160
+ Druid::Query.new('service/source').filter{dimension < 1}
161
+ Druid::Query.new('service/source').filter{dimension <= 1}
162
+ ```
215
163
 
216
- Druid::Query.new('service/source').filter{dimension != 1}
164
+ ```ruby
165
+ # JavaScript
166
+ Druid::Query.new('service/source').filter{a.javascript('dimension >= 1 && dimension < 5')}
217
167
  ```
218
168
 
219
- ### filter and
169
+ #### Compound Filters
220
170
 
221
- a logical or than can combine all other filters
171
+ Filters can be combined with boolean logic.
222
172
 
223
173
  ```ruby
174
+ # and
224
175
  Druid::Query.new('service/source').filter{dimension.neq 1 & dimension2.neq 2}
225
176
  ```
226
177
 
227
- ### filter or
228
-
229
- a logical or than can combine all other filters
230
-
231
178
  ```ruby
179
+ # or
232
180
  Druid::Query.new('service/source').filter{dimension.neq 1 | dimension2.neq 2}
233
181
  ```
234
182
 
235
- ### filter not
236
-
237
- a logical not than can negate all other filter
238
-
239
183
  ```ruby
184
+ # not
240
185
  Druid::Query.new('service/source').filter{!dimension.eq(1)}
241
186
  ```
242
187
 
243
- ### filter in
188
+ #### Inclusion Filter
244
189
 
245
190
  This filter creates a set of equals filters in an and filter.
246
191
 
@@ -248,10 +193,10 @@ This filter creates a set of equals filters in an and filter.
248
193
  Druid::Query.new('service/source').filter{dimension.in(1,2,3)}
249
194
  ```
250
195
 
251
- ### filter with hash syntax
196
+ #### Hash syntax
252
197
 
253
- sometimes it can be useful to use a hash syntax for filtering
254
- for example if you already get them from a list or parameterhash
198
+ Sometimes it can be useful to use a hash syntax for filtering
199
+ for example if you already get them from a list or parameter hash.
255
200
 
256
201
  ```ruby
257
202
  Druid::Query.new('service/source').filter{dimension => 1, dimension1 =>2, dimension2 => 3}
@@ -261,34 +206,69 @@ Druid::Query.new('service/source').filter{dimension => 1, dimension1 =>2, dimens
261
206
  Druid::Query.new('service/source').filter{dimension.eq(1) & dimension1.eq(2) & dimension2.eq(3)}
262
207
  ```
263
208
 
264
- ### filter >, <, >=, <=
209
+ ### DRIPL
265
210
 
266
- ```ruby
267
- Druid::Query.new('service/source').filter{dimension >= 1}
268
- ```
269
-
270
- ### filter javascript
211
+ ruby-druid now includes a [REPL](https://github.com/cldwalker/ripl):
271
212
 
272
213
  ```ruby
273
- Druid::Query.new('service/source').filter{a.javascript('dimension >= 1 && dimension < 5')}
274
-
275
- #this also the same as
276
-
277
- Druid::Query.new('service/source').filter{(dimension >= 1) & (dimension < 5)}
278
- ```
214
+ $ bin/dripl
215
+ >> metrics
216
+ [
217
+ [0] "actions"
218
+ ]
279
219
 
280
- ## Acknowledgements
220
+ >> dimensions
221
+ [
222
+ [0] "actions"
223
+ ]
281
224
 
282
- Post aggregation expression parsing built with the help of [Squeel](https://github.com/ernie/squeel).
225
+ >> long_sum(:actions)
226
+ +---------+
227
+ | actions |
228
+ +---------+
229
+ | 98575 |
230
+ +---------+
283
231
 
284
- ## Contributions
232
+ >> long_sum(:actions)[-7.days].granularity(:day)
233
+ +-------------------------------+----------+
234
+ | timestamp | actions |
235
+ +-------------------------------+----------+
236
+ | 2013-03-28T00:00:00.000+01:00 | 93371 |
237
+ | 2013-03-29T00:00:00.000+01:00 | 448200 |
238
+ | 2013-03-30T00:00:00.000+01:00 | 117167 |
239
+ | 2013-03-31T00:00:00.000+01:00 | 828321 |
240
+ | 2013-04-01T00:00:00.000+02:00 | 261578 |
241
+ | 2013-04-02T00:00:00.000+02:00 | 05149 |
242
+ | 2013-04-03T00:00:00.000+02:00 | 27512 |
243
+ | 2013-04-04T00:00:00.000+02:00 | 18897 |
244
+ +-------------------------------+----------+
285
245
 
286
- ruby-druid is developed by madvertise Mobile Advertising GmbH
246
+ >> long_sum(:actions)[-7.days].granularity(:day).properties
247
+ {
248
+ :dataSource => "events",
249
+ :granularity => {
250
+ :type => "period",
251
+ :period => "P1D",
252
+ :timeZone => "Europe/Berlin"
253
+ },
254
+ :intervals => [
255
+ [0] "2013-03-28T00:00:00+01:00/2013-04-04T11:57:20+02:00"
256
+ ],
257
+ :queryType => :groupBy,
258
+ :aggregations => [
259
+ [0] {
260
+ :type => "longSum",
261
+ :name => :actions,
262
+ :fieldName => :actions
263
+ }
264
+ ]
265
+ }
266
+ ```
287
267
 
288
- You can support us on different ways:
268
+ ## Contributing
289
269
 
290
- * Use ruby-druid, and let us know if you encounter anything that's broken or missing.
291
- A failing spec is great. A pull request with your fix is even better!
292
- * Spread the word about ruby-druid on Twitter, Facebook, and elsewhere.
293
- * Work with us at madvertise on awesome stuff like this.
294
- [Read the job description](http://madvertise.com/software-developer-ruby-fm-berlin) and send a mail to careers@madvertise.com.
270
+ 1. Fork it
271
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
272
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
273
+ 4. Push to the branch (`git push origin my-new-feature`)
274
+ 5. Create new Pull Request
data/Rakefile CHANGED
@@ -1 +1,2 @@
1
1
  require "bundler/gem_tasks"
2
+ require "liquid/tasks"
data/bin/dripl CHANGED
@@ -1,9 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'rubygems'
4
- $:.unshift(File.join(File.expand_path("../..", __FILE__), 'lib'))
5
-
6
- $0 = "dripl"
3
+ require 'bundler/setup'
4
+ require 'liquid/boot'
7
5
 
8
6
  def zookeeper(value)
9
7
  @zk_uri = value
data/lib/druid/console.rb CHANGED
@@ -9,15 +9,21 @@ require 'druid'
9
9
 
10
10
  Ripl::Shell.class_eval do
11
11
  def format_query_result(result, query)
12
-
13
12
  include_timestamp = query.properties[:granularity] != 'all'
14
13
 
15
14
  keys = result.empty? ? [] : result.last.keys
15
+ grouped_result = result.group_by(&:timestamp)
16
16
 
17
- Terminal::Table.new({
18
- headings: (include_timestamp ? ["timestamp"] : []) + keys,
19
- rows: result.map { |row| (include_timestamp ? [row.timestamp] : []) + row.values }
20
- })
17
+ Terminal::Table.new(:headings => keys) do
18
+ grouped_result.each do |timestamp, rows|
19
+ if include_timestamp
20
+ add_row :separator unless timestamp == result.first.timestamp
21
+ add_row [{ :value => timestamp, :colspan => keys.length }]
22
+ add_row :separator
23
+ end
24
+ rows.each {|row| add_row keys.map {|key| row[key] } }
25
+ end
26
+ end
21
27
  end
22
28
 
23
29
  def format_result(result)
data/ruby-druid.gemspec CHANGED
@@ -1,19 +1,20 @@
1
- require 'rake'
1
+ # coding: utf-8
2
2
 
3
- Gem::Specification.new do |gem|
4
- gem.name = 'ruby-druid'
5
- gem.version = '0.1.2'
6
- gem.date = '2013-08-01'
7
- gem.summary = 'Ruby client for druid'
8
- gem.description = 'Ruby client for metamx druid'
9
- gem.authors = 'The LiquidM Team'
10
- gem.email = 'tech@liquidm.com'
11
- gem.homepage = 'https://github.com/madvertise/ruby-druid'
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "ruby-druid"
5
+ spec.version = "0.1.3"
6
+ spec.authors = ["LiquidM, Inc."]
7
+ spec.email = ["opensource@liquidm.com"]
8
+ spec.summary = %q{Ruby client for metamx druid}
9
+ spec.description = %q{Ruby client for metamx druid}
10
+ spec.homepage = "https://github.com/liquidm/ruby-druid"
11
+ spec.license = "MIT"
12
12
 
13
- gem.files = `git ls-files`.split("\n")
14
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
- gem.require_paths = ['lib']
13
+ spec.files = `git ls-files`.split($/)
14
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
15
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
16
+ spec.require_paths = ["lib"]
16
17
 
17
- gem.add_dependency 'zk'
18
- gem.add_dependency 'rest-client'
18
+ spec.add_dependency "zk"
19
+ spec.add_dependency "rest-client"
19
20
  end
@@ -8,12 +8,12 @@ describe Druid::Client do
8
8
  end
9
9
 
10
10
  it 'creates a query' do
11
- Druid::ZooHandler.stub!(:new).and_return(mock(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com'}, :close! => true))
11
+ Druid::ZooHandler.stub(:new).and_return(double(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com'}, :close! => true))
12
12
  Druid::Client.new('test_uri', zk_keepalive: true).query('test/test').should be_a Druid::Query
13
13
  end
14
14
 
15
15
  it 'sends query if block is given' do
16
- Druid::ZooHandler.stub!(:new).and_return(mock(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com'}, :close! => true))
16
+ Druid::ZooHandler.stub(:new).and_return(double(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com'}, :close! => true))
17
17
  client = Druid::Client.new('test_uri', zk_keepalive: true)
18
18
  client.should_receive(:send)
19
19
  client.query('test/test') do
@@ -26,7 +26,7 @@ describe Druid::Client do
26
26
  with(:body => "{\"dataSource\":\"test\",\"granularity\":\"all\",\"intervals\":[\"2013-04-04T00:00:00+00:00/2013-04-04T00:00:00+00:00\"]}",
27
27
  :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
28
28
  to_return(:status => 200, :body => "[]", :headers => {})
29
- Druid::ZooHandler.stub!(:new).and_return(mock(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com/druid/v2'}, :close! => true))
29
+ Druid::ZooHandler.stub(:new).and_return(double(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com/druid/v2'}, :close! => true))
30
30
  client = Druid::Client.new('test_uri', zk_keepalive: true)
31
31
  JSON.should_receive(:parse).and_return([])
32
32
  client.send(client.query('test/test').interval("2013-04-04", "2013-04-04"))
@@ -37,7 +37,7 @@ describe Druid::Client do
37
37
  with(:body => "{\"dataSource\":\"test\",\"granularity\":\"all\",\"intervals\":[\"2013-04-04T00:00:00+00:00/2013-04-04T00:00:00+00:00\"]}",
38
38
  :headers => {'Accept'=>'*/*', 'Content-Type'=>'application/json', 'User-Agent'=>'Ruby'}).
39
39
  to_return(:status => 666, :body => "Strange server error", :headers => {})
40
- Druid::ZooHandler.stub!(:new).and_return(mock(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com/druid/v2'}, :close! => true))
40
+ Druid::ZooHandler.stub(:new).and_return(double(Druid::ZooHandler, :data_sources => {'test/test' => 'http://www.example.com/druid/v2'}, :close! => true))
41
41
  client = Druid::Client.new('test_uri', zk_keepalive: true)
42
42
  expect { client.send(client.query('test/test').interval("2013-04-04", "2013-04-04")) }.to raise_error(RuntimeError, /Request failed: 666: Strange server error/)
43
43
  end
@@ -344,7 +344,7 @@ end
344
344
  end
345
345
 
346
346
  it 'raises wrong number of arguments if filter operator is called without param' do
347
- expect { @query.filter{a.eq}.to_json}.to raise_error 'wrong number of arguments (0 for 1)'
347
+ expect { @query.filter{a.eq}.to_json}.to raise_error
348
348
  end
349
349
 
350
350
  it 'should query regexp using .regexp(string)' do
data/spec/spec_helper.rb CHANGED
@@ -1,2 +1,2 @@
1
- require "druid"
2
- require 'webmock/rspec'
1
+ require 'druid'
2
+ require 'webmock/rspec'
metadata CHANGED
@@ -1,58 +1,59 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby-druid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
5
- prerelease:
4
+ version: 0.1.3
5
+ prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - The LiquidM Team
9
- autorequire:
8
+ - LiquidM, Inc.
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-01 00:00:00.000000000 Z
12
+ date: 2013-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: zk
16
- version_requirements: !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
17
18
  requirements:
18
- - - '>='
19
+ - - ! '>='
19
20
  - !ruby/object:Gem::Version
20
21
  version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
21
25
  none: false
22
- requirement: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - '>='
27
+ - - ! '>='
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0'
27
- none: false
28
- prerelease: false
29
- type: :runtime
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rest-client
32
- version_requirements: !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
33
34
  requirements:
34
- - - '>='
35
+ - - ! '>='
35
36
  - !ruby/object:Gem::Version
36
37
  version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
37
41
  none: false
38
- requirement: !ruby/object:Gem::Requirement
39
42
  requirements:
40
- - - '>='
43
+ - - ! '>='
41
44
  - !ruby/object:Gem::Version
42
45
  version: '0'
43
- none: false
44
- prerelease: false
45
- type: :runtime
46
46
  description: Ruby client for metamx druid
47
- email: tech@liquidm.com
48
- executables: []
47
+ email:
48
+ - opensource@liquidm.com
49
+ executables:
50
+ - dripl
49
51
  extensions: []
50
52
  extra_rdoc_files: []
51
53
  files:
52
54
  - .gitignore
53
- - CHANGELOG.md
55
+ - .travis.yml
54
56
  - Gemfile
55
- - Guardfile
56
57
  - LICENSE
57
58
  - README.md
58
59
  - Rakefile
@@ -72,33 +73,40 @@ files:
72
73
  - spec/lib/query_spec.rb
73
74
  - spec/lib/zoo_handler_spec.rb
74
75
  - spec/spec_helper.rb
75
- homepage: https://github.com/madvertise/ruby-druid
76
- licenses: []
77
- post_install_message:
76
+ homepage: https://github.com/liquidm/ruby-druid
77
+ licenses:
78
+ - MIT
79
+ post_install_message:
78
80
  rdoc_options: []
79
81
  require_paths:
80
82
  - lib
81
83
  required_ruby_version: !ruby/object:Gem::Requirement
84
+ none: false
82
85
  requirements:
83
- - - '>='
86
+ - - ! '>='
84
87
  - !ruby/object:Gem::Version
85
88
  version: '0'
86
- none: false
89
+ segments:
90
+ - 0
91
+ hash: -4499616778972236254
87
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
+ none: false
88
94
  requirements:
89
- - - '>='
95
+ - - ! '>='
90
96
  - !ruby/object:Gem::Version
91
97
  version: '0'
92
- none: false
98
+ segments:
99
+ - 0
100
+ hash: -4499616778972236254
93
101
  requirements: []
94
- rubyforge_project:
95
- rubygems_version: 1.8.24
96
- signing_key:
102
+ rubyforge_project:
103
+ rubygems_version: 1.8.25
104
+ signing_key:
97
105
  specification_version: 3
98
- summary: Ruby client for druid
106
+ summary: Ruby client for metamx druid
99
107
  test_files:
100
108
  - spec/lib/client_spec.rb
101
109
  - spec/lib/query_spec.rb
102
110
  - spec/lib/zoo_handler_spec.rb
103
111
  - spec/spec_helper.rb
104
- has_rdoc:
112
+ has_rdoc:
data/CHANGELOG.md DELETED
@@ -1,5 +0,0 @@
1
- ### 0.1.1
2
-
3
- * Zookeeper connection issues
4
- * Fixed the issue where ZK connections weren't closed after the client was initialized. The new flow opens a connection to ZK then closes it once it has a list of data sources. To keep the connection open with ZK please use the options `zk_keepalive: true`
5
- * Added Time Series query support. You can now use `.time_series(aggregations)` for time series based queries
data/Guardfile DELETED
@@ -1,10 +0,0 @@
1
- # More info at https://github.com/guard/guard#readme
2
- guard :bundler do
3
- watch('Gemfile')
4
- end
5
-
6
- guard :rspec, :cli => '--color --format nested' do
7
- watch(%r{^spec/.+_spec\.rb$})
8
- watch(%r{^(.+)\.rb$}) {|m| "spec/#{m[1]}_spec.rb" }
9
- watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
10
- end