rumx 0.1.3 → 0.2.2
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/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
|
+
|