adaptation 0.0.2 → 0.0.3

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.
@@ -0,0 +1,196 @@
1
+ require 'breakpoint'
2
+ require 'optparse'
3
+ require 'timeout'
4
+
5
+ Options = {
6
+ :ClientURI => nil,
7
+ :ServerURI => "druby://localhost:42531",
8
+ :RetryDelay => 2,
9
+ :Permanent => true,
10
+ :Verbose => false
11
+ }
12
+
13
+ ARGV.options do |opts|
14
+ script_name = File.basename($0)
15
+ opts.banner = [
16
+ "Usage: ruby #{script_name} [Options] [server uri]",
17
+ "",
18
+ "This tool lets you connect to a breakpoint service ",
19
+ "which was started via Breakpoint.activate_drb.",
20
+ "",
21
+ "The server uri defaults to druby://localhost:42531"
22
+ ].join("\n")
23
+
24
+ opts.separator ""
25
+
26
+ opts.on("-c", "--client-uri=uri",
27
+ "Run the client on the specified uri.",
28
+ "This can be used to specify the port",
29
+ "that the client uses to allow for back",
30
+ "connections from the server.",
31
+ "Default: Find a good URI automatically.",
32
+ "Example: -c druby://localhost:12345"
33
+ ) { |v| Options[:ClientURI] = v }
34
+
35
+ opts.on("-s", "--server-uri=uri",
36
+ "Connect to the server specified at the",
37
+ "specified uri.",
38
+ "Default: druby://localhost:42531"
39
+ ) { |v| Options[:ServerURI] = v }
40
+
41
+ opts.on("-R", "--retry-delay=delay", Integer,
42
+ "Automatically try to reconnect to the",
43
+ "server after delay seconds when the",
44
+ "connection failed or timed out.",
45
+ "A value of 0 disables automatical",
46
+ "reconnecting completely.",
47
+ "Default: 10"
48
+ ) { |v| Options[:RetryDelay] = v }
49
+
50
+ opts.on("-P", "--[no-]permanent",
51
+ "Run the breakpoint client in permanent mode.",
52
+ "This means that the client will keep continue",
53
+ "running even after the server has closed the",
54
+ "connection. Useful for example in Rails."
55
+ ) { |v| Options[:Permanent] = v }
56
+
57
+ opts.on("-V", "--[no-]verbose",
58
+ "Run the breakpoint client in verbose mode.",
59
+ "Will produce more messages, for example between",
60
+ "individual breakpoints. This might help in seeing",
61
+ "that the breakpoint client is still alive, but adds",
62
+ "quite a bit of clutter."
63
+ ) { |v| Options[:Verbose] = v }
64
+
65
+ opts.separator ""
66
+
67
+ opts.on("-h", "--help",
68
+ "Show this help message."
69
+ ) { puts opts; exit }
70
+ opts.on("-v", "--version",
71
+ "Display the version information."
72
+ ) do
73
+ id = %q$Id: breakpoint_client.rb 91 2005-02-04 22:34:08Z flgr $
74
+ puts id.sub("Id: ", "")
75
+ puts "(Breakpoint::Version = #{Breakpoint::Version})"
76
+ exit
77
+ end
78
+
79
+ opts.parse!
80
+ end
81
+
82
+ Options[:ServerURI] = ARGV[0] if ARGV[0]
83
+
84
+ module Handlers #:nodoc:
85
+ extend self
86
+
87
+ def breakpoint_handler(workspace, message)
88
+ puts message
89
+ IRB.start(nil, nil, workspace)
90
+
91
+ puts ""
92
+ if Options[:Verbose] then
93
+ puts "Resumed execution. Waiting for next breakpoint...", ""
94
+ end
95
+ end
96
+
97
+ def eval_handler(code)
98
+ result = eval(code, TOPLEVEL_BINDING)
99
+ if result then
100
+ DRbObject.new(result)
101
+ else
102
+ result
103
+ end
104
+ end
105
+
106
+ def collision_handler()
107
+ msg = [
108
+ " *** Breakpoint service collision ***",
109
+ " Another Breakpoint service tried to use the",
110
+ " port already occupied by this one. It will",
111
+ " keep waiting until this Breakpoint service",
112
+ " is shut down.",
113
+ " ",
114
+ " If you are using the Breakpoint library for",
115
+ " debugging a Rails or other CGI application",
116
+ " this likely means that this Breakpoint",
117
+ " session belongs to an earlier, outdated",
118
+ " request and should be shut down via 'exit'."
119
+ ].join("\n")
120
+
121
+ if RUBY_PLATFORM["win"] then
122
+ # This sucks. Sorry, I'm not doing this because
123
+ # I like funky message boxes -- I need to do this
124
+ # because on Windows I have no way of displaying
125
+ # my notification via puts() when gets() is still
126
+ # being performed on STDIN. I have not found a
127
+ # better solution.
128
+ begin
129
+ require 'tk'
130
+ root = TkRoot.new { withdraw }
131
+ Tk.messageBox('message' => msg, 'type' => 'ok')
132
+ root.destroy
133
+ rescue Exception
134
+ puts "", msg, ""
135
+ end
136
+ else
137
+ puts "", msg, ""
138
+ end
139
+ end
140
+ end
141
+
142
+ # Used for checking whether we are currently in the reconnecting loop.
143
+ reconnecting = false
144
+
145
+ loop do
146
+ DRb.start_service(Options[:ClientURI])
147
+
148
+ begin
149
+ service = DRbObject.new(nil, Options[:ServerURI])
150
+
151
+ begin
152
+ ehandler = Handlers.method(:eval_handler)
153
+ chandler = Handlers.method(:collision_handler)
154
+ handler = Handlers.method(:breakpoint_handler)
155
+ service.eval_handler = ehandler
156
+ service.collision_handler = chandler
157
+ service.handler = handler
158
+
159
+ reconnecting = false
160
+ if Options[:Verbose] then
161
+ puts "Connection established. Waiting for breakpoint...", ""
162
+ end
163
+
164
+ loop do
165
+ begin
166
+ service.ping
167
+ rescue DRb::DRbConnError => error
168
+ puts "Server exited. Closing connection...", ""
169
+ exit! unless Options[:Permanent]
170
+ break
171
+ end
172
+
173
+ sleep(0.5)
174
+ end
175
+ ensure
176
+ service.eval_handler = nil
177
+ service.collision_handler = nil
178
+ service.handler = nil
179
+ end
180
+ rescue Exception => error
181
+ if Options[:RetryDelay] > 0 then
182
+ if not reconnecting then
183
+ reconnecting = true
184
+ puts "No connection to breakpoint service at #{Options[:ServerURI]} " +
185
+ "(#{error.class})"
186
+ puts error.backtrace if $DEBUG
187
+ puts "Tries to connect will be made every #{Options[:RetryDelay]} seconds..."
188
+ end
189
+
190
+ sleep Options[:RetryDelay]
191
+ retry
192
+ else
193
+ raise
194
+ end
195
+ end
196
+ end
@@ -0,0 +1 @@
1
+ require 'breakpoint_client'
@@ -1,11 +1,25 @@
1
1
  require 'adaptation'
