speedup-adapters 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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,3 @@
1
+
2
+ require 'speedup/request_data'
3
+ require 'speedup/adapters/base'
@@ -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: