Class: RseProxy::PassThru
- Inherits:
-
Object
- Object
- RseProxy::PassThru
- Defined in:
- lib/rse.rb
Instance Method Summary collapse
- #delete ⇒ Object
- #fetch_server ⇒ Object
- #get ⇒ Object
-
#initialize(serversx = [], servers: serversx, log: nil) ⇒ PassThru
constructor
A new instance of PassThru.
- #package_methods(name) ⇒ Object
- #post ⇒ Object
- #put ⇒ Object
- #run_job(package, job, params = {}, *args) ⇒ Object
- #type ⇒ Object
- #type=(s) ⇒ Object
Constructor Details
#initialize(serversx = [], servers: serversx, log: nil) ⇒ PassThru
Returns a new instance of PassThru.
99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/rse.rb', line 99 def initialize(serversx=[], servers: serversx, log: nil ) DRb.start_service @servers = servers.map do |x| host, port = x.is_a?(Hash) ? [x[:host], x[:port]] : x end @log = Logger.new log, 'daily' if log end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args) ⇒ Object (private)
173 174 175 |
# File 'lib/rse.rb', line 173 def method_missing(method_name, *args) fetch_server() { |rse| rse.get.method(method_name).call(*args) } end |
Instance Method Details
#delete ⇒ Object
113 114 115 |
# File 'lib/rse.rb', line 113 def delete() fetch_server() { |rse| rse.delete } end |
#fetch_server ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 |
# File 'lib/rse.rb', line 142 def fetch_server() begin servers = @servers.clone server = servers.shift host, port = server rse = DRbObject.new_with_uri("druby://#{host}:#{port}") yield(rse) if block_given? rescue puts ($!).inspect @log.warn "server #{host}:#{port} down" if @log retry if servers.any? end end |
#get ⇒ Object
117 118 119 |
# File 'lib/rse.rb', line 117 def get() fetch_server() { |rse| rse.get } end |
#package_methods(name) ⇒ Object
129 130 131 |
# File 'lib/rse.rb', line 129 def package_methods(name) fetch_server() { |rse| rse.package_methods(name) } end |
#post ⇒ Object
125 126 127 |
# File 'lib/rse.rb', line 125 def post() fetch_server() { |rse| rse.post } end |
#put ⇒ Object
121 122 123 |
# File 'lib/rse.rb', line 121 def put() fetch_server() { |rse| rse.put } end |
#run_job(package, job, params = {}, *args) ⇒ Object
133 134 135 136 137 138 139 140 |
# File 'lib/rse.rb', line 133 def run_job(package, job, params={}, *args) @log.info "package: %s, job: %s, params: %s, args: %s" \ % [package, job, params, args] if @log fetch_server() { |rse| rse.run_job package, job, params, *args } end |
#type ⇒ Object
163 164 165 |
# File 'lib/rse.rb', line 163 def type() fetch_server() { |rse| rse.type } end |
#type=(s) ⇒ Object
167 168 169 |
# File 'lib/rse.rb', line 167 def type=(s) fetch_server() { |rse| rse.type=(s) } end |