Class: PryRemote::Server
Instance Attribute Summary collapse
-
#client ⇒ PryServer::Client
readonly
Client connecting to the pry-remote server.
-
#host ⇒ String
readonly
Host of the server.
-
#object ⇒ Object
readonly
Object to enter into.
-
#port ⇒ Integer
readonly
Port of the server.
Class Method Summary collapse
Instance Method Summary collapse
-
#capture_output ⇒ Object
Captures $stdout and $stderr if so requested by the client.
- #editor_proc ⇒ Object
-
#initialize(object, host = DefaultHost, port = DefaultPort, options = {}) ⇒ Server
constructor
A new instance of Server.
-
#run ⇒ Object
Actually runs pry-remote.
-
#setup ⇒ Object
Code that has to be called for Pry-remote to work properly.
-
#teardown ⇒ Object
Code that has to be called after setup to return to the initial state.
-
#uncapture_output ⇒ Object
Resets $stdout and $stderr to their previous values.
-
#uri ⇒ String
URI for DRb.
Constructor Details
#initialize(object, host = DefaultHost, port = DefaultPort, options = {}) ⇒ Server
Returns a new instance of Server.
147 148 149 150 151 152 153 154 155 156 |
# File 'lib/pry-remote.rb', line 147 def initialize(object, host = DefaultHost, port = DefaultPort, = {}) @host = host @port = port @object = object @options = @client = PryRemote::Client.new DRb.start_service uri, @client end |
Instance Attribute Details
#client ⇒ PryServer::Client (readonly)
Returns Client connecting to the pry-remote server.
246 247 248 |
# File 'lib/pry-remote.rb', line 246 def client @client end |
#host ⇒ String (readonly)
Returns Host of the server.
249 250 251 |
# File 'lib/pry-remote.rb', line 249 def host @host end |
#object ⇒ Object (readonly)
Returns Object to enter into.
243 244 245 |
# File 'lib/pry-remote.rb', line 243 def object @object end |
#port ⇒ Integer (readonly)
Returns Port of the server.
252 253 254 |
# File 'lib/pry-remote.rb', line 252 def port @port end |
Class Method Details
.run(object, host = DefaultHost, port = DefaultPort, options = {}) ⇒ Object
143 144 145 |
# File 'lib/pry-remote.rb', line 143 def self.run(object, host = DefaultHost, port = DefaultPort, = {}) new(object, host, port, ).run end |
Instance Method Details
#capture_output ⇒ Object
Captures $stdout and $stderr if so requested by the client.
201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'lib/pry-remote.rb', line 201 def capture_output @old_stdout, $stdout = if @client.stdout [$stdout, @client.stdout] else [$stdout, $stdout] end @old_stderr, $stderr = if @client.stderr [$stderr, @client.stderr] else [$stderr, $stderr] end end |
#editor_proc ⇒ Object
221 222 223 224 225 |
# File 'lib/pry-remote.rb', line 221 def editor_proc proc do |file, line| File.write(file, @client.editor.call(File.read(file), line)) end end |
#run ⇒ Object
Actually runs pry-remote
228 229 230 231 232 233 234 235 236 237 238 239 240 |
# File 'lib/pry-remote.rb', line 228 def run puts "[pry-remote] Waiting for client on #{uri}" @client.wait puts "[pry-remote] Client received, starting remote session" setup Pry.start(@object, @options.merge(:input => client.input_proxy, :output => client.output, :hooks => @hooks)) ensure teardown end |
#setup ⇒ Object
Code that has to be called for Pry-remote to work properly
159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/pry-remote.rb', line 159 def setup @hooks = Pry::Hooks.new @hooks.add_hook :before_eval, :pry_remote_capture do capture_output end @hooks.add_hook :after_eval, :pry_remote_uncapture do uncapture_output end # Before Pry starts, save the pager config. # We want to disable this because the pager won't do anything useful in # this case (it will run on the server). Pry.config.pager, @old_pager = false, Pry.config.pager # As above, but for system config Pry.config.system, @old_system = PryRemote::System, Pry.config.system Pry.config.editor, @old_editor = editor_proc, Pry.config.editor end |
#teardown ⇒ Object
Code that has to be called after setup to return to the initial state
182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/pry-remote.rb', line 182 def teardown # Reset config Pry.config.editor = @old_editor Pry.config.pager = @old_pager Pry.config.system = @old_system puts "[pry-remote] Remote session terminated" begin @client.kill rescue DRb::DRbConnError puts "[pry-remote] Continuing to stop service" ensure puts "[pry-remote] Ensure stop service" DRb.stop_service end end |
#uncapture_output ⇒ Object
Resets $stdout and $stderr to their previous values.
216 217 218 219 |
# File 'lib/pry-remote.rb', line 216 def uncapture_output $stdout = @old_stdout $stderr = @old_stderr end |
#uri ⇒ String
Returns URI for DRb.
255 256 257 |
# File 'lib/pry-remote.rb', line 255 def uri "druby://#{host}:#{port}" end |