influxdb 0.0.9 → 0.0.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -3
- data/Gemfile +1 -0
- data/README.md +10 -0
- data/lib/influxdb.rb +4 -0
- data/lib/influxdb/client.rb +85 -29
- data/lib/influxdb/config.rb +44 -0
- data/lib/influxdb/logger.rb +10 -0
- data/lib/influxdb/max_queue.rb +17 -0
- data/lib/influxdb/version.rb +1 -1
- data/lib/influxdb/worker.rb +59 -0
- data/spec/influxdb/client_spec.rb +79 -16
- data/spec/max_queue_spec.rb +32 -0
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a15d18aa85145172f0abb3333ef7ffb9641b4ada
|
4
|
+
data.tar.gz: 6146be97a07658dffb26b044d15ddca5adc8e8ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 191c102bd7ad4f5e136763b16ba0efce9b2f6f1002bcea5e317cad36ad20918484c714e277a329890598bd1172469bf117013ed93e2db5ed7742aebbfaa7c8bc
|
7
|
+
data.tar.gz: 7cdbe3eefee7b679dae5c46d1a825cc36195d1bdb05326cf57dd005c1ce3663d57bd34414edaa289424281a726d9df6d25702fea527b4d8711bb6edac9d02151
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -97,6 +97,16 @@ database = 'site_development'
|
|
97
97
|
influxdb.delete_database(database)
|
98
98
|
```
|
99
99
|
|
100
|
+
Delete a database user:
|
101
|
+
|
102
|
+
``` ruby
|
103
|
+
require 'influxdb'
|
104
|
+
|
105
|
+
influxdb = InfluxDB::Client.new
|
106
|
+
|
107
|
+
influxdb.delete_database_user(database, username)
|
108
|
+
```
|
109
|
+
|
100
110
|
Querying:
|
101
111
|
|
102
112
|
``` ruby
|
data/lib/influxdb.rb
CHANGED
data/lib/influxdb/client.rb
CHANGED
@@ -2,10 +2,13 @@ require 'uri'
|
|
2
2
|
require 'net/http'
|
3
3
|
require 'json'
|
4
4
|
|
5
|
-
|
6
5
|
module InfluxDB
|
7
6
|
class Client
|
8
7
|
attr_accessor :host, :port, :username, :password, :database
|
8
|
+
attr_accessor :queue
|
9
|
+
|
10
|
+
include InfluxDB::Logger
|
11
|
+
include InfluxDB::Worker
|
9
12
|
|
10
13
|
# Initializes a new Influxdb client
|
11
14
|
#
|
@@ -34,54 +37,95 @@ module InfluxDB
|
|
34
37
|
@username = opts[:username] || "root"
|
35
38
|
@password = opts[:password] || "root"
|
36
39
|
@database = args.first
|
40
|
+
@http = Net::HTTP.new(@host, @port)
|
41
|
+
@queue = InfluxDB::MaxQueue.new
|
42
|
+
spawn_threads!
|
37
43
|
end
|
38
44
|
|
39
45
|
def create_database(name)
|
40
|
-
|
41
|
-
url = "/db?u=#{@username}&p=#{@password}"
|
46
|
+
url = full_url("db")
|
42
47
|
data = JSON.generate({:name => name})
|
43
48
|
|
44
|
-
|
49
|
+
headers = {"Content-Type" => "application/json"}
|
50
|
+
response = @http.request(Net::HTTP::Post.new(url, headers), data)
|
45
51
|
end
|
46
52
|
|
47
53
|
def delete_database(name)
|
48
|
-
|
49
|
-
url = "/db/#{name}?u=#{@username}&p=#{@password}"
|
54
|
+
url = full_url("db/#{name}")
|
50
55
|
|
51
|
-
response = http.request(Net::HTTP::Delete.new(url))
|
56
|
+
response = @http.request(Net::HTTP::Delete.new(url))
|
52
57
|
end
|
53
58
|
|
54
59
|
def get_database_list
|
55
|
-
|
56
|
-
url = "/dbs?u=#{@username}&p=#{@password}"
|
60
|
+
url = full_url("dbs")
|
57
61
|
|
58
|
-
response = http.request(Net::HTTP::Get.new(url))
|
62
|
+
response = @http.request(Net::HTTP::Get.new(url))
|
59
63
|
JSON.parse(response.body)
|
60
64
|
end
|
61
65
|
|
66
|
+
def create_cluster_admin(username, password)
|
67
|
+
url = full_url("cluster_admins")
|
68
|
+
data = JSON.generate({:name => username, :password => password})
|
69
|
+
|
70
|
+
headers = {"Content-Type" => "application/json"}
|
71
|
+
response = @http.request(Net::HTTP::Post.new(url, headers), data)
|
72
|
+
end
|
73
|
+
|
74
|
+
def update_cluster_admin(username, password)
|
75
|
+
url = full_url("cluster_admins/#{username}")
|
76
|
+
data = JSON.generate({:password => password})
|
77
|
+
|
78
|
+
headers = {"Content-Type" => "application/json"}
|
79
|
+
response = @http.request(Net::HTTP::Post.new(url, headers), data)
|
80
|
+
end
|
81
|
+
|
82
|
+
def delete_cluster_admin(username)
|
83
|
+
url = full_url("cluster_admins/#{username}")
|
84
|
+
|
85
|
+
response = @http.request(Net::HTTP::Delete.new(url))
|
86
|
+
end
|
87
|
+
|
62
88
|
def create_database_user(database, username, password)
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
89
|
+
url = full_url("db/#{database}/users")
|
90
|
+
data = JSON.generate({:name => username, :password => password})
|
91
|
+
|
92
|
+
headers = {"Content-Type" => "application/json"}
|
93
|
+
response = @http.request(Net::HTTP::Post.new(url, headers), data)
|
94
|
+
end
|
95
|
+
|
96
|
+
def update_database_user(database, username, options = {})
|
97
|
+
url = full_url("db/#{database}/users/#{username}")
|
98
|
+
data = JSON.generate(options)
|
99
|
+
|
100
|
+
headers = {"Content-Type" => "application/json"}
|
101
|
+
@http.request(Net::HTTP::Post.new(url, headers), data)
|
102
|
+
end
|
103
|
+
|
104
|
+
def delete_database_user(database, username)
|
105
|
+
url = full_url("db/#{database}/users/#{username}")
|
106
|
+
|
107
|
+
@http.request(Net::HTTP::Delete.new(url))
|
67
108
|
end
|
68
109
|
|
69
110
|
def get_database_user_list(database)
|
70
|
-
|
71
|
-
url = "/db/#{database}/users?u=#{@username}&p=#{@password}"
|
111
|
+
url = full_url("db/#{database}/users")
|
72
112
|
|
73
|
-
response = http.request(Net::HTTP::Get.new(url))
|
113
|
+
response = @http.request(Net::HTTP::Get.new(url))
|
74
114
|
JSON.parse(response.body)
|
75
115
|
end
|
76
116
|
|
77
|
-
def
|
78
|
-
|
79
|
-
|
80
|
-
|
117
|
+
def alter_database_privilege(database, username, admin=true)
|
118
|
+
url = full_url("db/#{database}/users/#{username}")
|
119
|
+
data = JSON.generate({:admin => admin})
|
120
|
+
|
121
|
+
headers = {"Content-Type" => "application/json"}
|
122
|
+
@http.request(Net::HTTP::Post.new(url, headers), data)
|
123
|
+
end
|
81
124
|
|
125
|
+
def write_point(name, data, async=false)
|
82
126
|
data = data.is_a?(Array) ? data : [data]
|
83
|
-
columns = data.reduce(:merge).keys
|
84
|
-
payload[:columns
|
127
|
+
columns = data.reduce(:merge).keys.sort {|a,b| a.to_s <=> b.to_s}
|
128
|
+
payload = {:name => name, :points => [], :columns => columns}
|
85
129
|
|
86
130
|
data.each do |p|
|
87
131
|
point = []
|
@@ -89,15 +133,21 @@ module InfluxDB
|
|
89
133
|
payload[:points].push point
|
90
134
|
end
|
91
135
|
|
92
|
-
|
93
|
-
|
136
|
+
async ? @queue.push(payload) : _write([payload])
|
137
|
+
end
|
138
|
+
|
139
|
+
def _write(payload)
|
140
|
+
url = full_url("db/#{@database}/series")
|
141
|
+
data = JSON.generate(payload)
|
142
|
+
|
143
|
+
headers = {"Content-Type" => "application/json"}
|
144
|
+
response = @http.request(Net::HTTP::Post.new(url, headers), data)
|
94
145
|
end
|
95
146
|
|
96
|
-
def query
|
97
|
-
|
98
|
-
url = "/db/#{@database}/series?u=#{@username}&p=#{@password}&q=#{query}"
|
147
|
+
def query(query)
|
148
|
+
url = full_url("db/#{@database}/series", "q=#{query}")
|
99
149
|
url = URI.encode url
|
100
|
-
response = http.request(Net::HTTP::Get.new(url))
|
150
|
+
response = @http.request(Net::HTTP::Get.new(url))
|
101
151
|
series = JSON.parse(response.body)
|
102
152
|
|
103
153
|
if block_given?
|
@@ -113,6 +163,12 @@ module InfluxDB
|
|
113
163
|
end
|
114
164
|
|
115
165
|
private
|
166
|
+
def full_url(path, params=nil)
|
167
|
+
"".tap do |url|
|
168
|
+
url << "/#{path}?u=#{@username}&p=#{@password}"
|
169
|
+
url << "&#{params}" unless params.nil?
|
170
|
+
end
|
171
|
+
end
|
116
172
|
|
117
173
|
def denormalize_series series
|
118
174
|
columns = series['columns']
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module InfluxDB
|
4
|
+
class Config
|
5
|
+
attr_accessor :path, :config
|
6
|
+
|
7
|
+
# +:path+:: path to the config file
|
8
|
+
# +:config+:: hash representing InfluxDB configuration
|
9
|
+
def initialize(*args)
|
10
|
+
opts = args.last.is_a?(Hash) ? args.last : {}
|
11
|
+
@path = opts[:path] || '/opt/influxdb/shared/config.json'
|
12
|
+
@config = opts[:config] || default_config
|
13
|
+
end
|
14
|
+
|
15
|
+
def render
|
16
|
+
return JSON.pretty_generate(@config)
|
17
|
+
end
|
18
|
+
|
19
|
+
def valid?(path=@path)
|
20
|
+
begin
|
21
|
+
JSON.parse(File.read(path))
|
22
|
+
return true
|
23
|
+
rescue JSON::ParserError
|
24
|
+
return false
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def default_config
|
31
|
+
return {
|
32
|
+
'AdminHttpPort' => 8083,
|
33
|
+
'AdminAssetsDir' => '/opt/influxdb/current/admin',
|
34
|
+
'ApiHttpPort' => 8086,
|
35
|
+
'RaftServerPort' => 8090,
|
36
|
+
'SeedServers' => [],
|
37
|
+
'DataDir' => '/opt/influxdb/shared/data/db',
|
38
|
+
'RaftDir' => '/opt/influxdb/shared/data/raft'
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require "thread"
|
2
|
+
|
3
|
+
module InfluxDB
|
4
|
+
class MaxQueue < Queue
|
5
|
+
attr_reader :max
|
6
|
+
|
7
|
+
def initialize(max = 10_000)
|
8
|
+
raise ArgumentError, "queue size must be positive" unless max > 0
|
9
|
+
@max = max
|
10
|
+
super()
|
11
|
+
end
|
12
|
+
|
13
|
+
def push(obj)
|
14
|
+
super if length < @max
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/influxdb/version.rb
CHANGED
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'thread'
|
2
|
+
require "net/http"
|
3
|
+
require "uri"
|
4
|
+
|
5
|
+
module InfluxDB
|
6
|
+
module Worker
|
7
|
+
attr_accessor :queue
|
8
|
+
|
9
|
+
include InfluxDB::Logger
|
10
|
+
|
11
|
+
MAX_POST_POINTS = 200
|
12
|
+
NUM_WORKER_THREADS = 3
|
13
|
+
SLEEP_INTERVAL = 500
|
14
|
+
|
15
|
+
def current_threads
|
16
|
+
Thread.list.select {|t| t[:influxdb] == self.object_id}
|
17
|
+
end
|
18
|
+
|
19
|
+
def current_thread_count
|
20
|
+
Thread.list.count {|t| t[:influxdb] == self.object_id}
|
21
|
+
end
|
22
|
+
|
23
|
+
def spawn_threads!
|
24
|
+
NUM_WORKER_THREADS.times do |thread_num|
|
25
|
+
log :debug, "Spawning background worker thread #{thread_num}."
|
26
|
+
|
27
|
+
Thread.new do
|
28
|
+
Thread.current[:influxdb] = self.object_id
|
29
|
+
|
30
|
+
at_exit do
|
31
|
+
log :debug, "Thread exiting, flushing queue."
|
32
|
+
check_background_queue(thread_num) until @queue.empty?
|
33
|
+
end
|
34
|
+
|
35
|
+
while true
|
36
|
+
sleep SLEEP_INTERVAL
|
37
|
+
self.check_background_queue(thread_num)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
def check_background_queue(thread_num = 0)
|
44
|
+
log :debug, "Checking background queue on thread #{thread_num} (#{self.current_thread_count} active)"
|
45
|
+
|
46
|
+
begin
|
47
|
+
data = []
|
48
|
+
|
49
|
+
while data.size < MAX_POST_POINTS && !@queue.empty?
|
50
|
+
p = @queue.pop(true) rescue next;
|
51
|
+
log :debug, "Found data in the queue! (#{p[:n]})"
|
52
|
+
data.push p
|
53
|
+
end
|
54
|
+
|
55
|
+
_write(data)
|
56
|
+
end while @queue.length > MAX_POST_POINTS
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -34,7 +34,7 @@ describe InfluxDB::Client do
|
|
34
34
|
it "should POST to create a new database" do
|
35
35
|
stub_request(:post, "http://influxdb.test:9999/db").with(
|
36
36
|
:query => {:u => "username", :p => "password"},
|
37
|
-
:body =>
|
37
|
+
:body => {:name => "foo"}
|
38
38
|
)
|
39
39
|
|
40
40
|
@influxdb.create_database("foo").should be_a(Net::HTTPOK)
|
@@ -56,23 +56,87 @@ describe InfluxDB::Client do
|
|
56
56
|
database_list = [{"name" => "foobar"}]
|
57
57
|
stub_request(:get, "http://influxdb.test:9999/dbs").with(
|
58
58
|
:query => {:u => "username", :p => "password"}
|
59
|
-
).to_return(:body => JSON.generate(database_list, :status => 200)
|
59
|
+
).to_return(:body => JSON.generate(database_list), :status => 200)
|
60
60
|
|
61
61
|
@influxdb.get_database_list.should == database_list
|
62
62
|
end
|
63
63
|
end
|
64
64
|
|
65
|
+
describe "#create_cluster_admin" do
|
66
|
+
it "should POST to create a new cluster admin" do
|
67
|
+
stub_request(:post, "http://influxdb.test:9999/cluster_admins").with(
|
68
|
+
:query => {:u => "username", :p => "password"},
|
69
|
+
:body => {:name => "adminadmin", :password => "passpass"}
|
70
|
+
)
|
71
|
+
|
72
|
+
@influxdb.create_cluster_admin("adminadmin", "passpass").should be_a(Net::HTTPOK)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#update_cluster_admin" do
|
77
|
+
it "should POST to update a cluster admin" do
|
78
|
+
stub_request(:post, "http://influxdb.test:9999/cluster_admins/adminadmin").with(
|
79
|
+
:query => {:u => "username", :p => "password"},
|
80
|
+
:body => {:password => "passpass"}
|
81
|
+
)
|
82
|
+
|
83
|
+
@influxdb.update_cluster_admin("adminadmin", "passpass").should be_a(Net::HTTPOK)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "#delete_cluster_admin" do
|
88
|
+
it "should DELETE a cluster admin" do
|
89
|
+
stub_request(:delete, "http://influxdb.test:9999/cluster_admins/adminadmin").with(
|
90
|
+
:query => {:u => "username", :p => "password"}
|
91
|
+
)
|
92
|
+
|
93
|
+
@influxdb.delete_cluster_admin("adminadmin").should be_a(Net::HTTPOK)
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
65
97
|
describe "#create_database_user" do
|
66
98
|
it "should POST to create a new database user" do
|
67
99
|
stub_request(:post, "http://influxdb.test:9999/db/foo/users").with(
|
68
100
|
:query => {:u => "username", :p => "password"},
|
69
|
-
:body =>
|
101
|
+
:body => {:name => "useruser", :password => "passpass"}
|
70
102
|
)
|
71
103
|
|
72
104
|
@influxdb.create_database_user("foo", "useruser", "passpass").should be_a(Net::HTTPOK)
|
73
105
|
end
|
74
106
|
end
|
75
107
|
|
108
|
+
describe "#update_database_user" do
|
109
|
+
it "should POST to update a database user" do
|
110
|
+
stub_request(:post, "http://influxdb.test:9999/db/foo/users/useruser").with(
|
111
|
+
:query => {:u => "username", :p => "password"},
|
112
|
+
:body => {:password => "passpass"}
|
113
|
+
)
|
114
|
+
|
115
|
+
@influxdb.update_database_user("foo", "useruser", :password => "passpass").should be_a(Net::HTTPOK)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#alter_database_privilege" do
|
120
|
+
it "should POST to alter privileges for a user on a database" do
|
121
|
+
stub_request(:post, "http://influxdb.test:9999/db/foo/users/useruser").with(
|
122
|
+
:query => {:u => "username", :p => "password"}
|
123
|
+
)
|
124
|
+
|
125
|
+
@influxdb.alter_database_privilege("foo", "useruser", admin=true).should be_a(Net::HTTPOK)
|
126
|
+
@influxdb.alter_database_privilege("foo", "useruser", admin=false).should be_a(Net::HTTPOK)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "#delete_database_user" do
|
131
|
+
it "should DELETE a database user" do
|
132
|
+
stub_request(:delete, "http://influxdb.test:9999/db/foo/users/bar").with(
|
133
|
+
:query => {:u => "username", :p => "password"}
|
134
|
+
)
|
135
|
+
|
136
|
+
@influxdb.delete_database_user("foo", "bar").should be_a(Net::HTTPOK)
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
76
140
|
describe "#get_database_user_list" do
|
77
141
|
it "should GET a list of database users" do
|
78
142
|
user_list = [{"username"=>"user1"}, {"username"=>"user2"}]
|
@@ -87,17 +151,16 @@ describe InfluxDB::Client do
|
|
87
151
|
describe "#write_point" do
|
88
152
|
it "should POST to add points" do
|
89
153
|
body = [{
|
90
|
-
|
91
|
-
|
92
|
-
|
154
|
+
"name" => "seriez",
|
155
|
+
"points" => [[87, "juan"]],
|
156
|
+
"columns" => ["age", "name"]
|
93
157
|
}]
|
94
158
|
|
95
159
|
stub_request(:post, "http://influxdb.test:9999/db/database/series").with(
|
96
160
|
:query => {:u => "username", :p => "password"},
|
97
|
-
:body =>
|
161
|
+
:body => body
|
98
162
|
)
|
99
163
|
|
100
|
-
# data = [{:name => "juan", :age => 87}, {:name => "pablo", :age => 64}]
|
101
164
|
data = {:name => "juan", :age => 87}
|
102
165
|
|
103
166
|
@influxdb.write_point("seriez", data).should be_a(Net::HTTPOK)
|
@@ -105,14 +168,14 @@ describe InfluxDB::Client do
|
|
105
168
|
|
106
169
|
it "should POST multiple points" do
|
107
170
|
body = [{
|
108
|
-
|
109
|
-
|
110
|
-
|
171
|
+
"name" => "seriez",
|
172
|
+
"points" => [[87, "juan"], [99, "shahid"]],
|
173
|
+
"columns" => ["age", "name"]
|
111
174
|
}]
|
112
175
|
|
113
176
|
stub_request(:post, "http://influxdb.test:9999/db/database/series").with(
|
114
177
|
:query => {:u => "username", :p => "password"},
|
115
|
-
:body =>
|
178
|
+
:body => body
|
116
179
|
)
|
117
180
|
|
118
181
|
data = [{:name => "juan", :age => 87}, { :name => "shahid", :age => 99}]
|
@@ -122,14 +185,14 @@ describe InfluxDB::Client do
|
|
122
185
|
|
123
186
|
it "should POST multiple points with missing columns" do
|
124
187
|
body = [{
|
125
|
-
|
126
|
-
|
127
|
-
|
188
|
+
"name" => "seriez",
|
189
|
+
"points" => [[87, "juan"], [nil, "shahid"]],
|
190
|
+
"columns" => ["age", "name"]
|
128
191
|
}]
|
129
192
|
|
130
193
|
stub_request(:post, "http://influxdb.test:9999/db/database/series").with(
|
131
194
|
:query => {:u => "username", :p => "password"},
|
132
|
-
:body =>
|
195
|
+
:body => body
|
133
196
|
)
|
134
197
|
|
135
198
|
data = [{:name => "juan", :age => 87}, { :name => "shahid"}]
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe InfluxDB::MaxQueue do
|
4
|
+
it "should inherit from Queue" do
|
5
|
+
InfluxDB::MaxQueue.new.should be_a(Queue)
|
6
|
+
end
|
7
|
+
|
8
|
+
context "#new" do
|
9
|
+
it "should allow max_depth to be set" do
|
10
|
+
queue = InfluxDB::MaxQueue.new(500)
|
11
|
+
queue.max.should == 500
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
context "#push" do
|
16
|
+
it "should allow an item to be added if the queue is not full" do
|
17
|
+
queue = InfluxDB::MaxQueue.new(5)
|
18
|
+
queue.size.should be_zero
|
19
|
+
queue.push(1)
|
20
|
+
queue.size.should == 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should not allow items to be added if the queue is full" do
|
24
|
+
queue = InfluxDB::MaxQueue.new(5)
|
25
|
+
queue.size.should be_zero
|
26
|
+
5.times { |n| queue.push(n) }
|
27
|
+
queue.size.should == 5
|
28
|
+
queue.push(6)
|
29
|
+
queue.size.should == 5
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: influxdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Todd Persen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -96,9 +96,14 @@ files:
|
|
96
96
|
- influxdb.gemspec
|
97
97
|
- lib/influxdb.rb
|
98
98
|
- lib/influxdb/client.rb
|
99
|
+
- lib/influxdb/config.rb
|
100
|
+
- lib/influxdb/logger.rb
|
101
|
+
- lib/influxdb/max_queue.rb
|
99
102
|
- lib/influxdb/version.rb
|
103
|
+
- lib/influxdb/worker.rb
|
100
104
|
- spec/influxdb/client_spec.rb
|
101
105
|
- spec/influxdb_spec.rb
|
106
|
+
- spec/max_queue_spec.rb
|
102
107
|
- spec/spec_helper.rb
|
103
108
|
homepage: http://influxdb.org
|
104
109
|
licenses:
|
@@ -127,4 +132,5 @@ summary: Ruby library for InfluxDB.
|
|
127
132
|
test_files:
|
128
133
|
- spec/influxdb/client_spec.rb
|
129
134
|
- spec/influxdb_spec.rb
|
135
|
+
- spec/max_queue_spec.rb
|
130
136
|
- spec/spec_helper.rb
|