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 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
- Railtie it?
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
- require 'rake/clean'
2
- require 'rake/testtask'
3
- require 'date'
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
- desc "Build gem"
6
- task :gem do |t|
7
- system 'gem build rumx.gemspec'
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
- task :test do
23
+ Bundler::GemHelper.install_tasks
11
24
 
12
- Rake::TestTask.new(:functional) do |t|
13
- t.test_files = FileList['test/*_test.rb']
14
- t.verbose = true
15
- end
25
+ require 'rake/testtask'
16
26
 
17
- Rake::Task['functional'].invoke
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
- desc "Generate RDOC documentation"
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
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rumx'
6
- require 'my_bean'
6
+ require './my_bean'
7
7
 
8
8
  Rumx::Bean.root.bean_add_child(:MyBean, MyBean.new)
9
9
  run Rumx::Server
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rumx'
6
- require 'my_bean'
6
+ require './my_bean'
7
7
 
8
8
  Rumx::Bean.root.bean_add_child(:MyBean, MyBean.new)
9
9
  run Rumx::Server
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rumx'
6
- require 'my_bean'
6
+ require './my_bean'
7
7
 
8
8
  Rumx::Bean.root.bean_add_child(:MyBean, MyBean.new)
9
9
  run Rumx::Server
@@ -1,5 +1,5 @@
1
1
  require 'rumx'
2
- require 'my_embedded_bean'
2
+ require './my_embedded_bean'
3
3
 
4
4
  class MyBean
5
5
  include Rumx::Bean
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rumx'
6
- require 'my_bean'
6
+ require './my_bean'
7
7
 
8
8
  Rumx::Bean.root.bean_add_child(:MyBean, MyBean.new)
9
9
  run Rumx::Server
@@ -0,0 +1,2 @@
1
+ 1) Execute 'rackup -p 4567'
2
+ 2) Browse to http://localhost:4567, expand the tree and view/update the attributes and operations
@@ -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
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rumx'
6
- require 'my_bean'
6
+ require './my_bean'
7
7
 
8
8
  Rumx::Bean.root.bean_add_child(:MyBean, MyBean.new)
9
9
  run Rumx::Server
@@ -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
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../../lib'
3
3
 
4
4
  require 'rubygems'
5
5
  require 'rumx'
6
- require 'my_bean'
6
+ require './my_bean'
7
7
 
8
8
  Rumx::Bean.root.bean_add_child(:MyBean, MyBean.new)
9
9
  run Rumx::Server
@@ -11,7 +11,7 @@ class MyBean
11
11
  @sleep1 = 1
12
12
  @sleep2 = 2
13
13
  @sleep3 = 3
14
- @timers = Rumx::Beans::TimerHash.new
14
+ @timers = Rumx::Beans::TimerAndErrorHash.new
15
15
  bean_add_child(:timers, @timers)
16
16
  100.times do
17
17
  Thread.new do
@@ -34,8 +34,6 @@ module Rumx
34
34
  @options[key]
35
35
  end
36
36
 
37
- protected
38
-
39
37
  def param_value(params, &block)
40
38
  if params.has_key?(@name)
41
39
  yield params[@name]
@@ -8,5 +8,9 @@ module Rumx
8
8
  @ancestry = ancestry
9
9
  @value = value
10
10
  end
11
+
12
+ def value_to_s
13
+ @attribute.type.value_to_string(@value)
14
+ end
11
15
  end
12
16
  end
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.root
157
- @root ||= Beans::Folder.new
158
+ def self.add_root(name, bean)
159
+ @@root_hash[name.to_sym] = bean
158
160
  end
159
161
 
160
- def self.find(name_array)
161
- root.bean_find(name_array)
162
+ def self.remove_root(name)
163
+ @@root_hash.delete(name.to_sym)
162
164
  end
163
165
 