2
- require 'adaptation/oapdaemon'
3
2
 
4
- config = YAML::load(File.open("config/mom.yml"))
5
- mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
6
- subscriber_uri = "druby://#{config["subscriber"]["host"]}:#{config["subscriber"]["port"]}"
7
- topics = config["subscriber"]["topics"].split(' ')
3
+ environment = "development" # TODO: "un-hardcode" this
4
+ config = YAML::load(File.open("config/mom.yml"))["development"]
8
5
 
9
- oapdaemon = Adaptation::Oapdaemon.new subscriber_uri, mom_uri, topics
10
- oapdaemon.start
6
+ case config["mom"]["type"]
7
+ when "druby"
8
+ require 'adaptation/druby_subscriber'
9
+
10
+ mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
11
+ subscriber_uri = "druby://#{config["subscriber"]["host"]}:#{config["subscriber"]["port"]}"
12
+ topics = config["subscriber"]["topics"].split(' ')
13
+
14
+ Signal.trap("INT") { puts "Shutting down subscriber (#{config["mom"]["type"]})"; exit }
15
+
16
+ oapdaemon = Adaptation::Mom::DrubySubscriber.new subscriber_uri, mom_uri, topics
17
+ oapdaemon.start
18
+
19
+ #when "xmlblaster"
20
+ #
21
+
22
+ else
23
+ puts "Unknown MOM server type: #{config["mom"]["type"]}"
24
+ end
11
25
 
