nimble_nodes 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- 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
|