torquebox-backstage 0.5.4 → 1.0.0.beta1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +9 -9
- data/README.md +17 -24
- data/TORQUEBOX_VERSION +1 -2
- data/VERSION +2 -1
- data/backstage.rb +0 -2
- data/bin/backstage +3 -4
- data/config/torquebox.yml +0 -5
- data/lib/apps/models/app.rb +1 -1
- data/lib/authentication.rb +2 -2
- data/lib/caches/models/cache.rb +1 -1
- data/lib/destinations/models/destination.rb +6 -4
- data/lib/destinations/models/message.rb +14 -11
- data/lib/groups/models/group.rb +15 -2
- data/lib/has_mbean.rb +8 -0
- data/lib/helpers.rb +15 -34
- data/lib/message_processors/models/message_processor.rb +7 -0
- data/lib/pools/models/pool.rb +4 -4
- data/lib/resource_helpers.rb +0 -1
- data/lib/torquebox_managed.rb +1 -1
- data/views/css/style.sass +0 -9
- data/views/dashboard/index.haml +7 -22
- data/views/groups/index.haml +4 -4
- data/views/groups/show.haml +1 -1
- data/views/layout.haml +0 -3
- metadata +39 -52
data/Gemfile
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
source :rubygems
|
2
|
-
|
2
|
+
|
3
3
|
gem "sinatra", "1.2.6"
|
4
|
-
gem "rack-flash", '0.1.1'
|
5
4
|
gem 'haml', '~>3.0'
|
6
5
|
gem 'sass', '~>3.0'
|
7
6
|
gem "tobias-jmx", '0.8'
|
8
7
|
gem 'json', '1.5.1'
|
9
|
-
gem 'torquebox', '
|
8
|
+
gem 'torquebox', '~> 2.0.0.beta'#'~> 2.x.incremental'
|
10
9
|
gem 'tobias-sinatra-url-for', '0.2.1'
|
11
10
|
gem 'rack-accept', '~>0.4.0'
|
12
11
|
|
13
12
|
# These are commented out to keep them out of Gemfile.lock
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
#
|
13
|
+
#group :development do
|
14
|
+
#gem 'thor', '0.14.6'
|
15
|
+
#gem 'watchr', '~>0.7'
|
16
|
+
#gem 'rspec', '~>2.6.0'
|
17
|
+
#gem 'rack-test', '~>0.6.0'
|
18
|
+
#gem 'rake'
|
19
|
+
#end
|
data/README.md
CHANGED
@@ -20,42 +20,35 @@ available from BackStage are also available from `/jmx-console` (with
|
|
20
20
|
the exception of queue message browsing), but are more accessible in
|
21
21
|
BackStage.
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
`REQUIRE_AUTHENTICATION: true` in the environment section of `torquebox.yml`:
|
27
|
-
|
28
|
-
environment:
|
29
|
-
REQUIRE_AUTHENTICATION: true
|
30
|
-
|
31
|
-
This will enable basic JAAS authentication through TorqueBox. Use the
|
32
|
-
rake task to add usernames and password:
|
33
|
-
|
34
|
-
$ rake torquebox:auth:adduser CREDENTIALS=username:password
|
23
|
+
*Note:* The master branch now only supports TorqueBox 2.x. If you need
|
24
|
+
BackStage for TorqueBox 1.x, install version 0.5.4 of the gem, or use
|
25
|
+
the tag `v0.5.4` from this repo.
|
35
26
|
|
36
27
|
## Installation ##
|
37
28
|
|
38
29
|
BackStage can either be installed and deployed as a gem, or deployed from the
|
39
|
-
application source.
|
30
|
+
application source.
|
40
31
|
|
41
32
|
### As A Gem ###
|
42
33
|
|
34
|
+
There are currently no released BackStage gems for TorqueBox 2.x - you will
|
35
|
+
have to generate the gem from the source:
|
43
36
|
|
44
|
-
|
45
|
-
|
46
|
-
jruby -S gem install torquebox-backstage
|
37
|
+
1. Clone the [git repo](https://github.com/torquebox/backstage)
|
47
38
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
jruby -S backstage deploy --secure=username:password
|
39
|
+
2. Build the gem: `jruby -S gem build torquebox-backstage.gemspec`
|
40
|
+
|
41
|
+
3. Install the gem: `jruby -S gem install torquebox-backstage-1.0.dev.gem`
|
42
|
+
|
43
|
+
4. deploy backstage using the `backstage` command. You can deploy with security
|
44
|
+
disabled: `jruby -S backstage deploy`
|
45
|
+
Or enable security by providing a username/password pair: `jruby -S backstage deploy --secure=username:password`
|
56
46
|
|
57
47
|
### From Source ###
|
58
48
|
|
49
|
+
*Note:* unless you are doing development on BackStage, the recommended
|
50
|
+
install method is to build and install the gem (see above).
|
51
|
+
|
59
52
|
Clone the [git repo](https://github.com/torquebox/backstage),
|
60
53
|
then run bundler to install the needed gems (listed in the
|
61
54
|
[Gemfile](https://github.com/torquebox/backstage/blob/master/Gemfile)):
|
data/TORQUEBOX_VERSION
CHANGED
@@ -1,2 +1 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
2.0.0.beta2
|
data/VERSION
CHANGED
data/backstage.rb
CHANGED
@@ -15,7 +15,6 @@
|
|
15
15
|
#
|
16
16
|
|
17
17
|
require 'sinatra/base'
|
18
|
-
require 'rack-flash'
|
19
18
|
require 'rack/accept'
|
20
19
|
require 'haml'
|
21
20
|
require 'sass'
|
@@ -48,7 +47,6 @@ module Backstage
|
|
48
47
|
class Application < Sinatra::Base
|
49
48
|
enable :sessions
|
50
49
|
use Rack::Accept
|
51
|
-
use Rack::Flash
|
52
50
|
use Rack::CommonLogger, Backstage.logger
|
53
51
|
|
54
52
|
include Backstage::Authentication
|
data/bin/backstage
CHANGED
@@ -30,12 +30,11 @@ class BackstageCommand < Thor
|
|
30
30
|
:env => 'production' )
|
31
31
|
if options[:secure]
|
32
32
|
descriptor['environment'] = { 'REQUIRE_AUTHENTICATION' => true }
|
33
|
-
|
33
|
+
descriptor['auth'] = {'backstage' => {'domain'=>'torquebox-torquebox-backstage', 'credentials'=>{}}}
|
34
34
|
options[:secure].each do |user, pass|
|
35
|
-
credentials
|
35
|
+
descriptor['auth']['backstage']['credentials'][user] = pass
|
36
36
|
end
|
37
|
-
|
38
|
-
puts ">> Wrote user/password entries to #{prop_file}"
|
37
|
+
puts ">> Wrote user/password entries to backstage deployment descriptor"
|
39
38
|
else
|
40
39
|
puts ">> WARNING: deploying BackStage with no security - use the --secure=username:password option to secure it"
|
41
40
|
end
|
data/config/torquebox.yml
CHANGED
data/lib/apps/models/app.rb
CHANGED
data/lib/authentication.rb
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
#
|
16
16
|
|
17
17
|
require 'torquebox'
|
18
|
-
require '
|
18
|
+
require 'torquebox-security'
|
19
19
|
|
20
20
|
module Backstage
|
21
21
|
module Authentication
|
@@ -43,7 +43,7 @@ module Backstage
|
|
43
43
|
|
44
44
|
def authenticate(username, password)
|
45
45
|
return false if username.nil? || password.nil?
|
46
|
-
authenticator = TorqueBox::Authentication
|
46
|
+
authenticator = TorqueBox::Authentication['backstage']
|
47
47
|
authenticator.authenticate(username, password)
|
48
48
|
end
|
49
49
|
|
data/lib/caches/models/cache.rb
CHANGED
@@ -37,7 +37,9 @@ module Backstage
|
|
37
37
|
end
|
38
38
|
|
39
39
|
def jms_destination
|
40
|
-
TorqueBox::Messaging::Queue.new( jndi_name
|
40
|
+
@jms_destination ||= TorqueBox::Messaging::Queue.new( jndi_name )
|
41
|
+
@jms_destination.enumerable_options = enumerable_options
|
42
|
+
@jms_destination
|
41
43
|
end
|
42
44
|
|
43
45
|
def each(options = { })
|
@@ -72,17 +74,17 @@ module Backstage
|
|
72
74
|
|
73
75
|
def self.display_name(name)
|
74
76
|
display_name = name.gsub( /jms\..*?\./, '' )
|
75
|
-
display_name = 'Backgroundable' if display_name =~ %r{/queues/
|
77
|
+
display_name = 'Backgroundable' if display_name =~ %r{/queues/.*/tasks/torquebox_backgroundable}
|
76
78
|
display_name = "#{$1.classify}Task" if display_name =~ %r{/queues/torquebox/.*/tasks/(.*)$}
|
77
79
|
display_name
|
78
80
|
end
|
79
81
|
|
80
82
|
def app
|
81
|
-
name =~ %r{/queues/torquebox/(.*?)/} ? App.find( "torquebox.apps:
|
83
|
+
name =~ %r{/queues/torquebox/(.*?)/} ? App.find( "torquebox.apps:name=#{$1}" ) : nil
|
82
84
|
end
|
83
85
|
|
84
86
|
def app_name
|
85
|
-
name =~ %r{/queues/torquebox/(
|
87
|
+
name =~ %r{/queues/torquebox/(.*?)/} ? $1 : 'n/a'
|
86
88
|
end
|
87
89
|
|
88
90
|
def pause
|
@@ -14,25 +14,28 @@
|
|
14
14
|
# limitations under the License.
|
15
15
|
#
|
16
16
|
|
17
|
-
require 'torquebox/messaging/javax_jms_text_message'
|
18
|
-
|
19
17
|
module Backstage
|
20
18
|
class Message
|
21
19
|
include Resource
|
22
20
|
|
23
|
-
|
24
|
-
|
25
|
-
IGNORED_PROPERTIES = %w{ torquebox_encoding JMSXDeliveryCount }
|
21
|
+
IGNORED_PROPERTIES = [ 'JMSXDeliveryCount', TorqueBox::Messaging::Message::ENCODING_PROPERTY ]
|
22
|
+
|
26
23
|
def initialize(message)
|
27
|
-
@
|
24
|
+
@torquebox_message = message
|
25
|
+
end
|
26
|
+
|
27
|
+
def jms_message
|
28
|
+
@torquebox_message.jms_message
|
28
29
|
end
|
29
30
|
|
30
31
|
def content
|
31
|
-
|
32
|
+
@torquebox_message.decode.inspect
|
32
33
|
rescue Exception => ex
|
33
|
-
|
34
|
-
|
35
|
-
|
34
|
+
if @jms_message.respond_to?(:text)
|
35
|
+
@jms_message.text
|
36
|
+
else
|
37
|
+
"Undecodable message"
|
38
|
+
end
|
36
39
|
end
|
37
40
|
|
38
41
|
def jms_id
|
@@ -47,7 +50,7 @@ module Backstage
|
|
47
50
|
end
|
48
51
|
end
|
49
52
|
|
50
|
-
JMS_PROPERTIES = %w{ JMS_Correlation_ID JMS_Priority JMS_Type
|
53
|
+
JMS_PROPERTIES = %w{ JMS_Correlation_ID JMS_Priority JMS_Type JMS_Reply_To JMS_Redelivered }
|
51
54
|
def jms_properties
|
52
55
|
@jms_properties ||= JMS_PROPERTIES.inject( {} ) do |props,name|
|
53
56
|
value = jms_message.send(name.downcase)
|
data/lib/groups/models/group.rb
CHANGED
@@ -20,11 +20,24 @@ module Backstage
|
|
20
20
|
include Resource
|
21
21
|
|
22
22
|
def self.filter
|
23
|
-
"
|
23
|
+
"jgroups:cluster=*,type=channel"
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.to_hash_attributes
|
27
|
-
super + [:
|
27
|
+
super + [:address,
|
28
|
+
:cluster_name,
|
29
|
+
:connected,
|
30
|
+
:name,
|
31
|
+
:number_of_tasks_in_timer,
|
32
|
+
:open,
|
33
|
+
:received_bytes,
|
34
|
+
:received_messages,
|
35
|
+
:sent_bytes,
|
36
|
+
:sent_messages,
|
37
|
+
:stats,
|
38
|
+
:timer_threads,
|
39
|
+
:version,
|
40
|
+
:view]
|
28
41
|
end
|
29
42
|
|
30
43
|
def protocols
|
data/lib/has_mbean.rb
CHANGED
@@ -42,6 +42,10 @@ module Backstage
|
|
42
42
|
rescue NoMethodError => ex
|
43
43
|
super
|
44
44
|
end
|
45
|
+
|
46
|
+
def mbean_info
|
47
|
+
self.class.mbean_info( mbean_name )
|
48
|
+
end
|
45
49
|
|
46
50
|
module ClassMethods
|
47
51
|
def jmx_server
|
@@ -59,6 +63,10 @@ module Backstage
|
|
59
63
|
nil
|
60
64
|
end
|
61
65
|
|
66
|
+
def mbean_info(name)
|
67
|
+
name = ObjectName.new( name ) unless name.is_a?( ObjectName )
|
68
|
+
name.info( jmx_server.server )
|
69
|
+
end
|
62
70
|
end
|
63
71
|
end
|
64
72
|
end
|
data/lib/helpers.rb
CHANGED
@@ -24,7 +24,7 @@ module Backstage
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.jboss_app_name
|
27
|
-
App.find( "torquebox.apps:
|
27
|
+
App.find( "torquebox.apps:name=torquebox-backstage" ) ? 'torquebox-backstage' : 'backstage'
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.logger
|
@@ -196,43 +196,32 @@ module Backstage
|
|
196
196
|
|
197
197
|
def torquebox_version_info
|
198
198
|
versions = []
|
199
|
-
torquebox = JMX::MBeanServer.new[javax.management.ObjectName.new( 'torquebox:type=
|
199
|
+
torquebox = JMX::MBeanServer.new[javax.management.ObjectName.new( 'torquebox:type=version' )]
|
200
200
|
versions << ['Version', torquebox.version]
|
201
201
|
versions << ['Build Number', torquebox.build_number]
|
202
202
|
versions << ['Revision', torquebox.revision]
|
203
203
|
versions
|
204
204
|
end
|
205
205
|
|
206
|
-
def
|
207
|
-
versions =
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
206
|
+
def component_version_info
|
207
|
+
versions = { }
|
208
|
+
torquebox = JMX::MBeanServer.new[javax.management.ObjectName.new( 'torquebox:type=version' )]
|
209
|
+
torquebox.component_names.each do |name|
|
210
|
+
versions[name] = torquebox.getComponentBuildInfo( name ) unless name == 'TorqueBox'
|
211
|
+
end
|
212
|
+
augment_version_data( versions )
|
212
213
|
end
|
213
214
|
|
214
|
-
def
|
215
|
-
versions
|
216
|
-
jboss = JMX::MBeanServer.new[javax.management.ObjectName.new( 'jboss.system:type=Server' )]
|
217
|
-
versions << ['Version', jboss.version]
|
218
|
-
versions
|
215
|
+
def augment_version_data( versions )
|
216
|
+
augment_hornetq_version( versions )
|
219
217
|
end
|
220
218
|
|
221
|
-
def
|
222
|
-
|
223
|
-
|
224
|
-
cm = nil # JMX::MBeans::Org::Infinispan::Manager::DefaultCacheManager
|
225
|
-
|
226
|
-
infinispan.query_names( 'org.infinispan:component=CacheManager,name=*,type=CacheManager' ).collect {|name| cm = JMX::MBeanServer.new[ name ] }
|
227
|
-
|
228
|
-
if cm
|
229
|
-
versions << ['Version', cm.version ]
|
230
|
-
else
|
231
|
-
versions << ['Version', 'disabled']
|
232
|
-
end
|
219
|
+
def augment_hornetq_version( versions )
|
220
|
+
hornetq = JMX::MBeanServer.new[javax.management.ObjectName.new( 'org.hornetq:module=Core,type=Server' )]
|
221
|
+
versions['HornetQ']['clustered'] = hornetq.clustered if versions['HornetQ'] && hornetq
|
233
222
|
versions
|
234
223
|
end
|
235
|
-
|
224
|
+
|
236
225
|
def hornetq_cluster_info
|
237
226
|
info = []
|
238
227
|
ccc = nil # JMX::MBeans::Org::Hornetq::Core::Management::Impl::ClusterConnectionControlImpl
|
@@ -253,14 +242,6 @@ module Backstage
|
|
253
242
|
info
|
254
243
|
end
|
255
244
|
|
256
|
-
#def jgroups_cluster_channels
|
257
|
-
# mux_channels = []
|
258
|
-
# jgroups = JMX::MBeanServer.new
|
259
|
-
|
260
|
-
# find the name of the jgroups channels
|
261
|
-
# jgroups.query_names( 'jboss.jgroups:cluster=*,type=channel' ).collect {|name| mux_channels << JMX::MBeanServer.new[ name ] }
|
262
|
-
# mux_channels
|
263
|
-
#end
|
264
245
|
end
|
265
246
|
end
|
266
247
|
end
|
@@ -27,6 +27,13 @@ module Backstage
|
|
27
27
|
def self.to_hash_attributes
|
28
28
|
super + [:name, :app, :app_name, :status, :destination_name, :message_selector, :concurrency]
|
29
29
|
end
|
30
|
+
|
31
|
+
def name
|
32
|
+
name = super
|
33
|
+
name = $2 if name =~ %r{(/.*)*\.(.*)}
|
34
|
+
name = $1 if name =~ %r{TorqueBox::Messaging::(.*)}
|
35
|
+
name
|
36
|
+
end
|
30
37
|
|
31
38
|
def destination_name
|
32
39
|
name = super
|
data/lib/pools/models/pool.rb
CHANGED
@@ -28,10 +28,6 @@ module Backstage
|
|
28
28
|
super + [:name, :app, :app_name, :pool_type, :size, :available, :borrowed, :minimum_instances, :maximum_instances]
|
29
29
|
end
|
30
30
|
|
31
|
-
def pool_type
|
32
|
-
full_name =~ /type=(.*?)(,|$)/ ? $1 : ''
|
33
|
-
end
|
34
|
-
|
35
31
|
def size
|
36
32
|
shared? ? 1 : mbean.size
|
37
33
|
end
|
@@ -42,6 +38,10 @@ module Backstage
|
|
42
38
|
end
|
43
39
|
end
|
44
40
|
|
41
|
+
def pool_type
|
42
|
+
mbean_info.getClassName =~ /Shared/ ? 'shared' : 'default'
|
43
|
+
end
|
44
|
+
|
45
45
|
def shared?
|
46
46
|
pool_type == 'shared'
|
47
47
|
end
|
data/lib/resource_helpers.rb
CHANGED
@@ -50,7 +50,6 @@ module Backstage
|
|
50
50
|
send_args << params if object.respond_to?( action ) && object.method( action ).arity == 1
|
51
51
|
action_response = object.__send__( *send_args )
|
52
52
|
if html_requested?
|
53
|
-
flash[:notice] = "'#{action}' called on #{simple_class_name( object ).humanize} #{object.name}"
|
54
53
|
redirect_to object_path( object )
|
55
54
|
else
|
56
55
|
content_type :json
|
data/lib/torquebox_managed.rb
CHANGED
data/views/css/style.sass
CHANGED
@@ -60,15 +60,6 @@ body
|
|
60
60
|
@include rounded-corners(3px)
|
61
61
|
text-decoration: none
|
62
62
|
background-color: $highlight_color
|
63
|
-
|
64
|
-
#flash
|
65
|
-
@include rounded-corners
|
66
|
-
border: 1px solid $border_color
|
67
|
-
padding: 0.5em
|
68
|
-
margin-bottom: 0.5em
|
69
|
-
color: black
|
70
|
-
background-color: $highlight_color
|
71
|
-
font-weight: bold
|
72
63
|
|
73
64
|
#footer
|
74
65
|
margin: 30px 0
|
data/views/dashboard/index.haml
CHANGED
@@ -16,29 +16,14 @@
|
|
16
16
|
- torquebox_version_info.each do |key, value|
|
17
17
|
- unless value.blank?
|
18
18
|
%li== #{key}: #{value}
|
19
|
-
|
20
|
-
|
21
|
-
%ul
|
22
|
-
- jboss_version_info.each do |key, value|
|
23
|
-
- unless value.blank?
|
24
|
-
%li== #{key}: #{value}
|
25
|
-
%li
|
26
|
-
HornetQ:
|
27
|
-
%ul
|
28
|
-
- hornetq_version_info.each do |key, value|
|
29
|
-
- unless value.blank?
|
30
|
-
%li== #{key}: #{value}
|
31
|
-
%li
|
32
|
-
Infinispan:
|
33
|
-
%ul
|
34
|
-
- infinispan_version_info.each do |key, value|
|
35
|
-
- unless value.blank?
|
36
|
-
%li== #{key}: #{value}
|
37
|
-
/
|
19
|
+
|
20
|
+
- component_version_info.each do |name, data|
|
38
21
|
%li
|
39
|
-
|
40
|
-
|
41
|
-
|
22
|
+
== #{name}:
|
23
|
+
%ul
|
24
|
+
- data.each do |key, value|
|
25
|
+
- unless value.blank?
|
26
|
+
%li== #{key.humanize}: #{value}
|
42
27
|
|
43
28
|
#cluster_properties.list
|
44
29
|
%h3 HornetQ Cluster
|
data/views/groups/index.haml
CHANGED
@@ -7,8 +7,8 @@
|
|
7
7
|
%th Open
|
8
8
|
%th Connected
|
9
9
|
%th Address
|
10
|
-
%th
|
11
|
-
%th
|
10
|
+
%th SentMessages
|
11
|
+
%th SentBytes
|
12
12
|
%th View
|
13
13
|
%th
|
14
14
|
- @collection.each do |group|
|
@@ -19,6 +19,6 @@
|
|
19
19
|
%td= group.open
|
20
20
|
%td= group.connected
|
21
21
|
%td= group.address
|
22
|
-
%td= group.
|
23
|
-
%td= group.
|
22
|
+
%td= group.sent_messages
|
23
|
+
%td= group.sent_bytes
|
24
24
|
%td= group.view
|
data/views/groups/show.haml
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
== JGroups: #{@object.cluster_name}
|
4
4
|
|
5
5
|
%table.data-table
|
6
|
-
- %w{ name received_messages received_bytes connected
|
6
|
+
- %w{ name received_messages received_bytes connected sent_messages sent_bytes view address timer_threads number_of_tasks_in_timer stats version }.each do |method|
|
7
7
|
= data_row( method.humanize, @object.send( method ) )
|
8
8
|
|
9
9
|
- @object.protocols.each do |protocol|
|
data/views/layout.haml
CHANGED
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: torquebox-backstage
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
prerelease:
|
5
|
-
version: 0.
|
4
|
+
prerelease: 6
|
5
|
+
version: 1.0.0.beta1
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Tobias Crawley
|
@@ -12,8 +12,7 @@ autorequire:
|
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
14
|
|
15
|
-
date:
|
16
|
-
default_executable:
|
15
|
+
date: 2012-01-10 00:00:00 Z
|
17
16
|
dependencies:
|
18
17
|
- !ruby/object:Gem::Dependency
|
19
18
|
name: sinatra
|
@@ -27,159 +26,148 @@ dependencies:
|
|
27
26
|
type: :runtime
|
28
27
|
version_requirements: *id001
|
29
28
|
- !ruby/object:Gem::Dependency
|
30
|
-
name:
|
29
|
+
name: haml
|
31
30
|
prerelease: false
|
32
31
|
requirement: &id002 !ruby/object:Gem::Requirement
|
33
32
|
none: false
|
34
33
|
requirements:
|
35
|
-
- -
|
34
|
+
- - ~>
|
36
35
|
- !ruby/object:Gem::Version
|
37
|
-
version: 0
|
36
|
+
version: "3.0"
|
38
37
|
type: :runtime
|
39
38
|
version_requirements: *id002
|
40
39
|
- !ruby/object:Gem::Dependency
|
41
|
-
name:
|
40
|
+
name: sass
|
42
41
|
prerelease: false
|
43
42
|
requirement: &id003 !ruby/object:Gem::Requirement
|
44
43
|
none: false
|
45
44
|
requirements:
|
46
|
-
- -
|
45
|
+
- - ~>
|
47
46
|
- !ruby/object:Gem::Version
|
48
|
-
version: 3.1.
|
47
|
+
version: 3.1.2
|
49
48
|
type: :runtime
|
50
49
|
version_requirements: *id003
|
51
50
|
- !ruby/object:Gem::Dependency
|
52
|
-
name:
|
51
|
+
name: tobias-jmx
|
53
52
|
prerelease: false
|
54
53
|
requirement: &id004 !ruby/object:Gem::Requirement
|
55
54
|
none: false
|
56
55
|
requirements:
|
57
56
|
- - "="
|
58
57
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
58
|
+
version: "0.8"
|
60
59
|
type: :runtime
|
61
60
|
version_requirements: *id004
|
62
61
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
62
|
+
name: json
|
64
63
|
prerelease: false
|
65
64
|
requirement: &id005 !ruby/object:Gem::Requirement
|
66
65
|
none: false
|
67
66
|
requirements:
|
68
67
|
- - "="
|
69
68
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
69
|
+
version: 1.5.1
|
71
70
|
type: :runtime
|
72
71
|
version_requirements: *id005
|
73
72
|
- !ruby/object:Gem::Dependency
|
74
|
-
name:
|
73
|
+
name: torquebox
|
75
74
|
prerelease: false
|
76
75
|
requirement: &id006 !ruby/object:Gem::Requirement
|
77
76
|
none: false
|
78
77
|
requirements:
|
79
|
-
- -
|
78
|
+
- - ~>
|
80
79
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
80
|
+
version: 2.0.0.beta
|
82
81
|
type: :runtime
|
83
82
|
version_requirements: *id006
|
84
83
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
84
|
+
name: tobias-sinatra-url-for
|
86
85
|
prerelease: false
|
87
86
|
requirement: &id007 !ruby/object:Gem::Requirement
|
88
87
|
none: false
|
89
88
|
requirements:
|
90
89
|
- - "="
|
91
90
|
- !ruby/object:Gem::Version
|
92
|
-
version:
|
91
|
+
version: 0.2.1
|
93
92
|
type: :runtime
|
94
93
|
version_requirements: *id007
|
95
94
|
- !ruby/object:Gem::Dependency
|
96
|
-
name:
|
95
|
+
name: rack-accept
|
97
96
|
prerelease: false
|
98
97
|
requirement: &id008 !ruby/object:Gem::Requirement
|
99
98
|
none: false
|
100
99
|
requirements:
|
101
|
-
- -
|
100
|
+
- - ~>
|
102
101
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
102
|
+
version: 0.4.4
|
104
103
|
type: :runtime
|
105
104
|
version_requirements: *id008
|
106
105
|
- !ruby/object:Gem::Dependency
|
107
|
-
name:
|
106
|
+
name: thor
|
108
107
|
prerelease: false
|
109
108
|
requirement: &id009 !ruby/object:Gem::Requirement
|
110
109
|
none: false
|
111
110
|
requirements:
|
112
111
|
- - "="
|
113
112
|
- !ruby/object:Gem::Version
|
114
|
-
version: 0.
|
113
|
+
version: 0.14.6
|
115
114
|
type: :runtime
|
116
115
|
version_requirements: *id009
|
117
116
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
117
|
+
name: bundler
|
119
118
|
prerelease: false
|
120
119
|
requirement: &id010 !ruby/object:Gem::Requirement
|
121
120
|
none: false
|
122
121
|
requirements:
|
123
|
-
- -
|
122
|
+
- - ~>
|
124
123
|
- !ruby/object:Gem::Version
|
125
|
-
version: 0.
|
126
|
-
type: :
|
124
|
+
version: 1.0.12
|
125
|
+
type: :runtime
|
127
126
|
version_requirements: *id010
|
128
127
|
- !ruby/object:Gem::Dependency
|
129
|
-
name:
|
128
|
+
name: thor
|
130
129
|
prerelease: false
|
131
130
|
requirement: &id011 !ruby/object:Gem::Requirement
|
132
131
|
none: false
|
133
132
|
requirements:
|
134
|
-
- -
|
133
|
+
- - "="
|
135
134
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
135
|
+
version: 0.14.6
|
137
136
|
type: :development
|
138
137
|
version_requirements: *id011
|
139
138
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
139
|
+
name: watchr
|
141
140
|
prerelease: false
|
142
141
|
requirement: &id012 !ruby/object:Gem::Requirement
|
143
142
|
none: false
|
144
143
|
requirements:
|
145
144
|
- - ~>
|
146
145
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
146
|
+
version: "0.7"
|
148
147
|
type: :development
|
149
148
|
version_requirements: *id012
|
150
149
|
- !ruby/object:Gem::Dependency
|
151
|
-
name:
|
150
|
+
name: rspec
|
152
151
|
prerelease: false
|
153
152
|
requirement: &id013 !ruby/object:Gem::Requirement
|
154
153
|
none: false
|
155
154
|
requirements:
|
156
155
|
- - ~>
|
157
156
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
157
|
+
version: 2.6.0
|
159
158
|
type: :development
|
160
159
|
version_requirements: *id013
|
161
160
|
- !ruby/object:Gem::Dependency
|
162
|
-
name:
|
161
|
+
name: rack-test
|
163
162
|
prerelease: false
|
164
163
|
requirement: &id014 !ruby/object:Gem::Requirement
|
165
164
|
none: false
|
166
165
|
requirements:
|
167
|
-
- -
|
166
|
+
- - ~>
|
168
167
|
- !ruby/object:Gem::Version
|
169
|
-
version: 0.
|
170
|
-
type: :
|
168
|
+
version: 0.6.0
|
169
|
+
type: :development
|
171
170
|
version_requirements: *id014
|
172
|
-
- !ruby/object:Gem::Dependency
|
173
|
-
name: bundler
|
174
|
-
prerelease: false
|
175
|
-
requirement: &id015 !ruby/object:Gem::Requirement
|
176
|
-
none: false
|
177
|
-
requirements:
|
178
|
-
- - "="
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: 1.0.12
|
181
|
-
type: :runtime
|
182
|
-
version_requirements: *id015
|
183
171
|
description: BackStage allows you to look behind the TorqueBox curtain, and view information about all of the components you have running. It includes support for remote code execution and log tailing to aid in debugging.
|
184
172
|
email: tcrawley@redhat.com
|
185
173
|
executables:
|
@@ -270,7 +258,6 @@ files:
|
|
270
258
|
- views/services/index.haml
|
271
259
|
- views/services/show.haml
|
272
260
|
- bin/backstage
|
273
|
-
has_rdoc: true
|
274
261
|
homepage: http://github.com/torquebox/backstage
|
275
262
|
licenses:
|
276
263
|
- AL
|
@@ -294,7 +281,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
294
281
|
requirements: []
|
295
282
|
|
296
283
|
rubyforge_project:
|
297
|
-
rubygems_version: 1.
|
284
|
+
rubygems_version: 1.8.9
|
298
285
|
signing_key:
|
299
286
|
specification_version: 3
|
300
287
|
summary: BackStage - Queue/Topic/Job/etc viewer for TorqueBox
|