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.1.0"
Class Method Summary
collapse
Class Method Details
.active? ⇒ Boolean
150
151
152
|
# File 'lib/pi/browser/taskbar/rails.rb', line 150
def active?
::Rails.env.development? && configuration.frozen? && configuration.enabled
end
|
.allowed_hosts ⇒ Object
154
155
156
|
# File 'lib/pi/browser/taskbar/rails.rb', line 154
def allowed_hosts
configuration.allowed_hosts
end
|
.broker_client ⇒ Object
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# File 'lib/pi/browser/taskbar/rails.rb', line 158
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_path ⇒ Object
134
135
136
|
# File 'lib/pi/browser/taskbar/rails.rb', line 134
def browser_asset_path
File.join(__dir__, "rails", "assets", "pi_browser_taskbar.js")
end
|
.configuration ⇒ Object
142
143
144
|
# File 'lib/pi/browser/taskbar/rails.rb', line 142
def configuration
@configuration ||= Configuration.new
end
|
138
139
140
|
# File 'lib/pi/browser/taskbar/rails.rb', line 138
def configure
yield configuration
end
|
.finalize_configuration!(default_project_root:) ⇒ Object
146
147
148
|
# File 'lib/pi/browser/taskbar/rails.rb', line 146
def finalize_configuration!(default_project_root:)
configuration.finalize!(default_project_root: default_project_root) unless configuration.frozen?
end
|
.layout_bootstrap(view, mount: nil) ⇒ Object
178
179
180
181
182
183
184
185
186
187
188
189
|
# File 'lib/pi/browser/taskbar/rails.rb', line 178
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
|