164
- # Return [bean, attribute, param_name, value] list or nil if not found
165
- def self.find_attribute(name_array)
166
- attribute_name = name_array.last
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
- bean = Bean.find(name_array)
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
- return nil
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
@@ -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(e.message)
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, :integer, 'Number of times the measured block has raised an exception'
6
- bean_attr_reader :errors, :list, 'List of the last occurring errors', :list_type => :bean
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
@@ -0,0 +1,10 @@
1
+ module Rumx
2
+ module Beans
3
+ # Extend Beans::Hash specifically for Beans::TimerAndError
4
+ class TimerAndErrorHash < Hash
5
+ def initialize
6
+ super { TimerAndError.new }
7
+ end
8
+ end
9
+ end
10
+ end
@@ -1,5 +1,6 @@
1
1
  module Rumx
2
2
  module Beans
3
+ # Extend Beans::Hash specifically for Beans::Timer
3
4
  class TimerHash < Hash
4
5
  def initialize
5
6
  super { Timer.new }
data/lib/rumx/beans.rb CHANGED
@@ -5,3 +5,4 @@ require 'rumx/beans/error'
5
5
  require 'rumx/beans/timer_and_error'
6
6
  require 'rumx/beans/hash'
7
7
  require 'rumx/beans/timer_hash'
8
+ require 'rumx/beans/timer_and_error_hash'
@@ -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.value }
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.value)
4
+ %span= escape_html(attribute_info.value_to_s)
@@ -13,6 +13,6 @@
13
13
  %title Rumx Console
14
14
  %body
15
15
  .ui-layout-west
16
- = partial :tree
16
+ = partial :tree, :locals => {:path => path, :root => root}
17
17
  .ui-layout-center#content
18
18
  = yield
@@ -1,6 +1,6 @@
1
1
  #tree
2
2
  %ul
3
- = render_tree_bean_children('', ::Rumx::Bean.root)
3
+ = render_tree_bean_children(path, root)
4
4
  :javascript