@@ -0,0 +1,25 @@
1
+ require 'adaptation'
2
+
3
+ environment = "development" # TODO: "un-hardcode" this
4
+ config = YAML::load(File.open("config/mom.yml"))["development"]
5
+
6
+ case config["mom"]["type"]
7
+ when "druby"
8
+ require 'adaptation/druby_subscriber'
9
+
10
+ mom_uri = "druby://#{config["mom"]["host"]}:#{config["mom"]["port"]}"
11
+ subscriber_uri = "druby://#{config["subscriber"]["host"]}:#{config["subscriber"]["port"]}"
12
+ topics = config["subscriber"]["topics"].split(' ')
13
+
14
+ Signal.trap("INT") { puts "Shutting down subscriber (#{config["mom"]["type"]})"; exit }
15
+
16
+ oapdaemon = Adaptation::Mom::DrubySubscriber.new subscriber_uri, mom_uri, topics
17
+ oapdaemon.start
18
+
19
+ #when "xmlblaster"
20
+ #
21
+
22
+ else
23
+ puts "Unknown MOM server type: #{config["mom"]["type"]}"
24
+ end
25
+
@@ -43,6 +43,9 @@ class AppGenerator < Rails::Generator::Base
43
43
  # mom.yml
44
44
  m.template "configs/mom.yml", "config/mom.yml"
45
45
 
46
+ # settings.yml
47
+ m.template "configs/settings.yml", "config/settings.yml"
48
+
46
49
  # boot.rb, needed by some scripts
47
50
  m.file "configs/boot.rb", "config/boot.rb"
48
51
 
@@ -54,7 +57,7 @@ class AppGenerator < Rails::Generator::Base
54
57
  #m.file "environments/test.rb", "config/environments/test.rb"
55
58
 
56
59
  # Scripts
57
- %w( mom generate destroy about subscribe ).each do |file|
60
+ %w( generate destroy about subscribe breakpointer ).each do |file|
58
61
  m.file "bin/#{file}", "script/#{file}", script_options
59
62
  end
60
63
 
