Module: Bidi2pdfRails::ChromedriverManagerSingleton
- Defined in:
- lib/bidi2pdf_rails/chromedriver_manager_singleton.rb
Class Attribute Summary collapse
-
.manager ⇒ Object
readonly
Returns the value of attribute manager.
Instance Attribute Summary collapse
-
#bidi2pdf_rails_session ⇒ Object
Returns the value of attribute bidi2pdf_rails_session.
Class Method Summary collapse
- .initialize_manager(force: false) ⇒ Object
- .running_as_server? ⇒ Boolean
- .session ⇒ Object
- .session_close ⇒ Object
- .shutdown ⇒ Object
Class Attribute Details
.manager ⇒ Object (readonly)
Returns the value of attribute manager.
8 9 10 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 8 def manager @manager end |
Instance Attribute Details
#bidi2pdf_rails_session ⇒ Object
Returns the value of attribute bidi2pdf_rails_session.
5 6 7 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 5 def bidi2pdf_rails_session @bidi2pdf_rails_session end |
Class Method Details
.initialize_manager(force: false) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 10 def initialize_manager(force: false) return unless running_as_server? || force @mutex ||= Mutex.new @mutex.synchronize do return if @manager && @session msg = Bidi2pdfRails.use_remote_browser? ? "Remote session" : "ChromeDriver manager" Bidi2pdfRails.logger.info "Initializing Bidi2pdf #{msg}" unless Bidi2pdfRails.use_remote_browser? @manager = Bidi2pdf::ChromedriverManager.new( port: Bidi2pdfRails.config.chromedriver_settings.port_value, headless: Bidi2pdfRails.config..headless_value, chrome_args: Bidi2pdfRails.config..chrome_session_args_value ) @manager.start end end end |
.running_as_server? ⇒ Boolean
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 68 def running_as_server? return false if Rails.const_defined?(:Console) return false if defined?(Rails::Generators) return false if File.basename($0) == "rake" # Covers common Rails server entrypoints server_commands = %w[server puma unicorn passenger thin webrick rackup] cmdline = File.basename($0) server_commands.any? { |s| cmdline.include?(s) } || Rails.const_defined?("Server") end |
.session ⇒ Object
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 32 def session Thread.current.bidi2pdf_rails_session ||= begin if Bidi2pdfRails.use_remote_browser? session = Bidi2pdf::Bidi::Session.new( session_url: Bidi2pdfRails.config.render_remote_settings.browser_url_value, headless: Bidi2pdfRails.config..headless_value, chrome_args: Bidi2pdfRails.config..chrome_session_args_value ) else session = @manager.session end session.start session.client.on_close { Bidi2pdfRails.logger.info "WebSocket session closed" } session end end |
.session_close ⇒ Object
50 51 52 53 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 50 def session_close Thread.current.bidi2pdf_rails_session&.close Thread.current.bidi2pdf_rails_session = nil end |
.shutdown ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/bidi2pdf_rails/chromedriver_manager_singleton.rb', line 55 def shutdown return unless running_as_server? @mutex ||= Mutex.new @mutex.synchronize do msg = Bidi2pdfRails.use_remote_browser? ? "Remote session" : "ChromeDriver manager" Bidi2pdfRails.logger.info "Shutting down Bidi2pdf #{msg}" session_close @manager&.stop @manager = nil end end |