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 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
+