nimble_nodes 0.1.3 → 0.1.4
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.
- data/README.rdoc +0 -1
- data/VERSION +1 -1
- data/lib/nimble_nodes/dynos.rb +4 -0
- data/lib/nimble_nodes/filter.rb +15 -0
- data/lib/nimble_nodes/middleware.rb +1 -2
- data/lib/nimble_nodes/report.rb +15 -4
- data/lib/nimble_nodes/server.rb +1 -1
- data/lib/nimble_nodes.rb +25 -4
- data/nimble_nodes.gemspec +59 -0
- metadata +4 -2
data/README.rdoc
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.4
|
data/lib/nimble_nodes/dynos.rb
CHANGED
data/lib/nimble_nodes/report.rb
CHANGED
@@ -1,21 +1,27 @@
|
|
1
1
|
module NimbleNodes
|
2
2
|
|
3
3
|
class Report
|
4
|
+
|
5
|
+
|
6
|
+
def self.path
|
7
|
+
"/#{ENV['NN_APP_NAME']}/dynos/reports.json"
|
8
|
+
end
|
9
|
+
|
4
10
|
def initialize(env)
|
5
11
|
@dynos_in_use = env['HTTP_X_HEROKU_DYNOS_IN_USE']
|
6
|
-
@request_queue_depth = env['HTTP_X_HEROKU_QUEUE_DEPTH']
|
12
|
+
@request_queue_depth = env['HTTP_X_HEROKU_QUEUE_DEPTH']
|
7
13
|
end
|
8
14
|
|
9
15
|
def post
|
10
16
|
params = {
|
11
17
|
:dynos_in_use => @dynos_in_use,
|
12
18
|
:request_queue_size => @request_queue_depth }
|
13
|
-
NimbleNodes::Server.post(
|
19
|
+
NimbleNodes::Server.post(self.class.path, params)
|
14
20
|
end
|
15
21
|
|
16
22
|
def post?
|
17
|
-
return
|
18
|
-
dynos_maxed_out? or queue_depth_too_long?
|
23
|
+
return false if ENV['NN_APP_PAUSED_AT']
|
24
|
+
dynos_maxed_out? or queue_depth_too_long? or unused_dynos?
|
19
25
|
end
|
20
26
|
|
21
27
|
def dynos_maxed_out?
|
@@ -27,6 +33,11 @@ module NimbleNodes
|
|
27
33
|
return false if @request_queue_depth.nil?
|
28
34
|
@request_queue_depth > Dynos.max_request_queue
|
29
35
|
end
|
36
|
+
|
37
|
+
def unused_dynos?
|
38
|
+
return false if @dynos_in_use.nil?
|
39
|
+
@dynos_in_use < Dynos.size
|
40
|
+
end
|
30
41
|
|
31
42
|
end
|
32
43
|
|
data/lib/nimble_nodes/server.rb
CHANGED
@@ -7,7 +7,7 @@ module NimbleNodes
|
|
7
7
|
def self.post(path,args)
|
8
8
|
url = URI.parse(url_to(path))
|
9
9
|
request = Net::HTTP::Post.new(url.path)
|
10
|
-
request.set_form_data({:token => ENV['
|
10
|
+
request.set_form_data({:token => ENV['NN_APP_TOKEN'], :json => args.to_json, :created_at => Time.now })
|
11
11
|
response = Net::HTTP.start(url.host, url.port) {|http| http.request(request)}
|
12
12
|
end
|
13
13
|
|
data/lib/nimble_nodes.rb
CHANGED
@@ -1,10 +1,31 @@
|
|
1
1
|
module NimbleNodes
|
2
|
+
|
3
|
+
# returns array of files
|
4
|
+
def self.files
|
5
|
+
files = %w(dynos report server)
|
6
|
+
files.push NimbleNodes.legacy? ? 'filter' : 'middleware'
|
7
|
+
files
|
8
|
+
end
|
9
|
+
|
10
|
+
# returns true if gem is loaded in a pre 2.3 version of rails
|
11
|
+
def self.legacy?
|
12
|
+
defined?(RAILS_GEM_VERSION) and RAILS_GEM_VERSION.slice(0..2).to_f < 2.3
|
13
|
+
end
|
14
|
+
|
15
|
+
#= Monitoring
|
16
|
+
# pass over the hash containing Rack env variables
|
17
|
+
# a Report will be created and posted if neccessary
|
18
|
+
def monitor(env)
|
19
|
+
report = NimbleNodes::Report.new(env)
|
20
|
+
report.post if report.post?
|
21
|
+
end
|
22
|
+
|
2
23
|
end
|
3
24
|
|
25
|
+
NimbleNodes.files.each { |file| require File.dirname(__FILE__) + "/nimble_nodes/#{file}" }
|
4
26
|
|
5
|
-
current_path = File.dirname(__FILE__)
|
6
27
|
|
7
|
-
|
8
|
-
|
9
|
-
|
28
|
+
|
29
|
+
|
30
|
+
|
10
31
|
|
@@ -0,0 +1,59 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{nimble_nodes}
|
8
|
+
s.version = "0.1.4"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Jordan Glasner"]
|
12
|
+
s.date = %q{2010-03-11}
|
13
|
+
s.description = %q{automatically scales dynos and workers at Heroku}
|
14
|
+
s.email = %q{jordan@digitalignition.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".gitignore",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"lib/nimble_nodes.rb",
|
27
|
+
"lib/nimble_nodes/dynos.rb",
|
28
|
+
"lib/nimble_nodes/filter.rb",
|
29
|
+
"lib/nimble_nodes/middleware.rb",
|
30
|
+
"lib/nimble_nodes/report.rb",
|
31
|
+
"lib/nimble_nodes/server.rb",
|
32
|
+
"nimble_nodes.gemspec",
|
33
|
+
"test/helper.rb",
|
34
|
+
"test/test_nimble_nodes.rb"
|
35
|
+
]
|
36
|
+
s.homepage = %q{http://github.com/glasner/nimble_nodes}
|
37
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
38
|
+
s.require_paths = ["lib"]
|
39
|
+
s.rubygems_version = %q{1.3.5}
|
40
|
+
s.summary = %q{gem for connecting apps to the NimbleNodes server}
|
41
|
+
s.test_files = [
|
42
|
+
"test/helper.rb",
|
43
|
+
"test/test_nimble_nodes.rb"
|
44
|
+
]
|
45
|
+
|
46
|
+
if s.respond_to? :specification_version then
|
47
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
48
|
+
s.specification_version = 3
|
49
|
+
|
50
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
51
|
+
s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
52
|
+
else
|
53
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
54
|
+
end
|
55
|
+
else
|
56
|
+
s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nimble_nodes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jordan Glasner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-03-
|
12
|
+
date: 2010-03-11 00:00:00 -05:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -40,9 +40,11 @@ files:
|
|
40
40
|
- VERSION
|
41
41
|
- lib/nimble_nodes.rb
|
42
42
|
- lib/nimble_nodes/dynos.rb
|
43
|
+
- lib/nimble_nodes/filter.rb
|
43
44
|
- lib/nimble_nodes/middleware.rb
|
44
45
|
- lib/nimble_nodes/report.rb
|
45
46
|
- lib/nimble_nodes/server.rb
|
47
|
+
- nimble_nodes.gemspec
|
46
48
|
- test/helper.rb
|
47
49
|
- test/test_nimble_nodes.rb
|
48
50
|
has_rdoc: true
|