api-harvester 0.0.1 → 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c3cf94bfe071aeb31bbd6d099233a5337b19d68
4
- data.tar.gz: 661f5f04cce3e0eb9a76bda402cfd68d59e3c17c
3
+ metadata.gz: c5b682cb063b69e48cbfeede8e43532baa68e215
4
+ data.tar.gz: 0ce1ac7b04883ced29df0f87ab33120082de583b
5
5
  SHA512:
6
- metadata.gz: 4af8693fb8daee99347534316ce89859bfa31aee2cad50fbbf7565a08cf43bdebcc1e78bc7c37be237654e9b1b9c87ee7fb79c8e5d8398354422f1cec187bb75
7
- data.tar.gz: 8bfd3ec9d48a8740235ed1f8bf1371175d1c2554416ec0e11b8459b9c77d98baba926a61a3d7b42ea2b46004da64c6b077c95eac9e9b46bba973624880486cb3
6
+ metadata.gz: 6152657838bec26fe2dba1282f18084ef881da2979e32df86c7961f456687cc0982b53c653a8af30e7128908f557302005f02f5932b0c26867f5a888c2bcda2b
7
+ data.tar.gz: 6ac7666c38611eb685c2ad10d6055020f1b61f2779e55a4af3d40f1a2a9537c5845d310f246d73c7466e1d2eb79d90697f84b711a3f7d321c1a4b76e756b5630
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: api-harvester
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kinnan Kwok
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-12 00:00:00.000000000 Z
11
+ date: 2015-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ezmq
@@ -208,31 +208,11 @@ dependencies:
208
208
  version: '0'
209
209
  description:
210
210
  email: kkwoker@gmail.com
211
- executables:
212
- - harvester.rb
211
+ executables: []
213
212
  extensions: []
214
213
  extra_rdoc_files: []
215
- files:
216
- - ".document"
217
- - ".gitignore"
218
- - Gemfile
219
- - Gemfile.lock
220
- - LICENSE.txt
221
- - README.md
222
- - Rakefile
223
- - api-harvester.gemspec
224
- - bin/harvester.rb
225
- - key_transactions.rb
226
- - lib/harvester.rb
227
- - lib/harvester/eye_generator.rb
228
- - lib/harvester/parser.rb
229
- - lib/harvester/puller.rb
230
- - lib/harvester/pusher.rb
231
- - lib/harvester/settings.rb
232
- - template/default_eye.rb
233
- - test/helper.rb
234
- - test/test_harvester.rb
235
- homepage:
214
+ files: []
215
+ homepage: http://github.com/kkwoker/api-harvester
236
216
  licenses:
237
217
  - MIT
238
218
  metadata: {}
@@ -257,7 +237,5 @@ signing_key:
257
237
  specification_version: 4
258
238
  summary: Allows you to specify an endpoint to retrieve data from, parse it, and store
259
239
  into any database
260
- test_files:
261
- - test/helper.rb
262
- - test/test_harvester.rb
240
+ test_files: []
263
241
  has_rdoc:
