eventbus 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
Files changed (110) hide show
  1. data/admin/Gemfile +50 -0
  2. data/admin/Gemfile.lock +141 -0
  3. data/admin/Rakefile +7 -0
  4. data/admin/app/assets/images/rails.png +0 -0
  5. data/admin/app/assets/javascripts/application.js +15 -0
  6. data/admin/app/assets/javascripts/applications.js.coffee +3 -0
  7. data/admin/app/assets/javascripts/message_routes.js.coffee +3 -0
  8. data/admin/app/assets/javascripts/message_types.js.coffee +3 -0
  9. data/admin/app/assets/javascripts/messages.js.coffee +3 -0
  10. data/admin/app/assets/stylesheets/application.css +13 -0
  11. data/admin/app/assets/stylesheets/applications.css.scss +3 -0
  12. data/admin/app/assets/stylesheets/global.css.scss +72 -0
  13. data/admin/app/assets/stylesheets/message_routes.css.scss +3 -0
  14. data/admin/app/assets/stylesheets/message_types.css.scss +3 -0
  15. data/admin/app/assets/stylesheets/messages.css.scss +30 -0
  16. data/admin/app/assets/stylesheets/scaffolds.css.scss +56 -0
  17. data/admin/app/controllers/application_controller.rb +3 -0
  18. data/admin/app/controllers/applications_controller.rb +83 -0
  19. data/admin/app/controllers/message_routes_controller.rb +85 -0
  20. data/admin/app/controllers/message_types_controller.rb +83 -0
  21. data/admin/app/controllers/messages_controller.rb +75 -0
  22. data/admin/app/helpers/application_helper.rb +2 -0
  23. data/admin/app/helpers/applications_helper.rb +2 -0
  24. data/admin/app/helpers/message_routes_helper.rb +2 -0
  25. data/admin/app/helpers/message_types_helper.rb +2 -0
  26. data/admin/app/helpers/messages_helper.rb +2 -0
  27. data/admin/app/models/application.rb +7 -0
  28. data/admin/app/models/message.rb +4 -0
  29. data/admin/app/models/message_route.rb +5 -0
  30. data/admin/app/models/message_type.rb +7 -0
  31. data/admin/app/views/applications/_form.html.haml +27 -0
  32. data/admin/app/views/applications/edit.html.haml +5 -0
  33. data/admin/app/views/applications/index.html.haml +28 -0
  34. data/admin/app/views/applications/new.html.haml +3 -0
  35. data/admin/app/views/applications/show.html.haml +16 -0
  36. data/admin/app/views/layouts/application.html.haml +24 -0
  37. data/admin/app/views/message_routes/_form.html.haml +31 -0
  38. data/admin/app/views/message_routes/edit.html.haml +5 -0
  39. data/admin/app/views/message_routes/index.html.haml +28 -0
  40. data/admin/app/views/message_routes/new.html.haml +3 -0
  41. data/admin/app/views/message_routes/show.html.haml +16 -0
  42. data/admin/app/views/message_types/_form.html.haml +29 -0
  43. data/admin/app/views/message_types/edit.html.haml +5 -0
  44. data/admin/app/views/message_types/index.html.haml +28 -0
  45. data/admin/app/views/message_types/new.html.haml +5 -0
  46. data/admin/app/views/message_types/show.html.haml +17 -0
  47. data/admin/app/views/messages/index.html.haml +48 -0
  48. data/admin/app/views/messages/show.html.haml +45 -0
  49. data/admin/config/application.rb +64 -0
  50. data/admin/config/boot.rb +6 -0
  51. data/admin/config/database.yml +29 -0
  52. data/admin/config/environment.rb +5 -0
  53. data/admin/config/environments/development.rb +37 -0
  54. data/admin/config/environments/production.rb +72 -0
  55. data/admin/config/environments/test.rb +37 -0
  56. data/admin/config/initializers/backtrace_silencers.rb +7 -0
  57. data/admin/config/initializers/inflections.rb +15 -0
  58. data/admin/config/initializers/mime_types.rb +5 -0
  59. data/admin/config/initializers/secret_token.rb +7 -0
  60. data/admin/config/initializers/session_store.rb +8 -0
  61. data/admin/config/initializers/wrap_parameters.rb +14 -0
  62. data/admin/config/locales/en.yml +5 -0
  63. data/admin/config/routes.rb +69 -0
  64. data/admin/config.ru +4 -0
  65. data/admin/db/development.sqlite3-journal +0 -0
  66. data/admin/db/migrate/20120218124300_create_messages.rb +16 -0
  67. data/admin/db/migrate/20120219021535_create_applications.rb +11 -0
  68. data/admin/db/migrate/20120219021806_create_message_types.rb +13 -0
  69. data/admin/db/migrate/20120219021940_create_message_routes.rb +13 -0
  70. data/admin/db/migrate/20120411001040_add_app_id_key_msg_type_id_to_messages.rb +7 -0
  71. data/admin/db/migrate/20120411001823_rename_message_type_to_message_type_name_in_messages.rb +5 -0
  72. data/admin/db/migrate/20120413024953_add_message_guid_to_messages.rb +5 -0
  73. data/admin/db/migrate/20120523112257_add_match_all_errors_to_routes.rb +5 -0
  74. data/admin/db/schema.rb +68 -0
  75. data/admin/db/seeds.rb +7 -0
  76. data/admin/doc/README_FOR_APP +2 -0
  77. data/admin/public/404.html +26 -0
  78. data/admin/public/422.html +26 -0
  79. data/admin/public/500.html +25 -0
  80. data/admin/public/favicon.ico +0 -0
  81. data/admin/public/robots.txt +5 -0
  82. data/admin/script/rails +6 -0
  83. data/admin/script/railsrunner +3 -0
  84. data/admin/test/fixtures/applications.yml +14 -0
  85. data/admin/test/fixtures/message_routes.yml +11 -0
  86. data/admin/test/fixtures/message_types.yml +17 -0
  87. data/admin/test/fixtures/messages.yml +45 -0
  88. data/admin/test/functional/applications_controller_test.rb +49 -0
  89. data/admin/test/functional/message_routes_controller_test.rb +49 -0
  90. data/admin/test/functional/message_types_controller_test.rb +49 -0
  91. data/admin/test/functional/messages_controller_test.rb +49 -0
  92. data/admin/test/performance/browsing_test.rb +12 -0
  93. data/admin/test/test_helper.rb +13 -0
  94. data/admin/test/unit/application_test.rb +7 -0
  95. data/admin/test/unit/helpers/applications_helper_test.rb +4 -0
  96. data/admin/test/unit/helpers/message_routes_helper_test.rb +4 -0
  97. data/admin/test/unit/helpers/message_types_helper_test.rb +4 -0
  98. data/admin/test/unit/helpers/messages_helper_test.rb +4 -0
  99. data/admin/test/unit/message_route_test.rb +7 -0
  100. data/admin/test/unit/message_test.rb +7 -0
  101. data/admin/test/unit/message_type_test.rb +7 -0
  102. data/bin/eventbus_dispatcher.rb +118 -0
  103. data/bin/eventbus_emailer.rb +41 -0
  104. data/lib/eventbus/connectors/amqp.rb +70 -0
  105. data/lib/eventbus/connectors/bunny.rb +71 -0
  106. data/lib/eventbus/connectors/stomp.rb +77 -0
  107. data/lib/eventbus/message.rb +180 -0
  108. data/lib/eventbus/queue.rb +28 -0
  109. data/lib/eventbus/service.rb +116 -0
  110. metadata +188 -0
