dynobattery 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/Rakefile CHANGED
@@ -4,7 +4,7 @@ require 'echoe'
4
4
  require 'net/http'
5
5
  require 'heroku'
6
6
 
7
- Echoe.new('dynobattery', '0.1.3') do |p|
7
+ Echoe.new('dynobattery', '0.1.4') do |p|
8
8
  p.description = "Submit request operations for dyno calculations on Heroku"
9
9
  p.url = "http://github.com/fedesoria/dynobattery"
10
10
  p.author = "Federico Soria"
@@ -14,3 +14,5 @@ Echoe.new('dynobattery', '0.1.3') do |p|
14
14
  end
15
15
 
16
16
  Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
17
+
18
+
data/dynobattery.gemspec CHANGED
@@ -2,21 +2,22 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{dynobattery}
5
- s.version = "0.1.3"
5
+ s.version = "0.1.4"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Federico Soria"]
9
- s.date = %q{2010-07-08}
9
+ s.date = %q{2010-09-09}
10
10
  s.description = %q{Submit request operations for dyno calculations on Heroku}
11
11
  s.email = %q{federico@dospuntocero.com.mx}
12
12
  s.extra_rdoc_files = ["README.rdoc", "lib/dynobattery.rb"]
13
- s.files = ["Manifest", "README.rdoc", "Rakefile", "dynobattery.gemspec", "lib/dynobattery.rb"]
13
+ s.files = ["Manifest", "README.rdoc", "Rakefile", "dynobattery.gemspec", "lib/dynobattery.rb", "test/test_dynobattery.rb"]
14
14
  s.homepage = %q{http://github.com/fedesoria/dynobattery}
15
15
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Dynobattery", "--main", "README.rdoc"]
16
16
  s.require_paths = ["lib"]
17
17
  s.rubyforge_project = %q{dynobattery}
18
18
  s.rubygems_version = %q{1.3.6}
19
19
  s.summary = %q{Submit request operations for dyno calculations on Heroku}
20
+ s.test_files = ["test/test_dynobattery.rb"]
20
21
 
21
22
  if s.respond_to? :specification_version then
22
23
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
data/lib/dynobattery.rb CHANGED
@@ -4,28 +4,58 @@ class DynoBattery
4
4
  end
5
5
 
6
6
  def call(env)
7
- if defined?(DYNO_DOMAIN)
8
- uri = URI.parse("http://dyno-battery.heroku.com/")
9
- http = Net::HTTP.new(uri.host, uri.port)
10
- http.open_timeout = 3
11
- http.read_timeout = 3
12
- start = Time.now
13
- status, headers, response = @app.call(env)
14
- stop = Time.now
15
- if defined?(DYNO_USER) && defined?(DYNO_PASSWORD)
16
- get_dynos
17
- http.post("/heroku","name=#{DYNO_DOMAIN}&date=#{start.to_s}&time=#{"%10.6f" % (stop - start)}&dyno=#{@dynos}")
7
+ dup._call(env)
8
+ end
9
+
10
+ def _call(env)
11
+ if defined?(DYNOBATTERY_ID)
12
+ req = Rack::Request.new(env)
13
+ @params = req.params
14
+ if env["PATH_INFO"] =~ /^\/add_dyno/ and @params["id"] == DYNOBATTERY_ID
15
+ add_dyno
16
+ [200, {"Content-Type" => "text/plain"}, ["Dyno +1"]]
17
+ elsif env["PATH_INFO"] =~ /^\/remove_dyno/ and @params["id"] == DYNOBATTERY_ID
18
+ remove_dyno
19
+ [200, {"Content-Type" => "text/plain"}, ["Dyno -1"]]
18
20
  else
19
- http.post("/heroku","name=#{DYNO_DOMAIN}&date=#{start.to_s}&time=#{"%10.6f" % (stop - start)}")
21
+ uri = URI.parse("http://dyno-battery.heroku.com/")
22
+ http = Net::HTTP.new(uri.host, uri.port)
23
+ http.open_timeout = 3
24
+ http.read_timeout = 3
25
+ start = Time.now
26
+ status, headers, response = @app.call(env)
27
+ stop = Time.now
28
+ http.post("/heroku","name=#{DYNOBATTERY_ID}&date=#{start.to_s}&time=#{"%10.6f" % (stop - start)}&dyno=#{env['HTTP_X_HEROKU_DYNOS_IN_USE']}")
29
+ [status, headers, response]
20
30
  end
31
+ else
32
+ [status, headers, response]
21
33
  end
22
- [status, headers, response]
23
34
  end
24
35
 
25
36
 
37
+
38
+ # deprecated for env["HTTP_X_HEROKU_DYNOS_IN_USE"]
26
39
  def get_dynos
27
- heroku = Heroku::Client.new(DYNO_USER, DYNO_PASSWORD)
28
- @dynos = heroku.info(DYNO_DOMAIN)[:dynos]
40
+ setup_heroku_client
41
+ @heroku_app = @heroku.info(DYNO_DOMAIN)
42
+ end
43
+
44
+
45
+ def add_dyno
46
+ setup_heroku_client
47
+ get_dynos
48
+ @heroku.set_dynos(@heroku_app[:name],@heroku_app[:dynos] + 1)
49
+ end
50
+
51
+ def remove_dyno
52
+ setup_heroku_client
53
+ get_dynos
54
+ @heroku.set_dynos(@heroku_app[:name],@heroku_app[:dynos] - 1)
55
+ end
56
+
57
+ def setup_heroku_client
58
+ @heroku = Heroku::Client.new(DYNO_USER, DYNO_PASSWORD)
29
59
  end
30
60
 
31
61
  end
@@ -0,0 +1,32 @@
1
+ # require 'helper'
2
+ require 'rubygems'
3
+ require 'dynobattery'
4
+ require 'heroku'
5
+ require 'test/unit'
6
+ require "contest"
7
+ require "rack/test"
8
+
9
+ class TestDynobattery < Test::Unit::TestCase
10
+
11
+
12
+
13
+
14
+
15
+ test "no constants are setup" do
16
+ battery = DynoBattery.new(nil)
17
+ assert_raise(NameError){ battery.get_dynos }
18
+ end
19
+
20
+ test "get number of dynos" do
21
+ setup_test
22
+ battery = DynoBattery.new(nil)
23
+ assert_instance_of(String, battery.get_dynos)
24
+ end
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+ end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 3
9
- version: 0.1.3
8
+ - 4
9
+ version: 0.1.4
10
10
  platform: ruby
11
11
  authors:
12
12
  - Federico Soria
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-08 00:00:00 -05:00
17
+ date: 2010-09-09 00:00:00 -05:00
18
18
  default_executable:
19
19
  dependencies: []
20
20
 
@@ -33,6 +33,7 @@ files:
33
33
  - Rakefile
34
34
  - dynobattery.gemspec
35
35
  - lib/dynobattery.rb
36
+ - test/test_dynobattery.rb
36
37
  has_rdoc: true
37
38
  homepage: http://github.com/fedesoria/dynobattery
38
39
  licenses: []
@@ -69,5 +70,5 @@ rubygems_version: 1.3.6
69
70
  signing_key:
70
71
  specification_version: 3
71
72
  summary: Submit request operations for dyno calculations on Heroku
72
- test_files: []
73
-
73
+ test_files:
74
+ - test/test_dynobattery.rb