5
5
  $(function () {
6
6
  jQuery("#tree")
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
- ancestry[1..-1].each do |name|
107
- pname += "[#{name}]"
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
- handle_attributes(hash, params[:format])
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
@@ -10,3 +10,6 @@ require 'rumx/hash_bean'
10
10
  require 'rumx/type'
11
11
  require 'rumx/server'
12
12
  require 'rumx/beans'
13
+ if RUBY_PLATFORM =~ /java/
14
+ require 'rumx/jmx_bean'
15
+ end
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
- date: 2012-01-04 00:00:00.000000000Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: sinatra
16
- requirement: &70304199954720 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ! '>='
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :runtime
23
- prerelease: false
24
- version_requirements: *70304199954720
25
- - !ruby/object:Gem::Dependency
26
- name: haml
27
- requirement: &70304199954280 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
30
- - - ! '>='
31
- - !ruby/object:Gem::Version
32
- version: '0'
33
- type: :runtime
34
- prerelease: false
35
- version_requirements: *70304199954280
36
- - !ruby/object:Gem::Dependency
37
- name: rack
38
- requirement: &70304199953860 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
41
- - - ! '>='
42
- - !ruby/object:Gem::Version
43
- version: '0'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: *70304199953860
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
- files:
54
- - examples/bean_hash/config.ru
55
- - examples/bean_hash/my_bean.rb
56
- - examples/bean_hash/README
57
- - examples/bean_list/config.ru
58
- - examples/bean_list/my_bean.rb
59
- - examples/bean_list/README
60
- - examples/embedded/config.ru
61
- - examples/embedded/my_bean.rb
62
- - examples/embedded/my_embedded_bean.rb
63
- - examples/embedded/README
64
- - examples/hash/config.ru
65
- - examples/hash/my_bean.rb
66
- - examples/hash/README
67
- - examples/list/config.ru
68
- - examples/list/my_bean.rb
69
- - examples/list/README
70
- - examples/monitor_script/README
71
- - examples/monitor_script/rumx_attributes
72
- - examples/simple/config.ru
73
- - examples/simple/my_bean.rb
74
- - examples/simple/my_other_bean.rb
75
- - examples/simple/README
76
- - examples/timer/config.ru
77
- - examples/timer/my_bean.rb
78
- - examples/timer/README
79
- - examples/timer_hash/config.ru
80
- - examples/timer_hash/my_bean.rb
81
- - examples/timer_hash/README
82
- - lib/rumx/argument.rb
83
- - lib/rumx/attribute.rb
84
- - lib/rumx/attribute_info.rb
85
- - lib/rumx/bean.rb
86
- - lib/rumx/beans/error.rb
87
- - lib/rumx/beans/folder.rb
88
- - lib/rumx/beans/hash.rb
89
- - lib/rumx/beans/message.rb
90
- - lib/rumx/beans/timer.rb
91
- - lib/rumx/beans/timer_and_error.rb
92
- - lib/rumx/beans/timer_hash.rb
93
- - lib/rumx/beans.rb
94
- - lib/rumx/hash_attribute.rb
95
- - lib/rumx/hash_bean.rb
96
- - lib/rumx/list_attribute.rb
97
- - lib/rumx/list_bean.rb
98
- - lib/rumx/operation.rb
99
- - lib/rumx/server/public/_lib/jquery.cookie.js
100
- - lib/rumx/server/public/_lib/jquery.hotkeys.js
101
- - lib/rumx/server/public/_lib/jquery.js
102
- - lib/rumx/server/public/attribute_test.html
103
- - lib/rumx/server/public/jquery-ui-1.8.16.custom.min.js
104
- - lib/rumx/server/public/jquery.jstree.js
105
- - lib/rumx/server/public/jquery.layout.min-1.2.0.js
106
- - lib/rumx/server/public/themes/apple/bg.jpg
107
- - lib/rumx/server/public/themes/apple/d.png
108
- - lib/rumx/server/public/themes/apple/dot_for_ie.gif
109
- - lib/rumx/server/public/themes/apple/style.css
110
- - lib/rumx/server/public/themes/apple/throbber.gif
111
- - lib/rumx/server/public/themes/classic/d.gif
112
- - lib/rumx/server/public/themes/classic/d.png
113
- - lib/rumx/server/public/themes/classic/dot_for_ie.gif
114
- - lib/rumx/server/public/themes/classic/style.css
115
- - lib/rumx/server/public/themes/classic/throbber.gif
116
- - lib/rumx/server/public/themes/default/d.gif
117
- - lib/rumx/server/public/themes/default/d.png
118
- - lib/rumx/server/public/themes/default/style.css
119
- - lib/rumx/server/public/themes/default/throbber.gif
120
- - lib/rumx/server/public/themes/default-rtl/d.gif
121
- - lib/rumx/server/public/themes/default-rtl/d.png
122
- - lib/rumx/server/public/themes/default-rtl/dots.gif
123
- - lib/rumx/server/public/themes/default-rtl/style.css
124
- - lib/rumx/server/public/themes/default-rtl/throbber.gif
125
- - lib/rumx/server/views/attribute_value_tag.haml
126
- - lib/rumx/server/views/content_attributes.haml
127
- - lib/rumx/server/views/content_operation.haml
128
- - lib/rumx/server/views/content_operations.haml
129
- - lib/rumx/server/views/index.haml
130
- - lib/rumx/server/views/layout.haml
131
- - lib/rumx/server/views/link_to_content.haml
132
- - lib/rumx/server/views/tree.haml
133
- - lib/rumx/server/views/tree_bean.haml
134
- - lib/rumx/server/views/tree_bean_attributes.haml
135
- - lib/rumx/server/views/tree_bean_operations.haml
136
- - lib/rumx/server.rb
137
- - lib/rumx/type.rb
138
- - lib/rumx.rb
139
- - LICENSE.txt
140
- - Rakefile
141
- - History.md
142
- - README.md
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
- require_paths:
148
- - lib
149
- required_ruby_version: !ruby/object:Gem::Requirement
178
+
179
+ require_paths:
180
+ - lib
181
+ required_ruby_version: !ruby/object:Gem::Requirement
150
182
  none: false
151
- requirements:
152
- - - ! '>='
153
- - !ruby/object:Gem::Version
154
- version: '0'
155
- required_rubygems_version: !ruby/object:Gem::Requirement
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
- - !ruby/object:Gem::Version
160
- version: '0'
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.10
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
+