influxer 0.0.1 → 0.1.0
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -2
- data/.travis.yml +3 -2
- data/Changelog.md +19 -0
- data/Gemfile +0 -13
- data/MIT-LICENSE +1 -1
- data/README.md +51 -6
- data/gemfiles/rails42.gemfile +7 -0
- data/influxer.gemspec +7 -5
- data/lib/influxer/client.rb +46 -0
- data/lib/influxer/config.rb +10 -0
- data/lib/influxer/metrics/fanout.rb +53 -0
- data/lib/influxer/metrics/metrics.rb +33 -5
- data/lib/influxer/metrics/relation/fanout_query.rb +33 -0
- data/lib/influxer/metrics/relation/time_query.rb +73 -0
- data/lib/influxer/metrics/relation.rb +177 -39
- data/lib/influxer/metrics/scoping/default.rb +28 -0
- data/lib/influxer/metrics/scoping/named.rb +18 -0
- data/lib/influxer/metrics/scoping.rb +56 -0
- data/lib/influxer/model.rb +3 -1
- data/lib/influxer/version.rb +1 -1
- data/spec/client_spec.rb +34 -0
- data/spec/dummy/app/metrics/testo_metrics.rb +1 -1
- data/spec/dummy/app/models/testo.rb +2 -0
- data/spec/dummy/config/application.rb +1 -0
- data/spec/dummy/config/environments/test.rb +0 -1
- data/spec/metrics/fanout_spec.rb +46 -0
- data/spec/metrics/metrics_spec.rb +42 -7
- data/spec/metrics/relation_spec.rb +199 -51
- data/spec/metrics/scoping_spec.rb +68 -0
- data/spec/model/testo_spec.rb +12 -3
- data/spec/spec_helper.rb +1 -1
- metadata +78 -26
@@ -1,78 +1,226 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Influxer::Relation do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
# read
|
10
|
-
specify { expect(rel).to respond_to :select }
|
11
|
-
specify { expect(rel).to respond_to :where }
|
12
|
-
specify { expect(rel).to respond_to :limit }
|
13
|
-
specify { expect(rel).to respond_to :group }
|
14
|
-
|
15
|
-
#delete
|
16
|
-
specify { expect(rel).to respond_to :delete_all }
|
4
|
+
before do
|
5
|
+
allow_any_instance_of(Influxer::Client).to receive(:query) do |_, sql|
|
6
|
+
sql
|
7
|
+
end
|
8
|
+
end
|
17
9
|
|
18
|
-
|
10
|
+
let(:rel) { Influxer::Relation.new DummyMetrics}
|
11
|
+
let(:rel2) { Influxer::Relation.new DummyComplexMetrics}
|
12
|
+
|
13
|
+
specify { expect(rel).to respond_to :write}
|
14
|
+
specify { expect(rel).to respond_to :build}
|
19
15
|
|
16
|
+
# read
|
17
|
+
specify { expect(rel).to respond_to :select }
|
18
|
+
specify { expect(rel).to respond_to :where }
|
19
|
+
specify { expect(rel).to respond_to :limit }
|
20
|
+
specify { expect(rel).to respond_to :group }
|
21
|
+
|
22
|
+
#delete
|
23
|
+
specify { expect(rel).to respond_to :delete_all }
|
20
24
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
25
|
+
specify { expect(rel).to respond_to :to_sql }
|
26
|
+
|
27
|
+
|
28
|
+
describe "merge relations" do
|
29
|
+
it "should merge multi values" do
|
30
|
+
r1 = rel.where(id: [1,2], dummy: 'qwe').time(:hour)
|
31
|
+
r2 = Influxer::Relation.new(DummyMetrics).where.not(user_id: 0).group(:user_id)
|
32
|
+
r1.merge!(r2)
|
33
|
+
expect(r1.to_sql).to eq "select * from \"dummy\" group by time(1h),user_id where (id=1 or id=2) and (dummy='qwe') and (user_id<>0)"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should merge single values" do
|
37
|
+
r1 = rel.time(:hour, fill: 0).limit(10)
|
38
|
+
r2 = Influxer::Relation.new(DummyMetrics).merge(:doomy).limit(5)
|
39
|
+
r1.merge!(r2)
|
40
|
+
expect(r1.to_sql).to eq "select * from \"dummy\" merge \"doomy\" group by time(1h) fill(0) limit 5"
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
26
44
|
|
27
|
-
|
28
|
-
|
45
|
+
describe "sql generation" do
|
46
|
+
describe "from clause" do
|
47
|
+
it "should generate valid from if no conditions" do
|
48
|
+
expect(rel.to_sql).to eq "select * from \"dummy\""
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "select" do
|
53
|
+
it "should select array of symbols" do
|
54
|
+
expect(rel.select(:user_id, :dummy_id).to_sql).to eq "select user_id,dummy_id from \"dummy\""
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should select string" do
|
58
|
+
expect(rel.select("count(user_id)").to_sql).to eq "select count(user_id) from \"dummy\""
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
describe "where" do
|
63
|
+
it "should generate valid conditions from hash" do
|
64
|
+
Timecop.freeze(Time.now) do
|
65
|
+
expect(rel.where(user_id: 1, dummy: 'q', timer: Time.now).to_sql).to eq "select * from \"dummy\" where (user_id=1) and (dummy='q') and (timer=#{Time.now.to_i}s)"
|
29
66
|
end
|
30
67
|
end
|
31
68
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
69
|
+
it "should generate valid conditions from strings" do
|
70
|
+
expect(rel.where("time > now() - 1d").to_sql).to eq "select * from \"dummy\" where (time > now() - 1d)"
|
71
|
+
end
|
72
|
+
|
73
|
+
it "should handle regexps" do
|
74
|
+
expect(rel.where(user_id: 1, dummy: /^du.*/).to_sql).to eq "select * from \"dummy\" where (user_id=1) and (dummy=~/^du.*/)"
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should handle ranges" do
|
78
|
+
expect(rel.where(user_id: 1..4).to_sql).to eq "select * from \"dummy\" where (user_id>1 and user_id<4)"
|
79
|
+
end
|
80
|
+
|
81
|
+
it "should handle arrays" do
|
82
|
+
expect(rel.where(user_id: [1,2,3]).to_sql).to eq "select * from \"dummy\" where (user_id=1 or user_id=2 or user_id=3)"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe "not" do
|
87
|
+
it "should negate simple values" do
|
88
|
+
expect(rel.where.not(user_id: 1, dummy: :a).to_sql).to eq "select * from \"dummy\" where (user_id<>1) and (dummy<>'a')"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should handle regexp" do
|
92
|
+
expect(rel.where.not(user_id: 1, dummy: /^du.*/).to_sql).to eq "select * from \"dummy\" where (user_id<>1) and (dummy!~/^du.*/)"
|
93
|
+
end
|
94
|
+
|
95
|
+
it "should handle ranges" do
|
96
|
+
expect(rel.where.not(user_id: 1..4).to_sql).to eq "select * from \"dummy\" where (user_id<1 and user_id>4)"
|
97
|
+
end
|
98
|
+
|
99
|
+
it "should handle arrays" do
|
100
|
+
expect(rel.where.not(user_id: [1,2,3]).to_sql).to eq "select * from \"dummy\" where (user_id<>1 and user_id<>2 and user_id<>3)"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
describe "merge" do
|
105
|
+
it "should merge with one series" do
|
106
|
+
expect(rel.merge("dubby").to_sql).to eq "select * from \"dummy\" merge \"dubby\""
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should merge with one series as regexp" do
|
110
|
+
expect(rel.merge(/^du[1-6]+$/).to_sql).to eq "select * from \"dummy\" merge /^du[1-6]+$/"
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
describe "past" do
|
115
|
+
it "should work with predefined symbols" do
|
116
|
+
expect(rel.past(:hour).to_sql).to eq "select * from \"dummy\" where (time > now() - 1h)"
|
117
|
+
end
|
118
|
+
|
119
|
+
it "should work with any symbols" do
|
120
|
+
expect(rel.past(:s).to_sql).to eq "select * from \"dummy\" where (time > now() - 1s)"
|
121
|
+
end
|
122
|
+
|
123
|
+
it "should work with strings" do
|
124
|
+
expect(rel.past("3d").to_sql).to eq "select * from \"dummy\" where (time > now() - 3d)"
|
125
|
+
end
|
126
|
+
|
127
|
+
it "should work with numbers" do
|
128
|
+
expect(rel.past(1.day).to_sql).to eq "select * from \"dummy\" where (time > now() - 86400s)"
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe "since" do
|
133
|
+
it "should work with datetime" do
|
134
|
+
expect(rel.since(Time.utc(2014,12,31)).to_sql).to eq "select * from \"dummy\" where (time > 1419984000s)"
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
describe "group" do
|
139
|
+
it "should generate valid groups" do
|
140
|
+
expect(rel.group(:user_id, "time(1m) fill(0)").to_sql).to eq "select * from \"dummy\" group by user_id,time(1m) fill(0)"
|
141
|
+
end
|
142
|
+
|
143
|
+
describe "group by time predefined values" do
|
144
|
+
it "should group by hour" do
|
145
|
+
expect(rel.time(:hour).to_sql).to eq "select * from \"dummy\" group by time(1h)"
|
37
146
|
end
|
38
147
|
|
39
|
-
it "should
|
40
|
-
expect(rel.
|
148
|
+
it "should group by minute" do
|
149
|
+
expect(rel.time(:minute).to_sql).to eq "select * from \"dummy\" group by time(1m)"
|
41
150
|
end
|
42
|
-
end
|
43
151
|
|
44
|
-
|
45
|
-
|
46
|
-
|
152
|
+
it "should group by second" do
|
153
|
+
expect(rel.time(:second).to_sql).to eq "select * from \"dummy\" group by time(1s)"
|
154
|
+
end
|
155
|
+
|
156
|
+
it "should group by millisecond" do
|
157
|
+
expect(rel.time(:ms).to_sql).to eq "select * from \"dummy\" group by time(1u)"
|
158
|
+
end
|
159
|
+
|
160
|
+
it "should group by day" do
|
161
|
+
expect(rel.time(:day).to_sql).to eq "select * from \"dummy\" group by time(1d)"
|
162
|
+
end
|
163
|
+
|
164
|
+
it "should group by week" do
|
165
|
+
expect(rel.time(:week).to_sql).to eq "select * from \"dummy\" group by time(1w)"
|
166
|
+
end
|
167
|
+
|
168
|
+
it "should group by month" do
|
169
|
+
expect(rel.time(:month).to_sql).to eq "select * from \"dummy\" group by time(30d)"
|
47
170
|
end
|
48
|
-
end
|
49
171
|
|
50
|
-
|
51
|
-
|
52
|
-
expect(rel.limit(100).to_sql).to eq "select * from dummy limit 100"
|
172
|
+
it "should group by hour and fill" do
|
173
|
+
expect(rel.time(:month, fill: 0).to_sql).to eq "select * from \"dummy\" group by time(30d) fill(0)"
|
53
174
|
end
|
54
175
|
end
|
55
|
-
end
|
56
176
|
|
57
|
-
|
177
|
+
it "should group by time with string value" do
|
178
|
+
expect(rel.time("4d").to_sql).to eq "select * from \"dummy\" group by time(4d)"
|
179
|
+
end
|
58
180
|
|
59
|
-
|
60
|
-
|
181
|
+
it "should group by time with string value and fill null" do
|
182
|
+
expect(rel.time("4d", fill: :null).to_sql).to eq "select * from \"dummy\" group by time(4d) fill(null)"
|
61
183
|
end
|
62
|
-
|
63
|
-
it "should
|
64
|
-
|
65
|
-
expect(rel.inspect).to eq "#<Influxer::Relation []>"
|
184
|
+
|
185
|
+
it "should group by time and other fields with fill null" do
|
186
|
+
expect(rel.time("4d", fill: 0).group(:dummy_id).to_sql).to eq "select * from \"dummy\" group by time(4d),dummy_id fill(0)"
|
66
187
|
end
|
188
|
+
end
|
67
189
|
|
68
|
-
|
69
|
-
|
70
|
-
expect(rel.
|
190
|
+
describe "limit" do
|
191
|
+
it "should generate valid limi" do
|
192
|
+
expect(rel.limit(100).to_sql).to eq "select * from \"dummy\" limit 100"
|
71
193
|
end
|
194
|
+
end
|
195
|
+
end
|
72
196
|
|
73
|
-
|
74
|
-
|
75
|
-
|
197
|
+
describe "delete_all" do
|
198
|
+
it do
|
199
|
+
Timecop.freeze(Time.now) do
|
200
|
+
expect(rel.where(user_id: 1, dummy: 'q', timer: Time.now).delete_all).to eq "delete from \"dummy\" where (user_id=1) and (dummy='q') and (timer=#{Time.now.to_i}s)"
|
76
201
|
end
|
77
|
-
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
describe "inspect" do
|
206
|
+
|
207
|
+
after(:each) do
|
208
|
+
Influxer.reset
|
209
|
+
end
|
210
|
+
|
211
|
+
it "should return correct String represantation of empty relation" do
|
212
|
+
Influxer.client.stub(:query) { {} }
|
213
|
+
expect(rel.inspect).to eq "#<Influxer::Relation []>"
|
214
|
+
end
|
215
|
+
|
216
|
+
it "should return correct String represantation of non-empty relation" do
|
217
|
+
Influxer.client.stub(:query){ {"dummy" => [1,2,3]} }
|
218
|
+
expect(rel.inspect).to eq "#<Influxer::Relation [1, 2, 3]>"
|
219
|
+
end
|
220
|
+
|
221
|
+
it "should return correct String represantation of non-empty large (>11) relation" do
|
222
|
+
Influxer.client.stub(:query){ {"dummy" => [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]} }
|
223
|
+
expect(rel.inspect).to eq "#<Influxer::Relation [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ...]>"
|
224
|
+
end
|
225
|
+
end
|
78
226
|
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Influxer::Metrics do
|
4
|
+
before do
|
5
|
+
allow_any_instance_of(Influxer::Client).to receive(:query) do |_, sql|
|
6
|
+
sql
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:klass) do
|
11
|
+
Class.new(Influxer::Metrics) do
|
12
|
+
set_series 'dummy'
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:dummy) do
|
17
|
+
Class.new(klass) do
|
18
|
+
default_scope -> { time(:hour) }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:dappy) do
|
23
|
+
Class.new(dummy) do
|
24
|
+
default_scope -> { limit(100) }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
let(:doomy) do
|
29
|
+
Class.new(dappy) do
|
30
|
+
scope :by_user, -> (id) { where(user_id: id) if id.present? }
|
31
|
+
scope :hourly, -> { time(:hour) }
|
32
|
+
scope :daily, -> { time(:day) }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
describe "default scope" do
|
38
|
+
it "should work without default scope" do
|
39
|
+
expect(klass.all.to_sql).to eq "select * from \"dummy\""
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should work with default scope" do
|
43
|
+
expect(dummy.all.to_sql).to eq "select * from \"dummy\" group by time(1h)"
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should work with unscoped" do
|
47
|
+
expect(dummy.unscoped.to_sql).to eq "select * from \"dummy\""
|
48
|
+
end
|
49
|
+
|
50
|
+
it "should work with several defaults" do
|
51
|
+
expect(dappy.where(user_id:1).to_sql).to eq "select * from \"dummy\" group by time(1h) where (user_id=1) limit 100"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe "named scope" do
|
56
|
+
it "should work with named scope" do
|
57
|
+
expect(doomy.by_user(1).to_sql).to eq "select * from \"dummy\" group by time(1h) where (user_id=1) limit 100"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "should work with named scope with empty relation" do
|
61
|
+
expect(doomy.by_user(nil).to_sql).to eq "select * from \"dummy\" group by time(1h) limit 100"
|
62
|
+
end
|
63
|
+
|
64
|
+
it "should work with several scopes" do
|
65
|
+
expect(doomy.where(dummy_id: 100).by_user([1,2,3]).daily.to_sql).to eq "select * from \"dummy\" group by time(1d) where (dummy_id=100) and (user_id=1 or user_id=2 or user_id=3) limit 100"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/spec/model/testo_spec.rb
CHANGED
@@ -1,18 +1,27 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
|
4
3
|
describe Testo do
|
5
4
|
let(:testo) { Testo.new receipt_id: 10}
|
6
5
|
specify { expect(testo).to respond_to :metrics }
|
7
|
-
specify { expect(testo).to respond_to :testo_metrics }
|
6
|
+
specify { expect(testo).to respond_to :testo_metrics }
|
7
|
+
specify { expect(testo).to respond_to :testo2_metrics }
|
8
|
+
specify { expect(testo).to respond_to :custom_metrics }
|
8
9
|
|
9
10
|
describe "metrics attributes" do
|
10
|
-
|
11
11
|
it "should add foreign key and inherits" do
|
12
12
|
expect(testo.metrics.build.testo_id).to eq testo.id
|
13
13
|
expect(testo.testo_metrics.build.testo_id).to eq testo.id
|
14
14
|
expect(testo.testo_metrics.build.receipt_id).to eq 10
|
15
15
|
end
|
16
16
|
|
17
|
+
it "should add custom foreign key" do
|
18
|
+
expect(testo.testo2_metrics.build.testo).to eq testo.id
|
19
|
+
end
|
20
|
+
|
21
|
+
it "should add nil foreign key" do
|
22
|
+
expect(testo.custom_metrics.build.testo_id).to be_nil
|
23
|
+
expect(testo.custom_metrics.build.testo).to be_nil
|
24
|
+
expect(testo.custom_metrics.build.receipt_id).to be_nil
|
25
|
+
end
|
17
26
|
end
|
18
27
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,105 +1,147 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vlad Dem
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: influxdb
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.1.0
|
34
|
-
- -
|
34
|
+
- - ">="
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: 0.1.8
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - ~>
|
41
|
+
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: 0.1.0
|
44
|
-
- -
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 0.1.8
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: timecop
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: '0'
|
54
54
|
type: :development
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- -
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: simplecov
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- -
|
65
|
+
- - ">="
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: 0.3.8
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
|
-
- -
|
72
|
+
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
74
|
version: 0.3.8
|
75
|
+
- !ruby/object:Gem::Dependency
|
76
|
+
name: sqlite3
|
77
|
+
requirement: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
type: :development
|
83
|
+
prerelease: false
|
84
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: pry
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: pry-byebug
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
75
117
|
- !ruby/object:Gem::Dependency
|
76
118
|
name: rspec
|
77
119
|
requirement: !ruby/object:Gem::Requirement
|
78
120
|
requirements:
|
79
|
-
- - ~>
|
121
|
+
- - "~>"
|
80
122
|
- !ruby/object:Gem::Version
|
81
|
-
version: 3.
|
123
|
+
version: 3.1.0
|
82
124
|
type: :development
|
83
125
|
prerelease: false
|
84
126
|
version_requirements: !ruby/object:Gem::Requirement
|
85
127
|
requirements:
|
86
|
-
- - ~>
|
128
|
+
- - "~>"
|
87
129
|
- !ruby/object:Gem::Version
|
88
|
-
version: 3.
|
130
|
+
version: 3.1.0
|
89
131
|
- !ruby/object:Gem::Dependency
|
90
132
|
name: rspec-rails
|
91
133
|
requirement: !ruby/object:Gem::Requirement
|
92
134
|
requirements:
|
93
|
-
- - ~>
|
135
|
+
- - "~>"
|
94
136
|
- !ruby/object:Gem::Version
|
95
|
-
version: 3.
|
137
|
+
version: 3.1.0
|
96
138
|
type: :development
|
97
139
|
prerelease: false
|
98
140
|
version_requirements: !ruby/object:Gem::Requirement
|
99
141
|
requirements:
|
100
|
-
- - ~>
|
142
|
+
- - "~>"
|
101
143
|
- !ruby/object:Gem::Version
|
102
|
-
version: 3.
|
144
|
+
version: 3.1.0
|
103
145
|
description: InfluxDB the Rails way
|
104
146
|
email:
|
105
147
|
- dementiev.vm@gmail.com
|
@@ -107,21 +149,29 @@ executables: []
|
|
107
149
|
extensions: []
|
108
150
|
extra_rdoc_files: []
|
109
151
|
files:
|
110
|
-
- .gitignore
|
111
|
-
- .travis.yml
|
152
|
+
- ".gitignore"
|
153
|
+
- ".travis.yml"
|
154
|
+
- Changelog.md
|
112
155
|
- Gemfile
|
113
156
|
- MIT-LICENSE
|
114
157
|
- README.md
|
115
158
|
- Rakefile
|
116
159
|
- gemfiles/rails40.gemfile
|
117
160
|
- gemfiles/rails41.gemfile
|
161
|
+
- gemfiles/rails42.gemfile
|
118
162
|
- influxer.gemspec
|
119
163
|
- lib/influxer.rb
|
120
164
|
- lib/influxer/client.rb
|
121
165
|
- lib/influxer/config.rb
|
122
166
|
- lib/influxer/engine.rb
|
167
|
+
- lib/influxer/metrics/fanout.rb
|
123
168
|
- lib/influxer/metrics/metrics.rb
|
124
169
|
- lib/influxer/metrics/relation.rb
|
170
|
+
- lib/influxer/metrics/relation/fanout_query.rb
|
171
|
+
- lib/influxer/metrics/relation/time_query.rb
|
172
|
+
- lib/influxer/metrics/scoping.rb
|
173
|
+
- lib/influxer/metrics/scoping/default.rb
|
174
|
+
- lib/influxer/metrics/scoping/named.rb
|
125
175
|
- lib/influxer/model.rb
|
126
176
|
- lib/influxer/version.rb
|
127
177
|
- lib/tasks/influxer_tasks.rake
|
@@ -173,8 +223,10 @@ files:
|
|
173
223
|
- spec/dummy/public/422.html
|
174
224
|
- spec/dummy/public/500.html
|
175
225
|
- spec/dummy/public/favicon.ico
|
226
|
+
- spec/metrics/fanout_spec.rb
|
176
227
|
- spec/metrics/metrics_spec.rb
|
177
228
|
- spec/metrics/relation_spec.rb
|
229
|
+
- spec/metrics/scoping_spec.rb
|
178
230
|
- spec/model/testo_spec.rb
|
179
231
|
- spec/spec_helper.rb
|
180
232
|
- spec/support/dummy_metrics.rb
|
@@ -188,18 +240,18 @@ require_paths:
|
|
188
240
|
- lib
|
189
241
|
required_ruby_version: !ruby/object:Gem::Requirement
|
190
242
|
requirements:
|
191
|
-
- -
|
243
|
+
- - ">="
|
192
244
|
- !ruby/object:Gem::Version
|
193
245
|
version: '0'
|
194
246
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
195
247
|
requirements:
|
196
|
-
- -
|
248
|
+
- - ">="
|
197
249
|
- !ruby/object:Gem::Version
|
198
250
|
version: '0'
|
199
251
|
requirements: []
|
200
252
|
rubyforge_project:
|
201
|
-
rubygems_version: 2.
|
253
|
+
rubygems_version: 2.2.2
|
202
254
|
signing_key:
|
203
255
|
specification_version: 4
|
204
|
-
summary: InfluxDB
|
256
|
+
summary: InfluxDB for Rails
|
205
257
|
test_files: []
|