data/.document DELETED
@@ -1,5 +0,0 @@
1
- lib/**/*.rb
2
- bin/*
3
- -
4
- features/**/*.feature
5
- LICENSE.txt
data/.gitignore DELETED
@@ -1,50 +0,0 @@
1
- # rcov generated
2
- coverage
3
- coverage.data
4
-
5
- # rdoc generated
6
- rdoc
7
-
8
- # yard generated
9
- doc
10
- .yardoc
11
-
12
- # bundler
13
- .bundle
14
- vendor
15
- # jeweler generated
16
- pkg
17
-
18
- harvester.yaml
19
- # Have editor/IDE/OS specific files you need to ignore? Consider using a global gitignore:
20
- #
21
- # * Create a file at ~/.gitignore
22
- # * Include files you want ignored
23
- # * Run: git config --global core.excludesfile ~/.gitignore
24
- #
25
- # After doing this, these files will be ignored in all your git projects,
26
- # saving you from having to 'pollute' every project you touch with them
27
- #
28
- # Not sure what to needs to be ignored for particular editors/OSes? Here's some ideas to get you started. (Remember, remove the leading # of the line)
29
- #
30
- # For MacOS:
31
- #
32
- .DS_Store
33
-
34
- # For TextMate
35
- #*.tmproj
36
- #tmtags
37
-
38
- # For emacs:
39
- #*~
40
- #\#*
41
- #.\#*
42
-
43
- # For vim:
44
- #*.swp
45
-
46
- # For redcar:
47
- #.redcar
48
-
49
- # For rubinius:
50
- #*.rbc
data/Gemfile DELETED
@@ -1,28 +0,0 @@
1
- source 'http://rubygems.org'
2
- group :development do
3
- gem "shoulda", ">= 0"
4
- gem "rdoc", "~> 3.12"
5
- gem "bundler", "~> 1.0"
6
- gem "jeweler", "~> 2.0.1"
7
- gem "simplecov", ">= 0"
8
- gem 'pry'
9
- gem 'pry-nav'
10
- end
11
-
12
-
13
- gem 'faraday'
14
- gem 'excon'
15
- gem 'commander'
16
- gem 'ezmq'
17
- gem 'msgpack'
18
-
19
-
20
- gem 'influxdb', '~> 0.1.9'
21
- gem 'eye'
22
- gem 'moneta'
23
- gem 'sinatra'
24
- gem 'rainbow'
25
- gem 'oj'
26
-
27
- gem 'terminal-announce'
28
- gem 'settingslogic'
data/Gemfile.lock DELETED
@@ -1,154 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- activesupport (4.2.3)
5
- i18n (~> 0.7)
6
- json (~> 1.7, >= 1.7.7)
7
- minitest (~> 5.1)
8
- thread_safe (~> 0.3, >= 0.3.4)
9
- tzinfo (~> 1.1)
10
- addressable (2.3.8)
11
- builder (3.2.2)
12
- cause (0.1)
13
- celluloid (0.15.2)
14
- timers (~> 1.1.0)
15
- celluloid-io (0.15.0)
16
- celluloid (>= 0.15.0)
17
- nio4r (>= 0.5.0)
18
- coderay (1.1.0)
19
- commander (4.3.4)
20
- highline (~> 1.7.2)
21
- contracts (0.11.0)
22
- descendants_tracker (0.0.4)
23
- thread_safe (~> 0.3, >= 0.3.1)
24
- docile (1.1.5)
25
- excon (0.45.4)
26
- eye (0.6.4)
27
- celluloid (~> 0.15.0)
28
- celluloid-io (~> 0.15.0)
29
- sigar (~> 0.7.2)
30
- state_machine
31
- thor
32
- ezmq (0.4.4)
33
- ffi-rzmq (~> 2.0)
34
- faraday (0.9.1)
35
- multipart-post (>= 1.2, < 3)
36
- ffi (1.9.10)
37
- ffi-rzmq (2.0.4)
38
- ffi-rzmq-core (>= 1.0.1)
39
- ffi-rzmq-core (1.0.3)
40
- ffi (~> 1.9)
41
- git (1.2.9.1)
42
- github_api (0.12.4)
43
- addressable (~> 2.3)
44
- descendants_tracker (~> 0.0.4)
45
- faraday (~> 0.8, < 0.10)
46
- hashie (>= 3.4)
47
- multi_json (>= 1.7.5, < 2.0)
48
- nokogiri (~> 1.6.6)
49
- oauth2
50
- hashie (3.4.2)
51
- highline (1.7.2)
52
- i18n (0.7.0)
53
- influxdb (0.1.9)
54
- cause
55
- json
56
- jeweler (2.0.1)
57
- builder
58
- bundler (>= 1.0)
59
- git (>= 1.2.5)
60
- github_api
61
- highline (>= 1.6.15)
62
- nokogiri (>= 1.5.10)
63
- rake
64
- rdoc
65
- json (1.8.3)
66
- jwt (1.5.1)
67
- method_source (0.8.2)
68
- mini_portile (0.6.2)
69
- minitest (5.8.0)
70
- moneta (0.8.0)
71
- msgpack (0.6.2)
72
- multi_json (1.11.2)
73
- multi_xml (0.5.5)
74
- multipart-post (2.0.0)
75
- nio4r (1.1.1)
76
- nokogiri (1.6.6.2)
77
- mini_portile (~> 0.6.0)
78
- oauth2 (1.0.0)
79
- faraday (>= 0.8, < 0.10)
80
- jwt (~> 1.0)
81
- multi_json (~> 1.3)
82
- multi_xml (~> 0.5)
83
- rack (~> 1.2)
84
- oj (2.12.10)
85
- pry (0.10.1)
86
- coderay (~> 1.1.0)
87
- method_source (~> 0.8.1)
88
- slop (~> 3.4)
89
- pry-nav (0.2.4)
90
- pry (>= 0.9.10, < 0.11.0)
91
- rack (1.6.4)
92
- rack-protection (1.5.3)
93
- rack
94
- rainbow (2.0.0)
95
- rake (10.4.2)
96
- rdoc (3.12.2)
97
- json (~> 1.4)
98
- settingslogic (2.0.9)
99
- shoulda (3.5.0)
100
- shoulda-context (~> 1.0, >= 1.0.1)
101
- shoulda-matchers (>= 1.4.1, < 3.0)
102
- shoulda-context (1.2.1)
103
- shoulda-matchers (2.8.0)
104
- activesupport (>= 3.0.0)
105
- sigar (0.7.3)
106
- simplecov (0.10.0)
107
- docile (~> 1.1.0)
108
- json (~> 1.8)
109
- simplecov-html (~> 0.10.0)
110
- simplecov-html (0.10.0)
111
- sinatra (1.4.6)
112
- rack (~> 1.4)
113
- rack-protection (~> 1.4)
114
- tilt (>= 1.3, < 3)
115
- slop (3.6.0)
116
- state_machine (1.2.0)
117
- terminal-announce (1.0.0)
118
- bundler
119
- contracts
120
- rainbow
121
- thor (0.19.1)
122
- thread_safe (0.3.5)
123
- tilt (2.0.1)
124
- timers (1.1.0)
125
- tzinfo (1.2.2)
126
- thread_safe (~> 0.1)
127
-
128
- PLATFORMS
129
- ruby
130
-
131
- DEPENDENCIES
132
- bundler (~> 1.0)
133
- commander
134
- excon
135
- eye
136
- ezmq
137
- faraday
138
- influxdb (~> 0.1.9)
139
- jeweler (~> 2.0.1)
140
- moneta
141
- msgpack
142
- oj
143
- pry
144
- pry-nav
145
- rainbow
146
- rdoc (~> 3.12)
147
- settingslogic
148
- shoulda
149
- simplecov
150
- sinatra
151
- terminal-announce
152
-
153
- BUNDLED WITH
154
- 1.10.4
data/LICENSE.txt DELETED
@@ -1,20 +0,0 @@
1
- Copyright (c) 2015 kkwoker
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md DELETED
@@ -1 +0,0 @@
1
- harvest key_transactions --from https://api.newrelic.com/v2/key_transactions.json --every 5s
data/Rakefile DELETED
@@ -1,51 +0,0 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
- gem.name = "harvester"
18
- gem.homepage = "http://github.com/kkwoker/harvester"
19
- gem.license = "MIT"
20
- gem.summary = %Q{TODO: one-line summary of your gem}
21
- gem.description = %Q{TODO: longer description of your gem}
22
- gem.email = "kkwoker@gmail.com"
23
- gem.authors = ["kkwoker"]
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
28
- require 'rake/testtask'
29
- Rake::TestTask.new(:test) do |test|
30
- test.libs << 'lib' << 'test'
31
- test.pattern = 'test/**/test_*.rb'
32
- test.verbose = true
33
- end
34
-
35
- desc "Code coverage detail"
36
- task :simplecov do
37
- ENV['COVERAGE'] = "true"
38
- Rake::Task['test'].execute
39
- end
40
-
41
- task :default => :test
42
-
43
- require 'rdoc/task'
44
- Rake::RDocTask.new do |rdoc|
45
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
46
-
47
- rdoc.rdoc_dir = 'rdoc'
48
- rdoc.title = "harvester #{version}"
49
- rdoc.rdoc_files.include('README*')
50
- rdoc.rdoc_files.include('lib/**/*.rb')
51
- end
@@ -1,29 +0,0 @@
1
- Gem::Specification.new do |gem|
2
- gem.name = 'api-harvester'
3
- gem.version = '0.0.1'
4
- gem.licenses = 'MIT'
5
- gem.authors = ['Kinnan Kwok']
6
- gem.email = 'kkwoker@gmail.com'
7
- gem.summary = 'Allows you to specify an endpoint to retrieve data from, parse it, and store into any database'
8
-
9
- gem.files = `git ls-files`.split("\n")
10
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
11
- gem.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
12
- gem.require_paths = ['lib']
13
-
14
- gem.add_runtime_dependency 'ezmq', '~> 0.4.4'
15
- gem.add_runtime_dependency 'faraday'
16
- gem.add_runtime_dependency 'excon'
17
- gem.add_runtime_dependency 'commander'
18
- gem.add_runtime_dependency 'msgpack'
19
- gem.add_runtime_dependency 'influxdb', '~> 0.1.9'
20
- gem.add_runtime_dependency 'eye'
21
- gem.add_runtime_dependency 'moneta'
22
- gem.add_runtime_dependency 'sinatra'
23
- gem.add_runtime_dependency 'rainbow'
24
- gem.add_runtime_dependency 'oj'
25
- gem.add_runtime_dependency 'terminal-announce'
26
- gem.add_runtime_dependency 'settingslogic'
27
-
28
- gem.add_development_dependency 'pry'
29
- end
data/bin/harvester.rb DELETED
@@ -1,37 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'commander'
4
- require_relative '../lib/harvester'
5
-
6
- Commander.configure do
7
- program :name, 'Harvester'
8
- program :version, '0.0.1'
9
- program :description, 'harvest from endpoints'
10
- program :help, 'Author', 'Kinnan Kwok <kkwoker@gmail.com>'
11
-
12
- default_command :harvest
13
-
14
- command :harvest do |command|
15
- command.syntax = 'harvester harvest [options]'
16
- command.summary = ''
17
- command.description = 'Starts processes for harvesting data'
18
- command.example 'description', 'command example'
19
- command.option '--from STRING', String, 'Adds an endpoint to harvest from'
20
- command.option '--with STRING', String, 'Adds a parsing method ruby file'
21
- command.option '--every INTEGER', Integer, 'Adds an interval for polling'
22
- command.action do |_args, options|
23
- # Do something or c.when_called Harvester::Commands::Harvest
24
- abort 'Must provide parameters --from, --with, and --every' unless options.from && options.with && options.every
25
- name = options.with
26
- endpoint = options.from
27
- timeout = options.every
28
-
29
- # Create an eye file.
30
- EyeGenerator.initialize name, endpoint, timeout
31
- # Load Eye file
32
- system "eye load #{name}.d/config.eye"
33
- system "eye restart #{name}"
34
-
35
- end
36
- end
37
- end
data/key_transactions.rb DELETED
@@ -1,58 +0,0 @@
1
- #!/bin/env ruby
2
- require 'pry'
3
- def key_transactions incoming_data
4
- outgoing_data = []
5
- transactions = incoming_data['key_transactions']
6
- transactions.each do |transaction|
7
- transaction['application_summary'] = {} unless transaction['application_summary']
8
- transaction['end_user_summary'] = {} unless transaction['end_user_summary']
9
- plowed = {
10
- "database_name": "NewRelic-transactions",
11
- "series_name": transaction['name'],
12
- "application-response_time": transaction['application_summary']['response_time'],
13
- "application-throughput": transaction['application_summary']['throughput'],
14
- "application-error_rate": transaction['application_summary']['error_rate'],
15
- "application-apdex_target": transaction['application_summary']['apdex_target'],
16
- "application-apdex_score": transaction['application_summary']['apdex_score'],
17
- "application-host_count": transaction['application_summary']['host_count'],
18
- "application-instance_count": transaction['application_summary']['instance_count'],
19
- "application-concurrent_instance_count": transaction['application_summary']['concurrent_instance_count'],
20
- "end_user-response_time": transaction['end_user_summary']['response_time'],
21
- "end_user-throughput": transaction['end_user_summary']['throughput'],
22
- "end_user-apdex_target": transaction['end_user_summary']['apdex_target'],
23
- "end_user-apdex_score": transaction['end_user_summary']['apdex_score']
24
- }
25
- outgoing_data << plowed.keep_if {|_,value| !value.nil?}
26
- end
27
- outgoing_data
28
- end
29
-
30
- # {
31
- # "key_transaction": {
32
- # "id": "integer",
33
- # "name": "string",
34
- # "transaction_name": "string",
35
- # "health_status": "string",
36
- # "reporting": "boolean",
37
- # "last_reported_at": "time",
38
- # "application_summary": {
39
- # "response_time": "float",
40
- # "throughput": "float",
41
- # "error_rate": "float",
42
- # "apdex_target": "float",
43
- # "apdex_score": "float",
44
- # "host_count": "integer",
45
- # "instance_count": "integer",
46
- # "concurrent_instance_count": "integer"
47
- # },
48
- # "end_user_summary": {
49
- # "response_time": "float",
50
- # "throughput": "float",
51
- # "apdex_target": "float",
52
- # "apdex_score": "float"
53
- # },
54
- # "links": {
55
- # "application": "integer"
56
- # }
57
- # }
58
- # }
@@ -1,33 +0,0 @@
1
- require_relative '../../template/default_eye'
2
-
3
- module EyeGenerator
4
- def self.create_eye_config name
5
- config = Default.eye_config name
6
- File.open("#{name}.d/config.eye", 'w') { |file| file.write(config)}
7
- end
8
-
9
- def self.create_puller name, endpoint, timeout
10
- puller = Default.puller name, endpoint, timeout
11
- File.open("#{name}.d/puller.rb", 'w') { |file| file.write(puller)}
12
- end
13
-
14
- def self.create_parser name, endpoint
15
- parser = Default.parser name, endpoint
16
- File.open("#{name}.d/parser.rb", 'w') { |file| file.write(parser)}
17
- end
18
-
19
- def self.create_pusher name, endpoint
20
- pusher = Default.pusher name, endpoint
21
- File.open("#{name}.d/pusher.rb", 'w') { |file| file.write(pusher)}
22
- end
23
-
24
- def self.initialize name, endpoint, timeout
25
- system "mkdir -p #{name}.d"
26
- system "mkdir -p #{name}.d/logs"
27
- system "mkdir -p #{name}.d/pids"
28
- create_eye_config name
29
- create_puller name, endpoint, timeout
30
- create_parser name, endpoint
31
- create_pusher name, endpoint
32
- end
33
- end
@@ -1,23 +0,0 @@
1
- require 'pry'
2
- require 'ezmq'
3
- require 'msgpack'
4
- require 'oj'
5
- require_relative 'settings'
6
- require_relative '../../key_transactions'
7
- module Parser
8
- @broadcaster = EZMQ::Publisher.new :bind, port: 6000, encode: -> m { Oj.dump m }
9
- def self.activate topic, endpoint
10
- puts topic, endpoint
11
- listener = EZMQ::Subscriber.new :connect, port: 5000, topic: topic, decode: -> m { Oj.load m }
12
- listener.listen do |message, topic|
13
- data = plow message, topic
14
- data.each do |item|
15
- puts @broadcaster.send item, topic: topic
16
- end
17
- end
18
- end
19
-
20
- def self.plow message, parse
21
- send(parse, message)
22
- end
23
- end
@@ -1,32 +0,0 @@
1
- require 'ezmq'
2
- require 'msgpack'
3
- require 'faraday'
4
- require 'oj'
5
- require 'excon'
6
- require_relative 'settings'
7
-
8
- module Puller
9
- @broadcaster = EZMQ::Publisher.new :bind, port: 5000
10
- def self.fetch_data(endpoint)
11
- conn = Faraday.new(url: endpoint) do |faraday|
12
- faraday.adapter :excon
13
- faraday.headers['X-Api-Key'] = Settings.newrelic_key
14
- end
15
- conn.get.body
16
- # rescue Exception => e
17
- # puts "Puller#fetch_data"
18
- # puts "#{e.inspect}: #{e.message}"
19
- end
20
-
21
- def self.send(data, topic)
22
- # puts "Puller#send"
23
- @broadcaster.send data, topic: topic
24
- end
25
-
26
- def self.activate(name, endpoint, timeout)
27
- loop do
28
- puts send fetch_data(endpoint), name
29
- sleep timeout
30
- end
31
- end
32
- end
@@ -1,33 +0,0 @@
1
- require 'pry'
2
- require 'ezmq'
3
- require 'oj'
4
- require 'influxdb'
5
- require_relative 'settings'
6
-
7
- module Pusher
8
- @connection = InfluxDB::Client.new host: Settings.influx_host, username: Settings.influx_user, password: Settings.influx_pass
9
-
10
- def self.activate topic, endpoint
11
- listener = EZMQ::Subscriber.new :connect, port: 6000, topic: topic, decode: -> m { Oj.load m }
12
- listener.listen do |message, topic|
13
- puts write message
14
- end
15
- end
16
-
17
- def self.write data
18
- series = data.delete :series_name
19
- db = data.delete :database_name
20
- use_or_create db
21
- @connection.write_point(series, data)
22
- data.length
23
- end
24
-
25
- def self.use_or_create(db_name)
26
- dbs = @connection.get_database_list.map { |db| db["name"] }
27
- @connection.create_database db_name unless dbs.include? db_name
28
- @connection = InfluxDB::Client.new db_name, host: Settings.influx_host,
29
- username: Settings.influx_user,
30
- password: Settings.influx_pass
31
- end
32
-
33
- end
@@ -1,15 +0,0 @@
1
- require 'settingslogic'
2
- require 'terminal-announce'
3
- class Settings < Settingslogic
4
- config_paths = %w(/etc /usr/local/etc ~/.config . ../)
5
-
6
- config_paths.each do |config_path|
7
- config_file = File.expand_path "#{ config_path }/harvester.yaml"
8
- source config_file if File.exist? config_file
9
- end
10
-
11
- load!
12
- rescue Errno::ENOENT
13
- Announce.failure "Unable to locate configuration in #{ config_paths }."
14
- abort
15
- end
data/lib/harvester.rb DELETED
@@ -1,4 +0,0 @@
1
- require_relative 'harvester/puller'
2
- require_relative 'harvester/parser'
3
- require_relative 'harvester/pusher'
4
- require_relative 'harvester/eye_generator'
@@ -1,62 +0,0 @@
1
- module Default
2
-
3
-
4
- def self.puller name, endpoint, timeout
5
- %Q(#!/bin/env ruby
6
- require_relative '../lib/harvester/puller'
7
- Puller.activate("#{name}", "#{endpoint}", #{timeout})
8
- )
9
- end
10
-
11
- def self.parser name, endpoint
12
- %Q(#!/bin/env ruby
13
- require_relative '../lib/harvester/parser'
14
- Parser.activate("#{name}", "#{endpoint}")
15
- )
16
- end
17
-
18
- def self.pusher name, endpoint
19
- %Q(#!/bin/env ruby
20
- require_relative '../lib/harvester/pusher'
21
- Pusher.activate("#{name}", "#{endpoint}")
22
- )
23
- end
24
-
25
- def self.eye_config name
26
- %Q(#!/bin/env ruby
27
-
28
- Eye.application 'harvester' do
29
-
30
- working_dir File.expand_path(File.join(File.dirname(__FILE__)))
31
-
32
- group "#{name}" do
33
- process :puller do
34
- pid_file 'pids/puller.pid'
35
- start_command "ruby puller.rb"
36
- daemonize true
37
- stdout 'logs/puller.log'
38
- check :memory, every: 20.seconds, below: 300.megabytes, times: 3
39
- end
40
-
41
- process :parser do
42
- pid_file 'pids/parser.pid'
43
- start_command "ruby parser.rb"
44
- daemonize true
45
- stdout 'logs/parser.log'
46
- check :memory, every: 20.seconds, below: 300.megabytes, times: 3
47
- end
48
-
49
- process :pusher do
50
- pid_file 'pids/pusher.pid'
51
- start_command "ruby pusher.rb"
52
- daemonize true
53
- stdout 'logs/pusher.log'
54
- check :memory, every: 20.seconds, below: 300.megabytes, times: 3
55
- end
56
-
57
- end
58
- end
59
- )
60
- end
61
-
62
- end
data/test/helper.rb DELETED
@@ -1,34 +0,0 @@
1
- require 'simplecov'
2
-
3
- module SimpleCov::Configuration
4
- def clean_filters
5
- @filters = []
6
- end
7
- end
8
-
9
- SimpleCov.configure do
10
- clean_filters
11
- load_adapter 'test_frameworks'
12
- end
13
-
14
- ENV["COVERAGE"] && SimpleCov.start do
15
- add_filter "/.rvm/"
16
- end
17
- require 'rubygems'
18
- require 'bundler'
19
- begin
20
- Bundler.setup(:default, :development)
21
- rescue Bundler::BundlerError => e
22
- $stderr.puts e.message
23
- $stderr.puts "Run `bundle install` to install missing gems"
24
- exit e.status_code
25
- end
26
- require 'test/unit'
27
- require 'shoulda'
28
-
29
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
30
- $LOAD_PATH.unshift(File.dirname(__FILE__))
31
- require 'harvester'
32
-
33
- class Test::Unit::TestCase
34
- end
@@ -1,7 +0,0 @@
1
- require 'helper'
2
-
3
- class TestHarvester < Test::Unit::TestCase
4
- should "probably rename this file and start testing for real" do
5
- flunk "hey buddy, you should probably rename this file and start testing for real"
6
- end
7
- end