influxer 0.2.0 → 0.2.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a9483ba238ca5ac211fc174ae7dd81c49fd5aa08
4
- data.tar.gz: 1915d412dc2bd255e4460e7448d8e007ec9dadf2
3
+ metadata.gz: 2b4166514c7bebd4c2af58c8362902eac3ee2113
4
+ data.tar.gz: 4d635a59d2969f7be5134018504d1fd93679d73c
5
5
  SHA512:
6
- metadata.gz: ba9f6fc956de4fbf97e30a4f7dcf2ed248082ef4f1260ae18080b6cfd4d606239a3bc82346cfe815b77d355fe739ca2fecfb61ee8ed0ff5f037f7f900283ebea
7
- data.tar.gz: 89bf51a352e1c83bf5a02d793aa7d43c820dbbc3275ef0447f6195d7c15fe5d94242989e2f75f728b575a3de8c58d71702163776887964ddfd2f547c9ec68d24
6
+ metadata.gz: 46fdff670e7c1f5d82dd4c89724c3b2710946bed1e5b584fb0fdddd2b78f7279d5e2a551599592f3ae7d99b2a1fb0f494cfbc8df981b40fada5ce2512cad04e5
7
+ data.tar.gz: 7db66507e1616b9dd99dfe55310e73c080c655fd70f2f8506eb6d294e61bfd9fb94401a6caf0ef23de9e66235fafb7afe5e550cdcd68cd8aa1961175fb00d515
data/influxer.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |s|
17
17
 
18
18
  s.add_runtime_dependency "rails", '~> 4.0'
19
19
  s.add_dependency "influxdb", "~> 0.1.0", ">= 0.1.8"
20
- s.add_dependency "anyway_config", "~> 0.4"
20
+ s.add_dependency "anyway_config", "~>0", ">= 0.3"
21
21
 
22
22
  s.add_development_dependency "timecop"
23
23
  s.add_development_dependency "simplecov", ">= 0.3.8"
@@ -1,11 +1,12 @@
1
1
  require 'influxer/metrics/relation'
2
2
  require 'influxer/metrics/scoping'
3
3
  require 'influxer/metrics/fanout'
4
+ require 'active_model'
4
5
 
5
6
  module Influxer
6
7
  class MetricsError < StandardError; end
7
8
  class MetricsInvalid < MetricsError; end
8
-
9
+
9
10
  class Metrics
10
11
  include ActiveModel::Model
11
12
  include ActiveModel::Validations
@@ -20,10 +21,10 @@ module Influxer
20
21
  # delegate query functions to all
21
22
  delegate *(
22
23
  [
23
- :write, :select, :where, :group,
24
- :merge, :time, :past, :since, :limit,
24
+ :write, :select, :where, :group,
25
+ :merge, :time, :past, :since, :limit,
25
26
  :fill, :delete_all
26
- ]+Influxer::Calculations::CALCULATION_METHODS),
27
+ ]+Influxer::Calculations::CALCULATION_METHODS),
27
28
  to: :all
28
29
 
29
30
  def attributes(*attrs)
@@ -41,7 +42,7 @@ module Influxer
41
42
  def inherited(subclass)
42
43
  subclass.set_series
43
44
  end
44
-
45
+
45
46
  def set_series(*args)
46
47
  if args.empty?
47
48
  matches = self.to_s.match(/^(.*)Metrics$/)
@@ -66,7 +67,7 @@ module Influxer
66
67
  current_scope.clone
67
68
  else
68
69
  default_scoped
69
- end
70
+ end
70
71
  end
71
72
  end
72
73
 
@@ -82,7 +83,7 @@ module Influxer
82
83
  return false if self.invalid?
83
84
 
84
85
  run_callbacks :write do
85
- self.write_point
86
+ write_point
86
87
  end
87
88
  self
88
89
  end
@@ -93,9 +94,9 @@ module Influxer
93
94
  end
94
95
 
95
96
  def write_point
96
- client.write_point series, @attributes
97
+ client.write_point unquote(series), @attributes
97
98
  @persisted = true
98
- end
99
+ end
99
100
 
100
101
  def persisted?
101
102
  @persisted
@@ -109,6 +110,10 @@ module Influxer
109
110
  Influxer.client
110
111
  end
111
112
 
113
+
114
+ attributes :time
115
+
116
+
112
117
  def quote_series(val)
113
118
  case val
114
119
  when Regexp
@@ -122,11 +127,15 @@ module Influxer
122
127
  quote_series(val.first)
123
128
  end
124
129
  else
