Skip to content

Instantly share code, notes, and snippets.

@ssut
Created April 22, 2014 16:07
Show Gist options
  • Save ssut/11184975 to your computer and use it in GitHub Desktop.
Save ssut/11184975 to your computer and use it in GitHub Desktop.
puma on_worker_boot
on_worker_boot do
request_thread_count = Puma.cli_config.options[:max_threads]
Sidekiq.configure_client do |cfg|
cfg.redis = ConnectionPool.new(:size => 10, :timeout => 3) { Redis.connect }
end
cmdline = `cat /proc/#{$$}/cmdline`
# compress assets
# reference: app.rb - L:97
if Puma.cli_config.options[:environment] == 'production' and cmdline.include? 'worker 0'
require 'less'
require 'uglifier'
puts '[compress] starting compress assets ..'
compile_proc = -> (file) {
content = File.read(file)
if file.include? '.less'
less_dir = File.join(pub, 'static', 'css')
parser = Less::Parser.new(paths: [ less_dir ])
parser.parse(content).to_css(compress: true).gsub(/\r|\n/, '')
elsif file.include? '.js'
Uglifier.compile(content)
else
content
end
}
less_dir = File.join(pub, 'static', 'css')
pipe_dir = File.join(pub, 'static', 'assets', 'pipe')
js_dir = File.join(pub, 'static', 'js')
less_files = %w(saucer.less bootstrap.css).map { |f| "#{less_dir}/#{f}" }
less_ja_files = %w(saucer.less saucer-ja.less bootstrap.css).map { |f| "#{less_dir}/#{f}" }
js_files = %w(jquery.min.js jquery.lazy.min.js jquery.powertip.min.js moment.min.js ubitinfo.js).map { |f| "#{js_dir}/#{f}" }
less_compiled = File.join(pipe_dir, 'stylesheet.css')
less_ja_compiled = File.join(pipe_dir, 'stylesheet-ja.css')
js_compiled = File.join(pipe_dir, 'javascript.js')
_less = ''
_less_ja = ''
_js = ''
less_files.each { |f| _less << compile_proc.call(f) }
less_ja_files.each { |f| _less_ja << compile_proc.call(f) }
js_files.each { |f| _js << compile_proc.call(f) }
File.open(less_compiled, 'w') { |f| f.write _less }
File.open(less_ja_compiled, 'w') { |f| f.write _less_ja }
File.open(js_compiled, 'w') { |f| f.write _js }
puts '[compress] done.'
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment