Module: DRbServe
- Defined in:
- lib/DRbServe.rb
Instance Method Summary collapse
- #hook ⇒ Object
- #serve(method) ⇒ Object
- #start_server ⇒ Object
- #uri ⇒ Object
- #uri=(uri) ⇒ Object
- #uri_filename ⇒ Object
- #uri_filename=(filename) ⇒ Object
Instance Method Details
#hook ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/DRbServe.rb', line 46 def hook if File.exist? uri_filename begin @remote = DRbObject.new(nil, uri) puts "Connected to #{ uri }" if @remote.alive @served ||=[] @served.each{|method_name| class << self; self; end.instance_eval{ define_method(method_name, proc{|*args| @remote.send(method_name, *args) }) } } rescue end end end |
#serve(method) ⇒ Object
65 66 67 68 |
# File 'lib/DRbServe.rb', line 65 def serve(method) @served ||= [] @served << method end |
#start_server ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/DRbServe.rb', line 27 def start_server if Class === self o = self.new else o = self end class << o def alive true end end DRb.start_service nil, o self.uri= DRb.uri puts uri DRb.thread.join end |
#uri ⇒ Object
23 24 25 |
# File 'lib/DRbServe.rb', line 23 def uri File.open(uri_filename).read end |
#uri=(uri) ⇒ Object
15 16 17 18 19 20 21 |
# File 'lib/DRbServe.rb', line 15 def uri=(uri) puts "Saving #{ uri } in #{ self.uri_filename }" FileUtils.mkdir_p FileUtils.dirname(uri_filename) unless File.exist? File.dirname(uri_filename) fout = File.open(uri_filename,'w') fout.puts uri fout.close end |
#uri_filename ⇒ Object
9 10 11 12 |
# File 'lib/DRbServe.rb', line 9 def uri_filename @uri_filename ||= File.join('/tmp', "DRbServe" + self.to_s + ".uri") @uri_filename end |
#uri_filename=(filename) ⇒ Object
5 6 7 |
# File 'lib/DRbServe.rb', line 5 def uri_filename=(filename) @uri_filename = filename end |