125
- '"'+val.to_s.gsub(/\"/){ %q{\"} }+'"'
130
+ '"'+val.to_s.gsub(/\"/){ %q{\"} }+'"'
126
131
  end
127
132
  end
128
133
 
129
- attributes :time
130
-
134
+ private
135
+
136
+ def unquote(name)
137
+ name.gsub(/(\A['"]|['"]\z)/,'')
138
+ end
139
+
131
140
  end
132
- end
141
+ end
@@ -1,3 +1,3 @@
1
1
  module Influxer
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.2"
3
3
  end
@@ -49,36 +49,37 @@ describe Influxer::Metrics do
49
49
 
50
50
  let(:dummy_metrics) { DummyMetrics.new dummy_id: 1, user_id: 1}
51
51
 
52
- describe "write method" do
53
-
54
- it "should not write if required attribute is missing" do
55
- m = DummyMetrics.new(dummy_id: 1)
56
- expect(m.write).to be false
57
- expect(m.errors.size).to eq(1)
58
- end
59
-
60
- it "should raise error if required attribute is missing" do
61
- expect{DummyMetrics.new(user_id: 1).write!}.to raise_error(StandardError)
52
+ describe "#write" do
53
+
54
+ context "Validations" do
55
+ it "should not write if required attribute is missing" do
56
+ m = DummyMetrics.new(dummy_id: 1)
57
+ expect(m.write).to be false
58
+ expect(m.errors.size).to eq(1)
59
+ end
60
+
61
+ it "should raise error if required attribute is missing" do
62
+ expect{DummyMetrics.new(user_id: 1).write!}.to raise_error(StandardError)
63
+ end
64
+
65
+ it "should raise error if you want to write twice" do
66
+ expect(dummy_metrics.write).to be_truthy
67
+ expect{dummy_metrics.write!}.to raise_error(StandardError)
68
+ end
62
69
  end
63
70
 
64
71
  it "should write successfully when all required attributes are set" do
72
+ expect(Influxer.client).to receive(:write_point).with("dummy", anything)
65
73
  expect(dummy_metrics.write).to be_truthy
66
74
  expect(dummy_metrics.persisted?).to be_truthy
67
75
  end
68
-
69
- it "should raise error if you want to write twice" do
70
- expect(dummy_metrics.write).to be_truthy
71
- expect{dummy_metrics.write!}.to raise_error(StandardError)
72
- end
73
76
  end
74
77
 
75
- describe "active_model callbacks on write" do
76
- it "should work" do
77
-
78
+ context "active_model callbacks" do
79
+ it "should set current time" do
78
80
  Timecop.freeze(Time.local(2014,10,10,10,10,10)) do
79
81
  dummy_metrics.write!
80
82
  end
81
-
82
83
  expect(dummy_metrics.time).to eq Time.local(2014,10,10,10,10,10)
83
84
  end
84
85
  end
@@ -89,7 +90,8 @@ describe Influxer::Metrics do
89
90
 
90
91
  let(:dummy_metrics) do
91
92
  Class.new(Influxer::Metrics) do
92
- set_series :dummies
93
+ set_series :dummies
94
+ attributes :user_id, :dummy_id
93
95
  end
94
96
  end
95
97
 
@@ -159,7 +161,9 @@ describe Influxer::Metrics do
159
161
 
160
162
  describe "write method" do
161
163
  it "should write data and return point" do
162
- point = DummyMetrics.write(user_id: 1, dummy_id: 2)
164
+ expect(Influxer.client).to receive(:write_point).with("dummies", {user_id: 1, dummy_id: 2})
165
+
166
+ point = dummy_metrics.write(user_id: 1, dummy_id: 2)
163
167
  expect(point.persisted?).to be_truthy
164
168
  expect(point.user_id).to eq 1
165
169
  expect(point.dummy_id).to eq 2
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: influxer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Vlad Dem
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-11 00:00:00.000000000 Z
11
+ date: 2015-03-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -50,14 +50,20 @@ dependencies:
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0.4'
53
+ version: '0'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0.3'
54
57
  type: :runtime
55
58
  prerelease: false
56
59
  version_requirements: !ruby/object:Gem::Requirement
57
60
  requirements:
58
61
  - - "~>"
59
62
  - !ruby/object:Gem::Version
60
- version: '0.4'
63
+ version: '0'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0.3'
61
67
  - !ruby/object:Gem::Dependency
62
68
  name: timecop
63
69
  requirement: !ruby/object:Gem::Requirement
@@ -271,3 +277,4 @@ signing_key:
271
277
  specification_version: 4
272
278
  summary: InfluxDB for Rails
273
279
  test_files: []
280
+ has_rdoc: