rumx 0.1.3 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.md +21 -0
- data/README.md +11 -4
- data/Rakefile +27 -16
- data/examples/bean_hash/config.ru +1 -1
- data/examples/bean_list/config.ru +1 -1
- data/examples/embedded/config.ru +1 -1
- data/examples/embedded/my_bean.rb +1 -1
- data/examples/hash/config.ru +1 -1
- data/examples/jmx/README +2 -0
- data/examples/jmx/config.ru +13 -0
- data/examples/list/config.ru +1 -1
- data/examples/simple/my_bean.rb +2 -0
- data/examples/timer_hash/config.ru +1 -1
- data/examples/timer_hash/my_bean.rb +1 -1
- data/lib/rumx/attribute.rb +0 -2
- data/lib/rumx/attribute_info.rb +4 -0
- data/lib/rumx/bean.rb +18 -25
- data/lib/rumx/beans/error.rb +15 -2
- data/lib/rumx/beans/timer_and_error.rb +20 -2
- data/lib/rumx/beans/timer_and_error_hash.rb +10 -0
- data/lib/rumx/beans/timer_hash.rb +1 -0
- data/lib/rumx/beans.rb +1 -0
- data/lib/rumx/jmx_bean.rb +90 -0
- data/lib/rumx/server/views/attribute_value_tag.haml +2 -2
- data/lib/rumx/server/views/layout.haml +1 -1
- data/lib/rumx/server/views/tree.haml +1 -1
- data/lib/rumx/server.rb +18 -4
- data/lib/rumx/type.rb +24 -0
- data/lib/rumx.rb +3 -0
- metadata +185 -145
data/History.md
CHANGED
@@ -1,6 +1,27 @@
|
|
1
1
|
Rumx Changelog
|
2
2
|
=====================
|
3
3
|
|
4
|
+
0.2.2
|
5
|
+
|
6
|
+
- No real change but I think I ran into this during gem creation: http://jira.codehaus.org/browse/JRUBY-6208
|
7
|
+
|
8
|
+
0.2.1
|
9
|
+
|
10
|
+
- Allow more explicit control of Error bean.
|
11
|
+
|
12
|
+
0.2.0
|
13
|
+
|
14
|
+
- Bridge to JMX
|
15
|
+
|
16
|
+
0.1.5
|
17
|
+
|
18
|
+
- Require Beans::TimerAndErrorHash otherwise it won't do any good adding it.
|
19
|
+
|
20
|
+
0.1.4
|
21
|
+
|
22
|
+
- Oops, I had broken all the examples when I changed the setup around.
|
23
|
+
- Added Beans::TimerAndErrorHash
|
24
|
+
|
4
25
|
0.1.3
|
5
26
|
|
6
27
|
- Check for nil when using Hash and List attribute.
|
data/README.md
CHANGED
@@ -89,8 +89,6 @@ Refer to the timer example for more information.
|
|
89
89
|
|
90
90
|
## TODO
|
91
91
|
|
92
|
-
I'm rewriting the list logic. List stuff will soon be deprecated.
|
93
|
-
|
94
92
|
Figure out the "NameError - uninitialized constant Rack::File:" error that occurs frequently on startup and seems related
|
95
93
|
to the tree not displaying correctly. Works okay with refresh. (Current workaround is to require 'rack/file in server.rb)
|
96
94
|
|
@@ -107,7 +105,16 @@ Allow validations in attribute declarations?
|
|
107
105
|
|
108
106
|
New types :date and :datetime?
|
109
107
|
|
110
|
-
|
108
|
+
Implement some kind of push of entire attribute tree to a central server for processing. Push would probably require
|
109
|
+
the class name for unmarshaling. Include some mechanism for summation
|
110
|
+
of data. For instance, the timer would sum up all timer instances (possibly by just creating a '+' operator. All beans
|
111
|
+
would probably have a reset attribute that they could optionally implement so that after tree was pushed, a reset would
|
112
|
+
occur for those beans that need it (Timer). Since multiple clients might want to access a Timer and we only want one to
|
113
|
+
actually reset it, a History buffer might be nice. This would also be useful for alerting to provide some state when
|
114
|
+
determining if an alert should be made.
|
115
|
+
|
116
|
+
Need to return NaN's for things like max_time in the Timer bean. Using 0 is just wrong and makes the ruminate graphs
|
117
|
+
all spiky.
|
111
118
|
|
112
119
|
## Author
|
113
120
|
|
@@ -115,4 +122,4 @@ Brad Pardee
|
|
115
122
|
|
116
123
|
## Copyright
|
117
124
|
|
118
|
-
Copyright (c) 2011 Clarity Services. See LICENSE for details.
|
125
|
+
Copyright (c) 2011-2012 Clarity Services. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -1,23 +1,34 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require '
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
begin
|
3
|
+
require 'bundler/setup'
|
4
|
+
rescue LoadError
|
5
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
6
|
+
end
|
7
|
+
begin
|
8
|
+
require 'rdoc/task'
|
9
|
+
rescue LoadError
|
10
|
+
require 'rdoc/rdoc'
|
11
|
+
require 'rake/rdoctask'
|
12
|
+
RDoc::Task = Rake::RDocTask
|
13
|
+
end
|
4
14
|
|
5
|
-
|
6
|
-
|
7
|
-
|
15
|
+
RDoc::Task.new(:rdoc) do |rdoc|
|
16
|
+
rdoc.rdoc_dir = 'rdoc'
|
17
|
+
rdoc.title = 'Rumx'
|
18
|
+
rdoc.options << '--line-numbers'
|
19
|
+
rdoc.rdoc_files.include('README.rdoc')
|
20
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
8
21
|
end
|
9
22
|
|
10
|
-
|
23
|
+
Bundler::GemHelper.install_tasks
|
11
24
|
|
12
|
-
|
13
|
-
t.test_files = FileList['test/*_test.rb']
|
14
|
-
t.verbose = true
|
15
|
-
end
|
25
|
+
require 'rake/testtask'
|
16
26
|
|
17
|
-
|
27
|
+
Rake::TestTask.new(:test) do |t|
|
28
|
+
t.libs << 'lib'
|
29
|
+
t.libs << 'test'
|
30
|
+
t.pattern = 'test/**/*_test.rb'
|
31
|
+
t.verbose = false
|
18
32
|
end
|
19
33
|
|
20
|
-
|
21
|
-
task :doc do
|
22
|
-
system "rdoc --main README.md --inline-source --quiet README.md `find lib -name '*.rb'`"
|
23
|
-
end
|
34
|
+
task :default => :test
|
data/examples/embedded/config.ru
CHANGED
data/examples/hash/config.ru
CHANGED
data/examples/jmx/README
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
# Allow examples to be run in-place without requiring a gem install
|
2
|
+
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
require 'rumx'
|
6
|
+
|
7
|
+
memory_bean = Rumx::JMXBean.new('java.lang:type=Memory')
|
8
|
+
os_bean = Rumx::JMXBean.new('java.lang:type=OperatingSystem')
|
9
|
+
threading_bean = Rumx::JMXBean.new('java.lang:type=Threading')
|
10
|
+
Rumx::Bean.root.bean_add_child(:Memory, memory_bean)
|
11
|
+
Rumx::Bean.root.bean_add_child(:OperatingSystem, os_bean)
|
12
|
+
Rumx::Bean.root.bean_add_child(:Threading, threading_bean)
|
13
|
+
run Rumx::Server
|
data/examples/list/config.ru
CHANGED
data/examples/simple/my_bean.rb
CHANGED
@@ -8,6 +8,7 @@ class MyBean
|
|
8
8
|
bean_attr_accessor :my_accessor, :integer, 'My integer accessor'
|
9
9
|
bean_attr_writer :my_writer, :float, 'My float writer'
|
10
10
|
bean_reader :readable_my_writer, :float, 'My secret access to the write-only attribute my_writer'
|
11
|
+
bean_attr_accessor :my_boolean, :boolean, 'My boolean accessor'
|
11
12
|
|
12
13
|
bean_operation :my_operation, :string, 'My operation', [
|
13
14
|
[ :arg_int, :integer, 'An int argument', 42 ],
|
@@ -19,6 +20,7 @@ class MyBean
|
|
19
20
|
@greeting = 'Hello, Rumx'
|
20
21
|
@my_accessor = 4
|
21
22
|
@my_writer = 10.78
|
23
|
+
@my_boolean = true
|
22
24
|
end
|
23
25
|
|
24
26
|
def goodbye
|
data/lib/rumx/attribute.rb
CHANGED
data/lib/rumx/attribute_info.rb
CHANGED
data/lib/rumx/bean.rb
CHANGED
@@ -4,6 +4,8 @@ module Rumx
|
|
4
4
|
# Defines a Rumx bean that allows access to the defined attributes and operations.
|
5
5
|
# All public instance methods are prefixed with "bean_" to try to avoid collisions.
|
6
6
|
module Bean
|
7
|
+
@@root_hash = {}
|
8
|
+
|
7
9
|
module ClassMethods
|
8
10
|
|
9
11
|
# options
|
@@ -153,37 +155,28 @@ module Rumx
|
|
153
155
|
base.extend(ClassMethods)
|
154
156
|
end
|
155
157
|
|
156
|
-
def self.
|
157
|
-
|
158
|
+
def self.add_root(name, bean)
|
159
|
+
@@root_hash[name.to_sym] = bean
|
158
160
|
end
|
159
161
|
|
160
|
-
def self.
|
161
|
-
|
162
|
+
def self.remove_root(name)
|
163
|
+
@@root_hash.delete(name.to_sym)
|
162
164
|
end
|
163
165
|
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
name_array = name_array[0..-2]
|
168
|
-
# If it's a list attribute
|
169
|
-
if name.match(/^\d+$/)
|
170
|
-
index = name.to_i
|
171
|
-
name = name_array.pop
|
172
|
-
bean = Bean.find(name_array)
|
173
|
-
return nil unless bean
|
174
|
-
name = name.to_sym
|
175
|
-
# else just a regular attribute
|
166
|
+
def self.root(name = nil)
|
167
|
+
if name
|
168
|
+
@@root_hash[name.to_sym]
|
176
169
|
else
|
177
|
-
|
178
|
-
return nil unless bean
|
179
|
-
name = name.to_sym
|
180
|
-
bean.class.bean_attributes.each do |attribute|
|
181
|
-
if name == attribute.name
|
182
|
-
return [bean, attribute, attribute.name, attribute.get_value(bean)]
|
183
|
-
end
|
184
|
-
end
|
170
|
+
@root ||= Beans::Folder.new
|
185
171
|
end
|
186
|
-
|
172
|
+
end
|
173
|
+
|
174
|
+
def self.find(name_array)
|
175
|
+
bean = root.bean_find(name_array)
|
176
|
+
return bean if bean
|
177
|
+
my_root = root(name_array[0])
|
178
|
+
return nil unless my_root
|
179
|
+
return my_root.bean_find(name_array, 1)
|
187
180
|
end
|
188
181
|
|
189
182
|
# Return [bean, operation] pair or nil if not found
|
data/lib/rumx/beans/error.rb
CHANGED
@@ -5,6 +5,8 @@ module Rumx
|
|
5
5
|
|
6
6
|
bean_attr_reader :error_count, :integer, 'Number of times the measured block has raised an exception'
|
7
7
|
bean_attr_reader :errors, :list, 'List of the last occurring errors', :list_type => :bean
|
8
|
+
bean_attr_accessor :max_errors, :integer, 'The max number of error descriptions to keep'
|
9
|
+
bean_attr_writer :reset, :boolean, 'Reset the error count'
|
8
10
|
|
9
11
|
def initialize(opts={})
|
10
12
|
@errors = []
|
@@ -17,15 +19,26 @@ module Rumx
|
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
22
|
+
def max_errors=(max_errors)
|
23
|
+
bean_synchronize do
|
24
|
+
@max_errors = max_errors
|
25
|
+
@errors.shift while @errors.size > @max_errors
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
20
29
|
def perform(prefix='')
|
21
30
|
yield
|
22
31
|
rescue Exception => e
|
32
|
+
add_exception(e)
|
33
|
+
raise
|
34
|
+
end
|
35
|
+
|
36
|
+
def add_exception(exception)
|
23
37
|
bean_synchronize do
|
24
38
|
@error_count += 1
|
25
|
-
@errors << Message.new(
|
39
|
+
@errors << Message.new(exception.message)
|
26
40
|
@errors.shift while @errors.size > @max_errors
|
27
41
|
end
|
28
|
-
raise
|
29
42
|
end
|
30
43
|
|
31
44
|
def to_s
|
@@ -2,21 +2,39 @@ module Rumx
|
|
2
2
|
module Beans
|
3
3
|
class TimerAndError < Timer
|
4
4
|
|
5
|
-
bean_attr_reader :error_count,
|
6
|
-
bean_attr_reader :
|
5
|
+
bean_attr_reader :error_count, :integer, 'Number of times the measured block has raised an exception'
|
6
|
+
bean_attr_reader :total_error_count, :integer, 'Total number of times the measured block has raised an exception'
|
7
|
+
bean_attr_reader :errors, :list, 'List of the last occurring errors', :list_type => :bean
|
8
|
+
bean_attr_accessor :max_errors, :integer, 'The max number of error descriptions to keep'
|
7
9
|
|
8
10
|
def initialize(opts={})
|
9
11
|
super
|
10
12
|
@error_count = 0
|
13
|
+
@total_error_count = 0
|
11
14
|
@errors = []
|
12
15
|
@max_errors = (opts[:max_errors] || 1).to_i
|
13
16
|
end
|
14
17
|
|
18
|
+
def reset=(val)
|
19
|
+
super
|
20
|
+
if val
|
21
|
+
@error_count = 0
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def max_errors=(max_errors)
|
26
|
+
bean_synchronize do
|
27
|
+
@max_errors = max_errors
|
28
|
+
@errors.shift while @errors.size > @max_errors
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
15
32
|
def measure
|
16
33
|
super
|
17
34
|
rescue Exception => e
|
18
35
|
bean_synchronize do
|
19
36
|
@error_count += 1
|
37
|
+
@total_error_count += 1
|
20
38
|
@errors << Message.new(e.message)
|
21
39
|
@errors.shift while @errors.size > @max_errors
|
22
40
|
end
|
data/lib/rumx/beans.rb
CHANGED
@@ -0,0 +1,90 @@
|
|
1
|
+
module Rumx
|
2
|
+
class JMXBean
|
3
|
+
include Bean
|
4
|
+
|
5
|
+
def initialize(object_name)
|
6
|
+
@name = javax.management.ObjectName.new(object_name)
|
7
|
+
@mbean_info = java.lang.management.ManagementFactory.getPlatformMBeanServer.getMBeanInfo(@name)
|
8
|
+
raise "Could not find JMX Bean matching #{object_name}" unless @mbean_info
|
9
|
+
end
|
10
|
+
|
11
|
+
def bean_has_attributes?
|
12
|
+
@mbean_info.getAttributes.size > 0
|
13
|
+
end
|
14
|
+
|
15
|
+
protected
|
16
|
+
|
17
|
+
def do_bean_get_attributes(ancestry, &block)
|
18
|
+
return do_bean_get_attributes_json unless block_given?
|
19
|
+
server = java.lang.management.ManagementFactory.getPlatformMBeanServer
|
20
|
+
child_ancestry = ancestry.dup
|
21
|
+
# Save some object creation
|
22
|
+
child_index = child_ancestry.size
|
23
|
+
@mbean_info.getAttributes.each do |mbean_attribute_info|
|
24
|
+
type = jmx_type_to_rumx_type(mbean_attribute_info.type)
|
25
|
+
if type
|
26
|
+
attribute_name = mbean_attribute_info.name
|
27
|
+
value = server.getAttribute(@name, attribute_name)
|
28
|
+
attribute = Attribute.new(attribute_name, type, mbean_attribute_info.description, mbean_attribute_info.is_readable, mbean_attribute_info.is_writable, {})
|
29
|
+
child_ancestry[child_index] = attribute_name
|
30
|
+
attribute_info = AttributeInfo.new(attribute, self, child_ancestry, value)
|
31
|
+
yield attribute_info
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def do_bean_get_attributes_json
|
37
|
+
hash = {}
|
38
|
+
server = java.lang.management.ManagementFactory.getPlatformMBeanServer
|
39
|
+
@mbean_info.getAttributes.each do |mbean_attribute_info|
|
40
|
+
type = jmx_type_to_rumx_type(mbean_attribute_info.type)
|
41
|
+
if type
|
42
|
+
attribute_name = mbean_attribute_info.name
|
43
|
+
value = server.getAttribute(@name, attribute_name)
|
44
|
+
hash[attribute_name] = value
|
45
|
+
end
|
46
|
+
end
|
47
|
+
return hash
|
48
|
+
end
|
49
|
+
|
50
|
+
def do_bean_set_attributes(params)
|
51
|
+
return if !params || params.empty?
|
52
|
+
changed = false
|
53
|
+
server = java.lang.management.ManagementFactory.getPlatformMBeanServer
|
54
|
+
@mbean_info.getAttributes.each do |mbean_attribute_info|
|
55
|
+
type = jmx_type_to_rumx_type(mbean_attribute_info.type)
|
56
|
+
if type && mbean_attribute_info.is_writable
|
57
|
+
attribute_name = mbean_attribute_info.name
|
58
|
+
jmx_attribute = nil
|
59
|
+
if params.has_key?(attribute_name)
|
60
|
+
value = type.string_to_value(params[attribute_name])
|
61
|
+
jmx_attribute = javax.management.Attribute.new(attribute_name, value)
|
62
|
+
elsif params.has_key?(attribute_name.to_sym)
|
63
|
+
value = type.string_to_value(params[attribute_name.to_sym])
|
64
|
+
jmx_attribute = javax.management.Attribute.new(attribute_name, value)
|
65
|
+
end
|
66
|
+
if jmx_attribute
|
67
|
+
server.setAttribute(@name, jmx_attribute)
|
68
|
+
changed = true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
bean_attributes_changed if changed
|
73
|
+
end
|
74
|
+
|
75
|
+
def jmx_type_to_rumx_type(jmx_type)
|
76
|
+
case jmx_type
|
77
|
+
when 'int', 'long'
|
78
|
+
Type.find(:integer)
|
79
|
+
when 'float', 'double'
|
80
|
+
Type.find(:float)
|
81
|
+
when 'boolean'
|
82
|
+
Type.find(:boolean)
|
83
|
+
when 'java.lang.String'
|
84
|
+
Type.find(:string)
|
85
|
+
else
|
86
|
+
nil
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
1
|
- if attribute_info.attribute.allow_write
|
2
|
-
%input{ :type => 'text', :name => param_name(attribute_info.ancestry), :size => 30, :value => attribute_info.
|
2
|
+
%input{ :type => 'text', :name => param_name(attribute_info.ancestry), :size => 30, :value => attribute_info.value_to_s }
|
3
3
|
- else
|
4
|
-
%span= escape_html(attribute_info.
|
4
|
+
%span= escape_html(attribute_info.value_to_s)
|
data/lib/rumx/server.rb
CHANGED
@@ -103,15 +103,17 @@ module Rumx
|
|
103
103
|
|
104
104
|
def param_name(ancestry)
|
105
105
|
pname = ancestry[0].to_s
|
106
|
-
|
107
|
-
|
106
|
+
if pname.size > 1
|
107
|
+
ancestry[1..-1].each do |name|
|
108
|
+
pname += "[#{name}]"
|
109
|
+
end
|
108
110
|
end
|
109
111
|
return pname
|
110
112
|
end
|
111
113
|
end
|
112
114
|
|
113
115
|
get '/' do
|
114
|
-
haml :index
|
116
|
+
haml :index, :locals => {:path => '', :root => ::Rumx::Bean.root}
|
115
117
|
end
|
116
118
|
|
117
119
|
get '/*/attributes.?:format?' do
|
@@ -158,6 +160,12 @@ module Rumx
|
|
158
160
|
operation.run(bean, params).to_json
|
159
161
|
end
|
160
162
|
|
163
|
+
get '/:root' do
|
164
|
+
root = Bean.root(params[:root])
|
165
|
+
return 404 unless root
|
166
|
+
haml :index, :locals => {:path => '/'+params[:root], :root => root}
|
167
|
+
end
|
168
|
+
|
161
169
|
#######
|
162
170
|
protected
|
163
171
|
#######
|
@@ -238,7 +246,13 @@ module Rumx
|
|
238
246
|
hash = hash.merge(bean_hash)
|
239
247
|
end
|
240
248
|
end
|
241
|
-
|
249
|
+
if index > 0
|
250
|
+
handle_attributes(hash, params[:format])
|
251
|
+
else
|
252
|
+
# If we didn't get called with any queries, assume we were meant to be a splat on the root bean
|
253
|
+
params[:splat] = ['']
|
254
|
+
do_get_or_post_splat_attributes(params, get_set_method)
|
255
|
+
end
|
242
256
|
end
|
243
257
|
end
|
244
258
|
end
|
data/lib/rumx/type.rb
CHANGED
@@ -8,6 +8,26 @@ module Rumx
|
|
8
8
|
type
|
9
9
|
end
|
10
10
|
|
11
|
+
def self.find_by_value(val)
|
12
|
+
if val.kind_of?(Integer)
|
13
|
+
@@llowed_types[:integer]
|
14
|
+
elsif val.kind_of?(Float)
|
15
|
+
@@llowed_types[:float]
|
16
|
+
elsif val.kind_of?(String)
|
17
|
+
@@llowed_types[:string]
|
18
|
+
elsif val.kind_of?(Symbol)
|
19
|
+
@@llowed_types[:symbol]
|
20
|
+
elsif val.kind_of?(Boolean)
|
21
|
+
@@llowed_types[:boolean]
|
22
|
+
elsif val.kind_of?(Array)
|
23
|
+
@@llowed_types[:list]
|
24
|
+
elsif val.kind_of?(Hash)
|
25
|
+
@@llowed_types[:hash]
|
26
|
+
else
|
27
|
+
nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
11
31
|
def initialize(name, attribute_class, string_to_value_proc, value_to_string_proc=lambda{|v| v.to_s})
|
12
32
|
@name = name
|
13
33
|
@attribute_class = attribute_class
|
@@ -23,6 +43,10 @@ module Rumx
|
|
23
43
|
@string_to_value_proc.call(string)
|
24
44
|
end
|
25
45
|
|
46
|
+
def value_to_string(val)
|
47
|
+
@value_to_string_proc.call(val)
|
48
|
+
end
|
49
|
+
|
26
50
|
def to_s
|
27
51
|
@name.to_s
|
28
52
|
end
|
data/lib/rumx.rb
CHANGED
metadata
CHANGED
@@ -1,167 +1,207 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rumx
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.3
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
5
|
+
version: 0.2.2
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
8
|
-
- Brad Pardee
|
7
|
+
authors:
|
8
|
+
- Brad Pardee
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
12
|
+
|
13
|
+
date: 2012-04-09 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: sinatra
|
17
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
requirement: *id001
|
24
|
+
prerelease: false
|
25
|
+
type: :runtime
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: haml
|
28
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
29
|
+
none: false
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "0"
|
34
|
+
requirement: *id002
|
35
|
+
prerelease: false
|
36
|
+
type: :runtime
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: rack
|
39
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
45
|
+
requirement: *id003
|
46
|
+
prerelease: false
|
47
|
+
type: :development
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: rake
|
50
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
51
|
+
none: false
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
56
|
+
requirement: *id004
|
57
|
+
prerelease: false
|
58
|
+
type: :development
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: rdoc
|
61
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
62
|
+
none: false
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: "0"
|
67
|
+
requirement: *id005
|
68
|
+
prerelease: false
|
69
|
+
type: :development
|
47
70
|
description: A Ruby version of JMX
|
48
|
-
email:
|
49
|
-
- bradpardee@gmail.com
|
71
|
+
email:
|
72
|
+
- bradpardee@gmail.com
|
50
73
|
executables: []
|
74
|
+
|
51
75
|
extensions: []
|
76
|
+
|
52
77
|
extra_rdoc_files: []
|
53
|
-
|
54
|
-
|
55
|
-
- examples/bean_hash/
|
56
|
-
- examples/bean_hash/
|
57
|
-
- examples/
|
58
|
-
- examples/bean_list/
|
59
|
-
- examples/bean_list/
|
60
|
-
- examples/
|
61
|
-
- examples/embedded/
|
62
|
-
- examples/embedded/
|
63
|
-
- examples/embedded/
|
64
|
-
- examples/
|
65
|
-
- examples/hash/
|
66
|
-
- examples/hash/
|
67
|
-
- examples/
|
68
|
-
- examples/
|
69
|
-
- examples/
|
70
|
-
- examples/
|
71
|
-
- examples/
|
72
|
-
- examples/
|
73
|
-
- examples/
|
74
|
-
- examples/
|
75
|
-
- examples/simple/
|
76
|
-
- examples/
|
77
|
-
- examples/
|
78
|
-
- examples/
|
79
|
-
- examples/
|
80
|
-
- examples/
|
81
|
-
- examples/
|
82
|
-
-
|
83
|
-
-
|
84
|
-
-
|
85
|
-
- lib/rumx
|
86
|
-
- lib/rumx/
|
87
|
-
- lib/rumx/
|
88
|
-
- lib/rumx/
|
89
|
-
- lib/rumx/
|
90
|
-
- lib/rumx/beans
|
91
|
-
- lib/rumx/
|
92
|
-
- lib/rumx/
|
93
|
-
- lib/rumx/
|
94
|
-
- lib/rumx/
|
95
|
-
- lib/rumx/
|
96
|
-
- lib/rumx/
|
97
|
-
- lib/rumx/
|
98
|
-
- lib/rumx/
|
99
|
-
- lib/rumx/
|
100
|
-
- lib/rumx/
|
101
|
-
- lib/rumx/
|
102
|
-
- lib/rumx/
|
103
|
-
- lib/rumx/
|
104
|
-
- lib/rumx/
|
105
|
-
- lib/rumx/
|
106
|
-
- lib/rumx/
|
107
|
-
- lib/rumx/server/public/
|
108
|
-
- lib/rumx/server/public/
|
109
|
-
- lib/rumx/server/public/
|
110
|
-
- lib/rumx/server/public/
|
111
|
-
- lib/rumx/server/public/
|
112
|
-
- lib/rumx/server/public/
|
113
|
-
- lib/rumx/server/public/
|
114
|
-
- lib/rumx/server/public/themes/
|
115
|
-
- lib/rumx/server/public/themes/
|
116
|
-
- lib/rumx/server/public/themes/
|
117
|
-
- lib/rumx/server/public/themes/
|
118
|
-
- lib/rumx/server/public/themes/
|
119
|
-
- lib/rumx/server/public/themes/
|
120
|
-
- lib/rumx/server/public/themes/
|
121
|
-
- lib/rumx/server/public/themes/
|
122
|
-
- lib/rumx/server/public/themes/
|
123
|
-
- lib/rumx/server/public/themes/
|
124
|
-
- lib/rumx/server/public/themes/default
|
125
|
-
- lib/rumx/server/
|
126
|
-
- lib/rumx/server/
|
127
|
-
- lib/rumx/server/
|
128
|
-
- lib/rumx/server/
|
129
|
-
- lib/rumx/server/
|
130
|
-
- lib/rumx/server/
|
131
|
-
- lib/rumx/server/
|
132
|
-
- lib/rumx/server/
|
133
|
-
- lib/rumx/server/views/
|
134
|
-
- lib/rumx/server/views/
|
135
|
-
- lib/rumx/server/views/
|
136
|
-
- lib/rumx/server.
|
137
|
-
- lib/rumx/
|
138
|
-
- lib/rumx.
|
139
|
-
-
|
140
|
-
-
|
141
|
-
-
|
142
|
-
-
|
78
|
+
|
79
|
+
files:
|
80
|
+
- examples/bean_hash/config.ru
|
81
|
+
- examples/bean_hash/my_bean.rb
|
82
|
+
- examples/bean_hash/README
|
83
|
+
- examples/bean_list/config.ru
|
84
|
+
- examples/bean_list/my_bean.rb
|
85
|
+
- examples/bean_list/README
|
86
|
+
- examples/embedded/config.ru
|
87
|
+
- examples/embedded/my_bean.rb
|
88
|
+
- examples/embedded/my_embedded_bean.rb
|
89
|
+
- examples/embedded/README
|
90
|
+
- examples/hash/config.ru
|
91
|
+
- examples/hash/my_bean.rb
|
92
|
+
- examples/hash/README
|
93
|
+
- examples/jmx/config.ru
|
94
|
+
- examples/jmx/README
|
95
|
+
- examples/list/config.ru
|
96
|
+
- examples/list/my_bean.rb
|
97
|
+
- examples/list/README
|
98
|
+
- examples/monitor_script/README
|
99
|
+
- examples/monitor_script/rumx_attributes
|
100
|
+
- examples/simple/config.ru
|
101
|
+
- examples/simple/my_bean.rb
|
102
|
+
- examples/simple/my_other_bean.rb
|
103
|
+
- examples/simple/README
|
104
|
+
- examples/timer/config.ru
|
105
|
+
- examples/timer/my_bean.rb
|
106
|
+
- examples/timer/README
|
107
|
+
- examples/timer_hash/config.ru
|
108
|
+
- examples/timer_hash/my_bean.rb
|
109
|
+
- examples/timer_hash/README
|
110
|
+
- lib/rumx.rb
|
111
|
+
- lib/rumx/argument.rb
|
112
|
+
- lib/rumx/attribute.rb
|
113
|
+
- lib/rumx/attribute_info.rb
|
114
|
+
- lib/rumx/bean.rb
|
115
|
+
- lib/rumx/beans.rb
|
116
|
+
- lib/rumx/hash_attribute.rb
|
117
|
+
- lib/rumx/hash_bean.rb
|
118
|
+
- lib/rumx/jmx_bean.rb
|
119
|
+
- lib/rumx/list_attribute.rb
|
120
|
+
- lib/rumx/list_bean.rb
|
121
|
+
- lib/rumx/operation.rb
|
122
|
+
- lib/rumx/server.rb
|
123
|
+
- lib/rumx/type.rb
|
124
|
+
- lib/rumx/beans/error.rb
|
125
|
+
- lib/rumx/beans/folder.rb
|
126
|
+
- lib/rumx/beans/hash.rb
|
127
|
+
- lib/rumx/beans/message.rb
|
128
|
+
- lib/rumx/beans/timer.rb
|
129
|
+
- lib/rumx/beans/timer_and_error.rb
|
130
|
+
- lib/rumx/beans/timer_and_error_hash.rb
|
131
|
+
- lib/rumx/beans/timer_hash.rb
|
132
|
+
- lib/rumx/server/public/attribute_test.html
|
133
|
+
- lib/rumx/server/public/jquery-ui-1.8.16.custom.min.js
|
134
|
+
- lib/rumx/server/public/jquery.jstree.js
|
135
|
+
- lib/rumx/server/public/jquery.layout.min-1.2.0.js
|
136
|
+
- lib/rumx/server/public/_lib/jquery.cookie.js
|
137
|
+
- lib/rumx/server/public/_lib/jquery.hotkeys.js
|
138
|
+
- lib/rumx/server/public/_lib/jquery.js
|
139
|
+
- lib/rumx/server/public/themes/apple/bg.jpg
|
140
|
+
- lib/rumx/server/public/themes/apple/d.png
|
141
|
+
- lib/rumx/server/public/themes/apple/dot_for_ie.gif
|
142
|
+
- lib/rumx/server/public/themes/apple/style.css
|
143
|
+
- lib/rumx/server/public/themes/apple/throbber.gif
|
144
|
+
- lib/rumx/server/public/themes/classic/d.gif
|
145
|
+
- lib/rumx/server/public/themes/classic/d.png
|
146
|
+
- lib/rumx/server/public/themes/classic/dot_for_ie.gif
|
147
|
+
- lib/rumx/server/public/themes/classic/style.css
|
148
|
+
- lib/rumx/server/public/themes/classic/throbber.gif
|
149
|
+
- lib/rumx/server/public/themes/default/d.gif
|
150
|
+
- lib/rumx/server/public/themes/default/d.png
|
151
|
+
- lib/rumx/server/public/themes/default/style.css
|
152
|
+
- lib/rumx/server/public/themes/default/throbber.gif
|
153
|
+
- lib/rumx/server/public/themes/default-rtl/d.gif
|
154
|
+
- lib/rumx/server/public/themes/default-rtl/d.png
|
155
|
+
- lib/rumx/server/public/themes/default-rtl/dots.gif
|
156
|
+
- lib/rumx/server/public/themes/default-rtl/style.css
|
157
|
+
- lib/rumx/server/public/themes/default-rtl/throbber.gif
|
158
|
+
- lib/rumx/server/views/attribute_value_tag.haml
|
159
|
+
- lib/rumx/server/views/content_attributes.haml
|
160
|
+
- lib/rumx/server/views/content_operation.haml
|
161
|
+
- lib/rumx/server/views/content_operations.haml
|
162
|
+
- lib/rumx/server/views/index.haml
|
163
|
+
- lib/rumx/server/views/layout.haml
|
164
|
+
- lib/rumx/server/views/link_to_content.haml
|
165
|
+
- lib/rumx/server/views/tree.haml
|
166
|
+
- lib/rumx/server/views/tree_bean.haml
|
167
|
+
- lib/rumx/server/views/tree_bean_attributes.haml
|
168
|
+
- lib/rumx/server/views/tree_bean_operations.haml
|
169
|
+
- LICENSE.txt
|
170
|
+
- Rakefile
|
171
|
+
- History.md
|
172
|
+
- README.md
|
143
173
|
homepage: http://github.com/ClarityServices/rumx
|
144
174
|
licenses: []
|
175
|
+
|
145
176
|
post_install_message:
|
146
177
|
rdoc_options: []
|
147
|
-
|
148
|
-
|
149
|
-
|
178
|
+
|
179
|
+
require_paths:
|
180
|
+
- lib
|
181
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
150
182
|
none: false
|
151
|
-
requirements:
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
183
|
+
requirements:
|
184
|
+
- - ">="
|
185
|
+
- !ruby/object:Gem::Version
|
186
|
+
hash: 2
|
187
|
+
segments:
|
188
|
+
- 0
|
189
|
+
version: "0"
|
190
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
191
|
none: false
|
157
|
-
requirements:
|
158
|
-
|
159
|
-
|
160
|
-
|
192
|
+
requirements:
|
193
|
+
- - ">="
|
194
|
+
- !ruby/object:Gem::Version
|
195
|
+
hash: 2
|
196
|
+
segments:
|
197
|
+
- 0
|
198
|
+
version: "0"
|
161
199
|
requirements: []
|
200
|
+
|
162
201
|
rubyforge_project:
|
163
|
-
rubygems_version: 1.8.
|
202
|
+
rubygems_version: 1.8.9
|
164
203
|
signing_key:
|
165
204
|
specification_version: 3
|
166
205
|
summary: Ruby Management Extensions
|
167
206
|
test_files: []
|
207
|
+
|