class Pieces::Builder
Public Class Methods
build(config = {})
click to toggle source
# File lib/pieces/builder.rb, line 7 def self.build(config = {}) new(Config.new(config)).build end
new(config)
click to toggle source
Calls superclass method
Pieces::Configurable::new
# File lib/pieces/builder.rb, line 13 def initialize(config) super config.env = env end
Public Instance Methods
build()
click to toggle source
# File lib/pieces/builder.rb, line 18 def build save_files(build_routes(build_assets)) end
Private Instance Methods
build_assets(files = {})
click to toggle source
# File lib/pieces/builder.rb, line 32 def build_assets(files = {}) if env['manifest.js'] manifest.find('manifest.js').reduce(files) do |files, file| files.merge("assets/#{file.logical_path}" => { type: file.content_type, contents: file }) end else files.merge('assets/pieces.css' => { type: 'text/css', contents: env['pieces.css'] }, 'assets/pieces.js' => { type: 'application/js', contents: env['pieces.js'] }) end end
build_routes(files = {})
click to toggle source
# File lib/pieces/builder.rb, line 43 def build_routes(files = {}) route_compiler = RouteCompiler.new(config) config.routes.reduce(files) do |files, (name, route)| route_compiler.compile(files, name, route) end end
env()
click to toggle source
# File lib/pieces/builder.rb, line 24 def env @env ||= Server.new(config).sprockets_env end
manifest()
click to toggle source
# File lib/pieces/builder.rb, line 28 def manifest @manifest ||= Sprockets::Manifest.new(env, 'build/assets') end
save_file(name, file)
click to toggle source
# File lib/pieces/builder.rb, line 59 def save_file(name, file) FileUtils.mkdir_p(File.dirname("build/#{name}")) File.open("build/#{name}", 'w') { |f| f.write(file[:contents]) } end
save_files(files)
click to toggle source
# File lib/pieces/builder.rb, line 51 def save_files(files) Dir.chdir(config.path) do files.each do |name, file| save_file(name, file) end end end