@@ -0,0 +1,136 @@
1
+ require 'rbconfig'
2
+
3
+ class AppGenerator < Rails::Generator::Base
4
+ DEFAULT_SHEBANG = File.join(Config::CONFIG['bindir'],
5
+ Config::CONFIG['ruby_install_name'])
6
+
7
+ DATABASES = %w(mysql oracle postgresql sqlite2 sqlite3 frontbase)
8
+
9
+ default_options :db => "mysql", :shebang => DEFAULT_SHEBANG, :freeze => false
10
+ mandatory_options :source => "#{File.dirname(__FILE__)}/../../../../.."
11
+
12
+ def initialize(runtime_args, runtime_options = {})
13
+ super
14
+ usage if args.empty?
15
+ usage("Databases supported for preconfiguration are: #{DATABASES.join(", ")}") if (options[:db] && !DATABASES.include?(options[:db]))
16
+ @destination_root = args.shift
17
+ @app_name = File.basename(File.expand_path(@destination_root))
18
+ end
19
+
20
+ def manifest
21
+ # Use /usr/bin/env if no special shebang was specified
22
+ script_options = { :chmod => 0755, :shebang => options[:shebang] == DEFAULT_SHEBANG ? nil : options[:shebang] }
23
+ dispatcher_options = { :chmod => 0755, :shebang => options[:shebang] }
24
+
25
+ record do |m|
26
+ # Root directory and all subdirectories.
27
+ m.directory ''
28
+ BASEDIRS.each { |path| m.directory path }
29
+
30
+ # Root
31
+ m.file "README", "README"
32
+
33
+ # Application
34
+ m.file "helpers/test_helper.rb", "test/test_helper.rb"
35
+ m.file "helpers/publish.rb", "test/mocks/test/publish.rb"
36
+
37
+ # database.yml
38
+ m.template "configs/databases/#{options[:db]}.yml", "config/database.yml", :assigns => {
39
+ :app_name => @app_name,
40
+ :socket => options[:db] == "mysql" ? mysql_socket_location : nil
41
+ }
42
+
43
+ # mom.yml
44
+ m.template "configs/mom.yml", "config/mom.yml"
45
+
46
+ # settings.yml
47
+ m.template "configs/settings.yml", "config/settings.yml"
48
+
49
+ # boot.rb, needed by some scripts
50
+ m.file "configs/boot.rb", "config/boot.rb"
51
+
52
+ # Environments
53
+ #m.file "environments/boot.rb", "config/boot.rb"
54
+ #m.template "environments/environment.rb", "config/environment.rb", :assigns => { :freeze => options[:freeze] }
55
+ #m.file "environments/production.rb", "config/environments/production.rb"
56
+ #m.file "environments/development.rb", "config/environments/development.rb"
57
+ #m.file "environments/test.rb", "config/environments/test.rb"
58
+
59
+ # Scripts
60
+ %w( generate destroy about subscribe ).each do |file|
61
+ m.file "bin/#{file}", "script/#{file}", script_options
62
+ end
63
+
64
+ # Dispatches
65
+ m.file "dispatches/dispatch.rb", "public/dispatch.rb", script_options
66
+ m.file "dispatches/publish.rb", "public/publish.rb", script_options
67
+
68
+ # Docs
69
+ m.file "doc/README_FOR_APP", "doc/README_FOR_APP"
70
+
71
+ # Logs
72
+ %w(server production development test).each { |file|
73
+ m.file "configs/empty.log", "log/#{file}.log", :chmod => 0666
74
+ }
75
+ end
76
+ end
77
+
78
+ protected
79
+ def banner
80
+ "Usage: #{$0} /path/to/your/app [options]"
81
+ end
82
+
83
+ def add_options!(opt)
84
+ opt.separator ''
85
+ opt.separator 'Options:'
86
+ opt.on("-r", "--ruby=path", String,
87
+ "Path to the Ruby binary of your choice (otherwise scripts use env, dispatchers current path).",
88
+ "Default: #{DEFAULT_SHEBANG}") { |v| options[:shebang] = v }
89
+
90
+ opt.on("-d", "--database=name", String,
91
+ "Preconfigure for selected database (options: mysql/oracle/postgresql/sqlite2/sqlite3).",
92
+ "Default: mysql") { |v| options[:db] = v }
93
+
94
+ #opt.on("-f", "--freeze",
95
+ # "Freeze Rails in vendor/rails from the gems generating the skeleton",
96
+ # "Default: false") { |v| options[:freeze] = v }
97
+ end
98
+
99
+ def mysql_socket_location
100
+ MYSQL_SOCKET_LOCATIONS.find { |f| File.exists?(f) } unless RUBY_PLATFORM =~ /(:?mswin|mingw)/
101
+ end
102
+
103
+
104
+ # Installation skeleton. Intermediate directories are automatically
105
+ # created so don't sweat their absence here.
106
+ BASEDIRS = %w(
107
+ app/adaptors
108
+ app/messages
109
+ app/models
110
+ config/environments
111
+ db
112
+ doc
113
+ lib
114
+ lib/tasks
115
+ log
116
+ public
117
+ script
118
+ test/fixtures
119
+ test/functional
120
+ test/mocks/development
121
+ test/mocks/test
122
+ test/unit
123
+ )
124
+
125
+ MYSQL_SOCKET_LOCATIONS = [
126
+ "/tmp/mysql.sock", # default
127
+ "/var/run/mysqld/mysqld.sock", # debian/gentoo
128
+ "/var/tmp/mysql.sock", # freebsd
129
+ "/var/lib/mysql/mysql.sock", # fedora
130
+ "/opt/local/lib/mysql/mysql.sock", # fedora
131
+ "/opt/local/var/run/mysqld/mysqld.sock", # mac + darwinports + mysql
132
+ "/opt/local/var/run/mysql4/mysqld.sock", # mac + darwinports + mysql4
133
+ "/opt/local/var/run/mysql5/mysqld.sock", # mac + darwinports + mysql5
134
+ "/opt/lampp/var/mysql/mysql.sock" # xampp for linux
135
+ ]
136
+ end
@@ -3,7 +3,7 @@ require '<%= file_path %>_adaptor'
3
3
 
4
4
  class <%= class_name %>AdaptorTest < Test::Unit::TestCase
5
5
 
6
- fixtures :<%= table_name %>
6
+ #fixtures :your_table_name_here
7
7
 
8
8
  def setup
9
9
  @adaptor = <%= class_name %>Adaptor.new
@@ -1,7 +1,6 @@
1
1
  require File.dirname(__FILE__) + '<%= '/..' * class_nesting_depth %>/../test_helper'