@@ -0,0 +1,180 @@
1
+ require 'rubygems'
2
+ require 'bunny'
3
+ require 'yaml'
4
+ require 'uuid'
5
+ require 'eventbus/queue'
6
+
7
+ module EventBus
8
+
9
+ class Message
10
+
11
+ attr_reader :data
12
+
13
+ def initialize(application_id)
14
+
15
+ raise "No application ID specified!" if application_id.nil?
16
+
17
+ @data = {
18
+ :HEADER => {
19
+ :message_id => UUID.new.generate.to_s,
20
+ :message_type => self.default_section_name,
21
+ :status => "BEGIN",
22
+ :application_id => application_id
23
+ },
24
+ :ERROR_INFO => {
25
+ :is_error => false,
26
+ :backtrace => nil,
27
+ :message => nil
28
+ },
29
+ :PAYLOAD => {}
30
+ }
31
+
32
+ @connection_driver = ENV["EVENTBUS_CONNECTOR"] || "Bunny"
33
+
34
+ driver_module = "#{@connection_driver}ConnectionDriver"
35
+
36
+ require_relative "connectors/#{@connection_driver.downcase}"
37
+
38
+ # Eh, pretty much just swiped from ActiveSupport "constantize"..
39
+ conn_module = Object.const_defined?(driver_module) ? Object.const_get(driver_module) : Object.const_missing(driver_module)
40
+
41
+ extend conn_module
42
+
43
+ connection_driver_initialize
44
+
45
+ end
46
+
47
+
48
+ def set(key, val, opts = {})
49
+
50
+ raise "You must specify a key name!" if key.nil?
51
+ section = opts.delete(:section) || self.default_section_name
52
+
53
+ @data[:PAYLOAD][section] = {} if @data[:PAYLOAD][section].nil?
54
+ @data[:PAYLOAD][section][key] = val
55
+ end
56
+
57
+ def get(key, opts = {})
58
+ raise "You must specify a key name!" if key.nil?
59
+ section = opts.delete(:section) || self.default_section_name
60
+
61
+ return @data[:PAYLOAD][section].nil? ? nil : @data[:PAYLOAD][section][key]
62
+ end
63
+
64
+ # opts:
65
+ # :queue_name -- the base queue name to receive the message. Defaults to "dispatcher"
66
+ # :global_queue -- Do not prepend the application ID and do not append the environment
67
+ # :system_queue -- Do not prepend the application ID to the queue_name
68
+ #
69
+ # Normally a queue name is calculated to be: applicationid.queue_name.environment
70
+ # so that eventbus can handle multiple applications on the same eventbus instance, and
71
+ # multiple environment-scoped eventbuses on the same broker. By applying :global_queue
72
+ # or :system_queue, you are breaking that scoping to some degree. Maybe that's what you want,
73
+ # but be careful or you might get cross-talk between applications or environments!
74
+ def send(opts = {})
75
+
76
+ queue_name = opts.delete(:queue_name)
77
+
78
+ if queue_name.nil?
79
+ queue_name = "dispatcher"
80
+ opts[:system_queue] = true
81
+ end
82
+
83
+ opts[:queue_name] = Queue.calc_name(queue_name, application_id, ENV['PROD_LEVEL'], opts)
84
+
85
+ puts "Sending message to: #{opts[:queue_name]}"
86
+
87
+ set_special(:HEADER, :sender, $0)
88
+ send_raw self.dump, opts
89
+ end
90
+
91
+ def set_error(exception)
92
+ @data[:ERROR_INFO][:backtrace] = exception.backtrace
93
+ @data[:ERROR_INFO][:message] = exception.to_s
94
+ self.is_error = true
95
+ self.status = exception.class.name
96
+ end
97
+
98
+ def dump
99
+ YAML::dump(@data)
100
+ end
101
+
102
+ def load(yaml)
103
+ @data = YAML::load(yaml)
104
+ end
105
+
106
+ def application_id
107
+ return get_special(:HEADER, :application_id)
108
+ end
109
+
110
+ def message_id
111
+ return get_special(:HEADER, :message_id)
112
+ end
113
+
114
+ def message_type
115
+ return get_special(:HEADER, :message_type)
116
+ end
117
+
118
+ def message_type=(val)
119
+ set_special(:HEADER, :message_type, val)
120
+ end
121
+
122
+ def status
123
+ return get_special(:HEADER, :status)
124
+ end
125
+
126
+ def status=(val)
127
+ set_special(:HEADER, :status, val)
128
+ end
129
+
130
+ def error_message
131
+ get_special(:ERROR_INFO, :message)
132
+ end
133
+
134
+ def error_message=(val)
135
+ set_special(:ERROR_INFO, :message, val)
136
+ end
137
+
138
+ def is_error
139
+ get_special(:ERROR_INFO, :is_error)
140
+ end
141
+
142
+ def is_error=(val)
143
+ set_special(:ERROR_INFO, :is_error, val)
144
+ end
145
+
146
+ def backtrace
147
+ return get_special(:ERROR_INFO, :backtrace)
148
+ end
149
+
150
+ def backtrace=(val)
151
+ set_special(:ERROR_INFO, :backtrace, val)
152
+ end
153
+
154
+ def clear_error_info
155
+ self.is_error = false
156
+ self.backtrace = []
157
+ self.error_message = nil
158
+ end
159
+
160
+ def default_section_name
161
+ return self.class.name.split(/::/).last
162
+ end
163
+
164
+ private
165
+
166
+
167
+
168
+ def set_special(block, key, val)
169
+ @data[block][key] = val
170
+ end
171
+
172
+ def get_special(block, key)
173
+ return @data[block][key]
174
+ end
175
+
176
+ end
177
+
178
+ end # module EventBus
179
+
180
+
@@ -0,0 +1,28 @@
1
+ module EventBus
2
+
3
+ class Queue
4
+
5
+ def Queue.calc_name(base_name, application_id = "core", prod_level = ENV['PROD_LEVEL'], opts = {})
6
+
7
+ global_queue = opts.delete(:global_queue) || false
8
+ system_queue = opts.delete(:system_queue) || false
9
+
10
+ raise "application_id not set!" if application_id.nil?
11
+ raise "prod_level not set!" if prod_level.nil?
12
+
13
+ application_id = application_id.downcase
14
+ prod_level = prod_level.downcase
15
+
16
+ queue_name = base_name
17
+ unless global_queue == true
18
+ queue_name = "#{queue_name}.#{prod_level}"
19
+ queue_name = "#{application_id}.#{queue_name}" unless system_queue
20
+ end
21
+
22
+ puts "Calculated queue name: #{queue_name}"
23
+ return queue_name
24
+ end
25
+
26
+ end
27
+
28
+ end
@@ -0,0 +1,116 @@
1
+ require 'bunny'
2
+ require 'logger'
3
+ require 'eventbus/queue'
4
+
5
+ module EventBus
6
+ class Service
7
+
8
+ attr_accessor :listen_queue
9
+ attr_accessor :system_process
10
+ attr_accessor :global_process
11
+ attr_accessor :logger
12
+
13
+ # Methods expected to be overridden in subclasses
14
+ def handle_exception(message, exception)
15
+ # Just a hook that can be overridden in the subclass. Framework base behavior is in handle_exception_base.
16
+ # It does not need to be overridden, but can provide some custom behaviors.
17
+ end
18
+
19
+ # process_message is the main business-logic entry point for the subclass. Subclasses _MUST_ override this.
20
+ def process_message(message)
21
+ raise "You need to override the 'process_message' method in your subclass!"
22
+ end
23
+
24
+
25
+ def initialize(application_id = nil)
26
+ @listen_queue = self.class.name
27
+ @application_id = application_id || raise("No application ID specified!")
28
+ @logger = Logger.new(STDOUT)
29
+ @system_process = false
30
+ @global_process = false
31
+
32
+ @connection_driver = ENV["EVENTBUS_CONNECTOR"] || "Stomp"
33
+
34
+ driver_module = "#{@connection_driver}ConnectionDriver"
35
+
36
+ require_relative "connectors/#{@connection_driver.downcase}"
37
+
38
+ # Pretty much just swiped from ActiveSupport "constantize"..
39
+ conn_module = Object.const_defined?(driver_module) ? Object.const_get(driver_module) : Object.const_missing(driver_module)
40
+
41
+ extend conn_module
42
+
43
+ connection_driver_initialize
44
+
45
+ end
46
+
47
+
48
+ def start ( opts = {} )
49
+
50
+ max_workers = opts.delete(:max_workers) || 5
51
+
52
+ opts[:system_queue] = @system_process
53
+ opts[:global_process] = @global_process
54
+
55
+ queue_name = Queue.calc_name(listen_queue, @application_id, ENV['PROD_LEVEL'], opts)
56
+
57
+ watch_queue(queue_name) do |message|
58
+
59
+ # The +2 stuff is because the main thread counts in the list, even though it's not a "worker" thread.
60
+ # What makes it worse is that, depending on the broker connector, watch_queue may also start a thread.
61
+ # With this implementation, that extra thread (e.g. with the stomp connector) would count in this.
62
+ # Bottom line is allow a little wiggle room with the :max_workers. Don't tighten down the threads too much
63
+ # for now.
64
+ while (Thread.list.length >= max_workers + 2) do
65
+ sleep 0.25
66
+ end
67
+
68
+ Thread.new do
69
+ process_message_wrapper message
70
+ end
71
+
72
+ end
73
+
74
+ # Just sleep in the main thread. Nothing going on here anymore.
75
+ loop do
76
+ sleep 6000
77
+ end
78
+
79
+ end
80
+
81
+ private
82
+
83
+ def process_message_wrapper(message)
84
+
85
+ begin
86
+ puts "Beginning processing of message in new thread:"
87
+ puts message
88
+
89
+ process_message message
90
+ rescue
91
+ handle_exception_base message, $!
92
+ end
93
+
94
+ end
95
+
96
+ def handle_exception_base(message, exception)
97
+ puts "Caught exception. Exception Text: #{exception}"
98
+ puts "Backtrace:"
99
+ exception.backtrace.map { | frame | puts "- #{frame}"}
100
+
101
+ msg = EventBus::Message.new("CORE")
102
+ msg.load(message)
103
+ msg.set_error exception
104
+
105
+ self.handle_exception(msg, exception)
106
+
107
+ msg.send
108
+ end
109
+
110
+ def puts(message)
111
+ @logger.info message
112
+ end
113
+
114
+ end
115
+
116
+ end # module EventBus
metadata ADDED
@@ -0,0 +1,188 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: eventbus
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.20
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Devin Cognito
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-05-27 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: bunny
16
+ requirement: &6119720 !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: *6119720
25
+ - !ruby/object:Gem::Dependency
26
+ name: uuid
27
+ requirement: &6119160 !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: *6119160
36
+ - !ruby/object:Gem::Dependency
37
+ name: rails
38
+ requirement: &6118600 !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: *6118600
47
+ description: Distributed application framework for developing event-driven automations.
48
+ email: dev.incognito@gmail.com
49
+ executables:
50
+ - eventbus_dispatcher.rb
51
+ - eventbus_emailer.rb
52
+ extensions: []
53
+ extra_rdoc_files: []
54
+ files:
55
+ - bin/eventbus_dispatcher.rb
56
+ - bin/eventbus_emailer.rb
57
+ - lib/eventbus/message.rb
58
+ - lib/eventbus/service.rb
59
+ - lib/eventbus/queue.rb
60
+ - lib/eventbus/connectors/stomp.rb
61
+ - lib/eventbus/connectors/bunny.rb
62
+ - lib/eventbus/connectors/amqp.rb
63
+ - admin/app/models/message.rb
64
+ - admin/app/models/application.rb
65
+ - admin/app/models/message_route.rb
66
+ - admin/app/models/message_type.rb
67
+ - admin/app/views/messages/index.html.haml
68
+ - admin/app/views/messages/show.html.haml
69
+ - admin/app/views/layouts/application.html.haml
70
+ - admin/app/views/message_types/index.html.haml
71
+ - admin/app/views/message_types/edit.html.haml
72
+ - admin/app/views/message_types/show.html.haml
73
+ - admin/app/views/message_types/new.html.haml
74
+ - admin/app/views/message_types/_form.html.haml
75
+ - admin/app/views/message_routes/index.html.haml
76
+ - admin/app/views/message_routes/edit.html.haml
77
+ - admin/app/views/message_routes/show.html.haml
78
+ - admin/app/views/message_routes/new.html.haml
79
+ - admin/app/views/message_routes/_form.html.haml
80
+ - admin/app/views/applications/index.html.haml
81
+ - admin/app/views/applications/edit.html.haml
82
+ - admin/app/views/applications/show.html.haml
83
+ - admin/app/views/applications/new.html.haml
84
+ - admin/app/views/applications/_form.html.haml
85
+ - admin/app/assets/stylesheets/global.css.scss
86
+ - admin/app/assets/stylesheets/application.css
87
+ - admin/app/assets/stylesheets/applications.css.scss
88
+ - admin/app/assets/stylesheets/messages.css.scss
89
+ - admin/app/assets/stylesheets/message_types.css.scss
90
+ - admin/app/assets/stylesheets/message_routes.css.scss
91
+ - admin/app/assets/stylesheets/scaffolds.css.scss
92
+ - admin/app/assets/images/rails.png
93
+ - admin/app/assets/javascripts/message_routes.js.coffee
94
+ - admin/app/assets/javascripts/applications.js.coffee
95
+ - admin/app/assets/javascripts/message_types.js.coffee
96
+ - admin/app/assets/javascripts/messages.js.coffee
97
+ - admin/app/assets/javascripts/application.js
98
+ - admin/app/controllers/message_types_controller.rb
99
+ - admin/app/controllers/applications_controller.rb
100
+ - admin/app/controllers/message_routes_controller.rb
101
+ - admin/app/controllers/application_controller.rb
102
+ - admin/app/controllers/messages_controller.rb
103
+ - admin/app/helpers/messages_helper.rb
104
+ - admin/app/helpers/applications_helper.rb
105
+ - admin/app/helpers/message_types_helper.rb
106
+ - admin/app/helpers/message_routes_helper.rb
107
+ - admin/app/helpers/application_helper.rb
108
+ - admin/doc/README_FOR_APP
109
+ - admin/config/routes.rb
110
+ - admin/config/application.rb
111
+ - admin/config/initializers/secret_token.rb
112
+ - admin/config/initializers/wrap_parameters.rb
113
+ - admin/config/initializers/backtrace_silencers.rb
114
+ - admin/config/initializers/mime_types.rb
115
+ - admin/config/initializers/inflections.rb
116
+ - admin/config/initializers/session_store.rb
117
+ - admin/config/boot.rb
118
+ - admin/config/environments/production.rb
119
+ - admin/config/environments/test.rb
120
+ - admin/config/environments/development.rb
121
+ - admin/config/locales/en.yml
122
+ - admin/config/environment.rb
123
+ - admin/config/database.yml
124
+ - admin/Gemfile
125
+ - admin/Gemfile.lock
126
+ - admin/public/robots.txt
127
+ - admin/public/500.html
128
+ - admin/public/favicon.ico
129
+ - admin/public/404.html
130
+ - admin/public/422.html
131
+ - admin/db/seeds.rb
132
+ - admin/db/schema.rb
133
+ - admin/db/development.sqlite3-journal
134
+ - admin/db/migrate/20120411001823_rename_message_type_to_message_type_name_in_messages.rb
135
+ - admin/db/migrate/20120523112257_add_match_all_errors_to_routes.rb
136
+ - admin/db/migrate/20120218124300_create_messages.rb
137
+ - admin/db/migrate/20120219021806_create_message_types.rb
138
+ - admin/db/migrate/20120411001040_add_app_id_key_msg_type_id_to_messages.rb
139
+ - admin/db/migrate/20120219021940_create_message_routes.rb
140
+ - admin/db/migrate/20120413024953_add_message_guid_to_messages.rb
141
+ - admin/db/migrate/20120219021535_create_applications.rb
142
+ - admin/script/rails
143
+ - admin/script/railsrunner
144
+ - admin/test/test_helper.rb
145
+ - admin/test/fixtures/message_types.yml
146
+ - admin/test/fixtures/message_routes.yml
147
+ - admin/test/fixtures/applications.yml
148
+ - admin/test/fixtures/messages.yml
149
+ - admin/test/performance/browsing_test.rb
150
+ - admin/test/unit/message_route_test.rb
151
+ - admin/test/unit/message_type_test.rb
152
+ - admin/test/unit/application_test.rb
153
+ - admin/test/unit/helpers/message_types_helper_test.rb
154
+ - admin/test/unit/helpers/applications_helper_test.rb
155
+ - admin/test/unit/helpers/message_routes_helper_test.rb
156
+ - admin/test/unit/helpers/messages_helper_test.rb
157
+ - admin/test/unit/message_test.rb
158
+ - admin/test/functional/message_routes_controller_test.rb
159
+ - admin/test/functional/applications_controller_test.rb
160
+ - admin/test/functional/messages_controller_test.rb
161
+ - admin/test/functional/message_types_controller_test.rb
162
+ - admin/config.ru
163
+ - admin/Rakefile
164
+ homepage: https://github.com/devincognito/EventBus
165
+ licenses: []
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 1.8.11
185
+ signing_key:
186
+ specification_version: 3
187
+ summary: Libraries for creating EventBus services
188
+ test_files: []