speedup-adapters 0.0.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 +7 -0
- data/lib/speedup-adapters.rb +3 -0
- data/lib/speedup/adapters/base.rb +17 -0
- data/lib/speedup/adapters/influxdb.rb +34 -0
- data/lib/speedup/adapters/memory.rb +25 -0
- data/lib/speedup/adapters/server.rb +31 -0
- data/lib/speedup/request_data.rb +21 -0
- metadata +94 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 6f1a0bb7c299f847fb608534834c44ee1766ef3f
|
4
|
+
data.tar.gz: 3a6390bc60e365f7a20353ebe7435688fc3d5944
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cca33d125eb454517f53ca41e3684eda05aa49d63e3335067806aafbecb037bfe56c7854a9f3f4dfef0d9a62dc3cc246b5059d5f50d147ccc779afc1ce76a844
|
7
|
+
data.tar.gz: 669569008b82f4b104eb71e1eaa852f352eb4aab08f84f6fe5d63a4b8271885952313f951419f98e3392fff44eb2532952629dbd2d8effbd1f1b56337904f6b3
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Speedup
|
2
|
+
module Adapters
|
3
|
+
class Base
|
4
|
+
def initialize(options = {})
|
5
|
+
|
6
|
+
end
|
7
|
+
|
8
|
+
def get(request_id)
|
9
|
+
raise "#{self.class}#get(request_id) is not yet implemented"
|
10
|
+
end
|
11
|
+
|
12
|
+
def write(request_id, data)
|
13
|
+
raise "#{self.class}#write(request_id, data) is not yet implemented"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'speedup/adapters/memory'
|
2
|
+
|
3
|
+
module Speedup
|
4
|
+
module Adapters
|
5
|
+
class Influxdb < Base
|
6
|
+
attr_accessor :requests
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
@memory = Speedup::Adapters::Memory.new
|
10
|
+
@client = InfluxDB::Client.new(options.delete(:database), options)
|
11
|
+
end
|
12
|
+
|
13
|
+
def get(request_id)
|
14
|
+
@memory.get(request_id)
|
15
|
+
end
|
16
|
+
|
17
|
+
def write(request_id, data)
|
18
|
+
return unless data.any?
|
19
|
+
data.contexts.each do |context|
|
20
|
+
[data[context]].flatten.each do |context_data|
|
21
|
+
context_data[:request_id] = request_id
|
22
|
+
context_data[:time] = context_data[:time].to_f if context_data.has_key?(:time)
|
23
|
+
@client.write_point(context.to_s, context_data)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
@memory.write(request_id, data)
|
27
|
+
end
|
28
|
+
|
29
|
+
def reset
|
30
|
+
@memory.reset
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'speedup/adapters/base'
|
2
|
+
|
3
|
+
module Speedup
|
4
|
+
module Adapters
|
5
|
+
class Memory < Base
|
6
|
+
attr_accessor :requests
|
7
|
+
|
8
|
+
def initialize(options = {})
|
9
|
+
@requests = {}
|
10
|
+
end
|
11
|
+
|
12
|
+
def get(request_id)
|
13
|
+
@requests[request_id]
|
14
|
+
end
|
15
|
+
|
16
|
+
def write(request_id, data)
|
17
|
+
@requests[request_id] = data
|
18
|
+
end
|
19
|
+
|
20
|
+
def reset
|
21
|
+
@requests.clear
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'speedup/adapters/memory'
|
3
|
+
|
4
|
+
module Speedup
|
5
|
+
module Adapters
|
6
|
+
|
7
|
+
class Server
|
8
|
+
include HTTParty
|
9
|
+
|
10
|
+
def initialize(options = {})
|
11
|
+
@url = options[:url]
|
12
|
+
@api_key = options[:api_key]
|
13
|
+
@memory = Speedup::Adapters::Memory.new
|
14
|
+
end
|
15
|
+
|
16
|
+
def get(request_id)
|
17
|
+
@memory.get(request_id)
|
18
|
+
end
|
19
|
+
|
20
|
+
def write(request_id, data)
|
21
|
+
@memory.write(request_id, data)
|
22
|
+
|
23
|
+
opts = {
|
24
|
+
body: {request_id: request_id, contexts: data.contexts, data: data}.to_json,
|
25
|
+
headers: {"Content-Type" => "application/json", "X-SUR-API-Key" => @api_key},
|
26
|
+
}
|
27
|
+
self.class.post(@url + '/requests.json', opts )
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Speedup
|
2
|
+
class RequestData < Hash
|
3
|
+
|
4
|
+
def contexts
|
5
|
+
@contexts ||= []
|
6
|
+
end
|
7
|
+
|
8
|
+
def storage_for(context)
|
9
|
+
@contexts ||= []
|
10
|
+
@contexts |= [context]
|
11
|
+
self[context] ||= {} if context == :request
|
12
|
+
self[context] ||= []
|
13
|
+
end
|
14
|
+
|
15
|
+
def load(contexts, data)
|
16
|
+
@contexts = contexts.map(&:to_sym)
|
17
|
+
self.merge!(data.symbolize_keys)
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: speedup-adapters
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ondřej Ezr
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-04-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: httparty
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: influxdb
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: SpeedUpRails is written in hope it will help develop faster rails applications.
|
56
|
+
email:
|
57
|
+
- ezrondre@fit.cvut.cz
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- lib/speedup-adapters.rb
|
63
|
+
- lib/speedup/adapters/base.rb
|
64
|
+
- lib/speedup/adapters/influxdb.rb
|
65
|
+
- lib/speedup/adapters/memory.rb
|
66
|
+
- lib/speedup/adapters/server.rb
|
67
|
+
- lib/speedup/request_data.rb
|
68
|
+
homepage: https://github.com/ezrondre/speedup-rails
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata: {}
|
72
|
+
post_install_message:
|
73
|
+
rdoc_options: []
|
74
|
+
require_paths:
|
75
|
+
- lib
|
76
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - '>='
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: '0'
|
81
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
requirements: []
|
87
|
+
rubyforge_project:
|
88
|
+
rubygems_version: 2.4.6
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: SpeedUpRails adapters are support gem for SpeedUpRails gem providing methods
|
92
|
+
to store request informations.
|
93
|
+
test_files: []
|
94
|
+
has_rdoc:
|