Class: ChromeDebugger::Client
- Inherits:
-
Object
- Object
- ChromeDebugger::Client
- Defined in:
- lib/chrome_debugger/client.rb
Constant Summary collapse
- PAGE_LOAD_WAIT =
16
- REMOTE_DEBUGGING_PORT =
9222
Class Method Summary collapse
Instance Method Summary collapse
- #cleanup ⇒ Object
-
#initialize(opts = {}) ⇒ Client
constructor
A new instance of Client.
- #load_url(url) ⇒ Object
- #start_chrome ⇒ Object
Constructor Details
#initialize(opts = {}) ⇒ Client
Returns a new instance of Client.
22 23 24 |
# File 'lib/chrome_debugger/client.rb', line 22 def initialize(opts = {}) @chrome_path = find_chrome_binary end |
Class Method Details
.open(&block) ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/chrome_debugger/client.rb', line 26 def self.open(&block) headless = Headless.new headless.start chrome = ChromeDebugger::Client.new chrome.start_chrome yield chrome ensure chrome.cleanup headless.destroy end |
Instance Method Details
#cleanup ⇒ Object
55 56 57 58 59 60 61 62 |
# File 'lib/chrome_debugger/client.rb', line 55 def cleanup if @chrome_pid Process.kill('-TERM', Process.getpgid(@chrome_pid)) sleep 3 FileUtils.rm_rf(@profile_dir) if @profile_dir && File.directory?(@profile_dir) @chrome_pid = nil end end |
#load_url(url) ⇒ Object
48 49 50 51 52 53 |
# File 'lib/chrome_debugger/client.rb', line 48 def load_url(url) raise "call the start_chrome() method first" unless @chrome_pid document = ChromeDebugger::Document.new(url) load(document) document end |
#start_chrome ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/chrome_debugger/client.rb', line 37 def start_chrome @profile_dir = File.join(Dir.tmpdir, SecureRandom.hex(10)) @chrome_cmd = "'#{@chrome_path}' --user-data-dir=#{@profile_dir} -remote-debugging-port=#{REMOTE_DEBUGGING_PORT} --no-first-run > /dev/null 2>&1" puts @chrome_cmd @chrome_pid = Process.spawn(@chrome_cmd, :pgroup => true) until debug_port_listening? sleep 0.1 end end |