2
2
 
3
3
  class <%= class_name %>Test < Test::Unit::TestCase
4
- fixtures :<%= file_name %>
5
4
 
6
5
  # Replace this with your real tests.
7
6
  def test_truth
metadata CHANGED
@@ -1,9 +1,9 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
2
+ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: adaptation
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.2
6
+ version: 0.0.3
7
7
  date: 2007-04-30 00:00:00 +02:00
8
8
  summary: Framework to facilitate web-application interaction.
9
9
  require_paths:
@@ -15,7 +15,7 @@ description: Adaptation is a framework for building "adaptors" for web-applicati
15
15
  autorequire: adaptation
16
16
  default_executable: adaptation
17
17
  bindir: bin
18
- has_rdoc: true
18
+ has_rdoc: false
19
19
  required_ruby_version: !ruby/object:Gem::Version::Requirement
20
20
  requirements:
21
21
  - - ">"
@@ -29,76 +29,88 @@ post_install_message:
29
29
  authors:
30
30
  - Xavi Vila Morell
31
31
  files:
32
+ - bin/generate
32
33
  - bin/destroy
33
34
  - bin/adaptation
34
35
  - bin/about
35
- - bin/subscribe
36
+ - bin/breakpointer
37
+ - bin/mom~
36
38
  - bin/mom
37
- - bin/generate
38
- - lib/commands
39
- - lib/adaptation
39
+ - bin/subscribe
40
40
  - lib/rails_generator.rb
41
+ - lib/adaptation
42
+ - lib/binding_of_caller.rb
43
+ - lib/breakpoint_client.rb
44
+ - lib/adaptation.rb
41
45
  - lib/commands.rb
46
+ - lib/breakpoint.rb
47
+ - lib/commands
42
48
  - lib/ruby_version_check.rb
43
- - lib/adaptation.rb
44
49
  - lib/rails_generator
45
- - lib/commands/about.rb
46
- - lib/commands/mom.rb
47
- - lib/commands/destroy.rb
48
- - lib/commands/generate.rb
49
- - lib/commands/subscribe.rb
50
50
  - lib/adaptation/version.rb
51
- - lib/adaptation/base.rb
51
+ - lib/adaptation/mom.rb~
52
52
  - lib/adaptation/message.rb
53
- - lib/adaptation/mom.rb
54
53
  - lib/adaptation/adaptor.rb
55
- - lib/adaptation/oapdaemon.rb
54
+ - lib/adaptation/druby_subscriber.rb
55
+ - lib/adaptation/druby_subscriber.rb~
56
+ - lib/adaptation/mom.rb
56
57
  - lib/adaptation/test
58
+ - lib/adaptation/oapdaemon.rb~
59
+ - lib/adaptation/base.rb
57
60
  - lib/adaptation/test/test_help.rb
58
- - lib/rails_generator/scripts
59
- - lib/rails_generator/base.rb
61
+ - lib/commands/mom.rb.descartat
62
+ - lib/commands/subscribe.rb~
63
+ - lib/commands/destroy.rb
64
+ - lib/commands/subscribe.rb
65
+ - lib/commands/about.rb
66
+ - lib/commands/breakpointer.rb
67
+ - lib/commands/generate.rb
60
68
  - lib/rails_generator/lookup.rb
69
+ - lib/rails_generator/generators
61
70
  - lib/rails_generator/commands.rb
62
- - lib/rails_generator/simple_logger.rb
63
71
  - lib/rails_generator/scripts.rb
64
- - lib/rails_generator/manifest.rb
65
- - lib/rails_generator/generated_attribute.rb
72
+ - lib/rails_generator/simple_logger.rb
66
73
  - lib/rails_generator/options.rb
67
- - lib/rails_generator/generators
68
74
  - lib/rails_generator/spec.rb
69
- - lib/rails_generator/scripts/destroy.rb
70
- - lib/rails_generator/scripts/generate.rb
71
- - lib/rails_generator/scripts/update.rb
75
+ - lib/rails_generator/manifest.rb
76
+ - lib/rails_generator/scripts
77
+ - lib/rails_generator/generated_attribute.rb
78
+ - lib/rails_generator/base.rb
72
79
  - lib/rails_generator/generators/components
73
80
  - lib/rails_generator/generators/applications
74
81
  - lib/rails_generator/generators/components/model
