hirefireapp 0.0.3 → 0.0.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/bin/hirefireapp +2 -1
- data/hirefireapp.gemspec +1 -1
- data/lib/hirefireapp/middleware.rb +32 -32
- metadata +23 -31
data/bin/hirefireapp
CHANGED
data/hirefireapp.gemspec
CHANGED
@@ -13,12 +13,8 @@ module HireFireApp
|
|
13
13
|
end
|
14
14
|
|
15
15
|
##
|
16
|
-
#
|
17
|
-
#
|
18
|
-
# and specified "what wasn't found" in case the environment isn't complete (e.g. the worker library could not be found).
|
19
|
-
#
|
20
|
-
# HireFireApp.com will always ping to the "info?" url. This will return JSON format containing the current job queue
|
21
|
-
# for the given worker library, as well as the queue_wait_time
|
16
|
+
# Return a HTML response if the "test url" has been requested.
|
17
|
+
# Return a JSON requested if the "info url" has been requested.
|
22
18
|
#
|
23
19
|
def call(env)
|
24
20
|
@env = env
|
@@ -33,32 +29,33 @@ module HireFireApp
|
|
33
29
|
end
|
34
30
|
|
35
31
|
##
|
36
|
-
#
|
37
|
-
#
|
32
|
+
# If the "test url" has been requested, we'll return information regarding the HireFire installation in HTML format.
|
33
|
+
# If the "info url" has been regarding, we'll return the job count for the worker library (if applicable)
|
34
|
+
# in JSON format.
|
38
35
|
#
|
39
36
|
def each(&block)
|
40
37
|
if test?
|
41
|
-
|
38
|
+
out = "\n"
|
39
|
+
out << "[HireFire][Web] OK\n"
|
40
|
+
out << "[HireFire][Worker] #{worker_ok} (Library: #{worker_library}, Mapper: #{mapper_library})\n\n"
|
41
|
+
|
42
|
+
if worker_library =~ /Not Found/
|
43
|
+
out << "HireFire is able to auto-scale your web dynos, but not your worker dynos.\n"
|
44
|
+
else
|
45
|
+
out << "HireFire is able to auto-scale both your web, as well as your worker dynos."
|
46
|
+
end
|
47
|
+
|
48
|
+
block.call out
|
42
49
|
elsif info?
|
43
|
-
block.call %|{"job_count":#{job_count ||
|
50
|
+
block.call %|{"job_count":#{job_count || "null"}}|
|
44
51
|
end
|
45
52
|
end
|
46
53
|
|
47
54
|
private
|
48
55
|
|
49
56
|
##
|
50
|
-
# Returns the
|
51
|
-
#
|
52
|
-
#
|
53
|
-
# @request [Integer] the queue wait time in miliseconds
|
54
|
-
#
|
55
|
-
def queue_wait_time
|
56
|
-
@env["HTTP_X_HEROKU_QUEUE_WAIT_TIME"].to_i
|
57
|
-
end
|
58
|
-
|
59
|
-
##
|
60
|
-
# Counts the amount of jobs that are currently queued
|
61
|
-
# and show be processed as soon as possible (aka the ones that are pending)
|
57
|
+
# Returns the amount of queued jobs that are scheduled to be processed
|
58
|
+
# at this time, or in the past, but not in the future.
|
62
59
|
#
|
63
60
|
# @returns [Fixnum, nil] job_count returns nil if something went wrong
|
64
61
|
#
|
@@ -77,7 +74,7 @@ module HireFireApp
|
|
77
74
|
##
|
78
75
|
# Makes Delayed::Job count the amount of currently pending jobs.
|
79
76
|
# It'll use the ActiveRecord ORM, or the Mongoid ODM depending on
|
80
|
-
# which
|
77
|
+
# which is defined.
|
81
78
|
#
|
82
79
|
# If ActiveRecord 2 (or earlier) is being used, ActiveRecord::Relation doesn't
|
83
80
|
# exist, and we'll have to use the old :conditions hash notation.
|
@@ -106,7 +103,7 @@ module HireFireApp
|
|
106
103
|
end
|
107
104
|
|
108
105
|
##
|
109
|
-
#
|
106
|
+
# Returns the amount of jobs in the queue + the ones that are being processed
|
110
107
|
#
|
111
108
|
# @returns [Fixnum] resque_job_count
|
112
109
|
# the number of jobs pending + the amount of workers currently working
|
@@ -116,11 +113,12 @@ module HireFireApp
|
|
116
113
|
end
|
117
114
|
|
118
115
|
##
|
119
|
-
# Returns the name of the mapper, or "Not Found" if
|
116
|
+
# Returns the name of the mapper as a string, or "Not Found" if
|
117
|
+
# the mapper could not be found
|
120
118
|
#
|
121
119
|
# @returns [String]
|
122
120
|
#
|
123
|
-
def
|
121
|
+
def mapper_library
|
124
122
|
if defined?(Redis) and defined?(Resque)
|
125
123
|
"Redis"
|
126
124
|
elsif defined?(Delayed::Worker)
|
@@ -137,11 +135,12 @@ module HireFireApp
|
|
137
135
|
end
|
138
136
|
|
139
137
|
##
|
140
|
-
# Returns the name of the worker
|
138
|
+
# Returns the name of the worker library, or "Not Found" if the worker library
|
139
|
+
# could not be found / is not supported
|
141
140
|
#
|
142
141
|
# @returns [String]
|
143
142
|
#
|
144
|
-
def
|
143
|
+
def worker_library
|
145
144
|
if defined?(Delayed::Job)
|
146
145
|
"Delayed Job"
|
147
146
|
elsif defined?(Resque)
|
@@ -152,13 +151,14 @@ module HireFireApp
|
|
152
151
|
end
|
153
152
|
|
154
153
|
##
|
155
|
-
# Returns "OK" if both the mapper and worker were found
|
154
|
+
# Returns "OK" if both the mapper and worker were found, or "INCOMPLETE"
|
155
|
+
# if either of them could not be found
|
156
156
|
#
|
157
157
|
# @returns [String]
|
158
158
|
#
|
159
|
-
def
|
160
|
-
if
|
161
|
-
"
|
159
|
+
def worker_ok
|
160
|
+
if mapper_library =~ /Not Found/ or worker_library =~ /Not Found/
|
161
|
+
"INCOMPLETE"
|
162
162
|
else
|
163
163
|
"OK"
|
164
164
|
end
|
metadata
CHANGED
@@ -1,28 +1,24 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: hirefireapp
|
3
|
-
version: !ruby/object:Gem::Version
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
4
5
|
prerelease:
|
5
|
-
version: 0.0.3
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Michael van Rooijen
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-08-05 00:00:00 +02:00
|
14
|
-
default_executable:
|
12
|
+
date: 2011-08-25 00:00:00.000000000 Z
|
15
13
|
dependencies: []
|
16
|
-
|
17
|
-
|
14
|
+
description: HireFireApp.com - The Heroku Process Manager - Autoscaling your web and
|
15
|
+
worker dynos saving you time and money!
|
18
16
|
email: meskyanichi@gmail.com
|
19
|
-
executables:
|
17
|
+
executables:
|
20
18
|
- hirefireapp
|
21
19
|
extensions: []
|
22
|
-
|
23
20
|
extra_rdoc_files: []
|
24
|
-
|
25
|
-
files:
|
21
|
+
files:
|
26
22
|
- .gitignore
|
27
23
|
- README.md
|
28
24
|
- bin/hirefireapp
|
@@ -30,33 +26,29 @@ files:
|
|
30
26
|
- lib/hirefireapp.rb
|
31
27
|
- lib/hirefireapp/middleware.rb
|
32
28
|
- lib/hirefireapp/railtie.rb
|
33
|
-
has_rdoc: true
|
34
29
|
homepage: http://hirefireapp.com/
|
35
30
|
licenses: []
|
36
|
-
|
37
31
|
post_install_message:
|
38
32
|
rdoc_options: []
|
39
|
-
|
40
|
-
require_paths:
|
33
|
+
require_paths:
|
41
34
|
- lib
|
42
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
35
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
43
36
|
none: false
|
44
|
-
requirements:
|
45
|
-
- -
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version:
|
48
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ! '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
42
|
none: false
|
50
|
-
requirements:
|
51
|
-
- -
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version:
|
43
|
+
requirements:
|
44
|
+
- - ! '>='
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0'
|
54
47
|
requirements: []
|
55
|
-
|
56
48
|
rubyforge_project:
|
57
|
-
rubygems_version: 1.6
|
49
|
+
rubygems_version: 1.8.6
|
58
50
|
signing_key:
|
59
51
|
specification_version: 3
|
60
|
-
summary: HireFireApp.com - The Heroku Process Manager - Autoscaling your web and worker
|
52
|
+
summary: HireFireApp.com - The Heroku Process Manager - Autoscaling your web and worker
|
53
|
+
dynos!
|
61
54
|
test_files: []
|
62
|
-
|