Module: Pi::Browser::Taskbar::Rails

Defined in:
lib/pi/browser/taskbar/rails.rb,
lib/pi/browser/taskbar/rails/task.rb,
lib/pi/browser/taskbar/rails/broker.rb,
lib/pi/browser/taskbar/rails/engine.rb,
lib/pi/browser/taskbar/rails/version.rb

Defined Under Namespace

Modules: Broker, LayoutHelper Classes: ApiController, ApplicationController, AssetsController, Configuration, Engine, Task

Constant Summary collapse

VERSION =
"0.2.0"

Class Method Summary collapse

Class Method Details

.active?Boolean

Returns:

  • (Boolean)


152
153
154
# File 'lib/pi/browser/taskbar/rails.rb', line 152

def active?
  ::Rails.env.development? && configuration.frozen? && configuration.enabled
end

.allowed_hostsObject



156
157
158
# File 'lib/pi/browser/taskbar/rails.rb', line 156

def allowed_hosts
  configuration.allowed_hosts
end

.broker_clientObject



160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
# File 'lib/pi/browser/taskbar/rails.rb', line 160

def broker_client
  raise "Pi Browser Taskbar is inactive" unless active?
  if @client_mutex_pid != Process.pid
    @client_mutex = Mutex.new
    @client_mutex_pid = Process.pid
  end
  @client_mutex.synchronize do
    @broker_client ||= Broker::Client.new(
      project_root: configuration.project_root,
      executable: configuration.executable,
      task_timeout: configuration.task_timeout
    )
    unless @client_exit_pid == Process.pid
      @client_exit_pid = Process.pid
      at_exit { @broker_client.close if @broker_client.respond_to?(:close) }
    end
    @broker_client
  end
end

.browser_asset_pathObject



136
137
138
# File 'lib/pi/browser/taskbar/rails.rb', line 136

def browser_asset_path
  File.join(__dir__, "rails", "assets", "pi_browser_taskbar.js")
end

.configurationObject



144
145
146
# File 'lib/pi/browser/taskbar/rails.rb', line 144

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



140
141
142
# File 'lib/pi/browser/taskbar/rails.rb', line 140

def configure
  yield configuration
end

.finalize_configuration!(default_project_root:) ⇒ Object



148
149
150
# File 'lib/pi/browser/taskbar/rails.rb', line 148

def finalize_configuration!(default_project_root:)
  configuration.finalize!(default_project_root: default_project_root) unless configuration.frozen?
end

.layout_bootstrap(view, mount: nil) ⇒ Object



180
181
182
183
184
185
186
187
188
189
190
191
# File 'lib/pi/browser/taskbar/rails.rb', line 180

def layout_bootstrap(view, mount: nil)
  return "" unless active?
  mount ||= configuration.mount_path
  escape = ERB::Util.method(:html_escape)
  token = view.form_authenticity_token
  html = [
    %(<link rel="stylesheet" href="#{escape.call(mount)}/assets/pi_browser_taskbar.css">),
    %(<div data-pi-browser-taskbar-bootstrap data-mount-base="#{escape.call(mount)}" data-contract-version="1" data-csrf-token="#{escape.call(token)}" data-remote-access="#{!allowed_hosts.empty?}"></div>),
    %(<script type="module" src="#{escape.call(mount)}/assets/pi_browser_taskbar.js"></script>)
  ].join
  html.respond_to?(:html_safe) ? html.html_safe : html
end