75
- - lib/rails_generator/generators/components/message
76
82
  - lib/rails_generator/generators/components/adaptor
83
+ - lib/rails_generator/generators/components/message
77
84
  - lib/rails_generator/generators/components/model/USAGE
78
85
  - lib/rails_generator/generators/components/model/model_generator.rb
79
86
  - lib/rails_generator/generators/components/model/templates
80
87
  - lib/rails_generator/generators/components/model/templates/unit_test.rb
81
- - lib/rails_generator/generators/components/model/templates/migration.rb
82
- - lib/rails_generator/generators/components/model/templates/model.rb
83
88
  - lib/rails_generator/generators/components/model/templates/fixtures.yml
84
- - lib/rails_generator/generators/components/message/message_generator.rb
85
- - lib/rails_generator/generators/components/message/USAGE
86
- - lib/rails_generator/generators/components/message/templates
87
- - lib/rails_generator/generators/components/message/templates/unit_test.rb
88
- - lib/rails_generator/generators/components/message/templates/message.rb
89
- - lib/rails_generator/generators/components/message/templates/fixtures.xml
89
+ - lib/rails_generator/generators/components/model/templates/model.rb
90
+ - lib/rails_generator/generators/components/model/templates/migration.rb
90
91
  - lib/rails_generator/generators/components/adaptor/USAGE
91
92
  - lib/rails_generator/generators/components/adaptor/adaptor_generator.rb
92
93
  - lib/rails_generator/generators/components/adaptor/templates
93
- - lib/rails_generator/generators/components/adaptor/templates/functional_test.rb
94
94
  - lib/rails_generator/generators/components/adaptor/templates/adaptor.rb
95
+ - lib/rails_generator/generators/components/adaptor/templates/functional_test.rb
96
+ - lib/rails_generator/generators/components/message/USAGE
97
+ - lib/rails_generator/generators/components/message/message_generator.rb
98
+ - lib/rails_generator/generators/components/message/templates
99
+ - lib/rails_generator/generators/components/message/templates/message.rb
100
+ - lib/rails_generator/generators/components/message/templates/unit_test.rb
101
+ - lib/rails_generator/generators/components/message/templates/fixtures.xml
95
102
  - lib/rails_generator/generators/applications/app
96
103
  - lib/rails_generator/generators/applications/app/USAGE
104
+ - lib/rails_generator/generators/applications/app/app_generator.rb~
97
105
  - lib/rails_generator/generators/applications/app/app_generator.rb
98
- - helpers/test_helper.rb
106
+ - lib/rails_generator/scripts/destroy.rb
107
+ - lib/rails_generator/scripts/update.rb
108
+ - lib/rails_generator/scripts/generate.rb
99
109
  - helpers/publish.rb
110
+ - helpers/test_helper.rb
100
111
  - doc/README_FOR_APP
101
112
  - configs/databases
113
+ - configs/settings.yml
102
114
  - configs/empty.log
103
115
  - configs/boot.rb
104
116
  - configs/mom.yml
@@ -117,6 +129,7 @@ extra_rdoc_files:
117
129
  - README
118
130
  executables:
119
131
  - adaptation
132
+ - mom
120
133
  extensions: []
121
134
 
122
135
  requirements: []
@@ -1,38 +0,0 @@
1
- require 'drb'
2
- require 'yaml'
3
-
4
- module Adaptation
5
-
6
- class Oapdaemon
7
-
8
- def initialize subscriber_uri, mom_uri, topics
9
- @subscriber_uri = subscriber_uri
10
- @mom_uri = mom_uri
11
- @topics = topics
12
- end
13
-
14
- def call_adaptor message, topic
15
- if ( (@topics.include?(topic)) or (@topics == "all") )
16
- system("ruby public/dispatch.rb #{message}")
17
- end
18
- puts "#{topic} => #{message}"
19
- end
20
-
21
- def subscription_result subscribed
22
- if subscribed
23
- puts "Subscribed to mom (#{@mom_uri}). Listening at #{@subscriber_uri}"
24
- end
25
- end
26
-
27
- def start
28
- DRb.start_service(@subscriber_uri, self)
29
-
30
- mom = DRbObject.new(nil, @mom_uri)
31
- mom.subscribe @subscriber_uri
32
-
33
- DRb.thread.join # Don't exit just yet!
34
- end
35
-
36
- end
37
-
38
- end
File without changes