class Pieces::Server

Attributes

config[R]

Public Class Methods

new(config) click to toggle source
Calls superclass method
# File lib/pieces/server.rb, line 12
def initialize(config)
  @config = config
  super({})
end
start(config = {}) click to toggle source
# File lib/pieces/server.rb, line 6
def self.start(config = {})
  new(Config.new(config)).start
end

Public Instance Methods

app() click to toggle source
# File lib/pieces/server.rb, line 38
def app
  urls = files_to_serve(config.path)
  build_path = "#{config.path}/build"
  assets_app = sprockets_env
  config.env = sprockets_env
  app = App.new(config)

  Rack::Builder.app do
    use Rack::Reloader
    map('/assets') { run assets_app }
    run app
  end
end
sprockets_env() click to toggle source
# File lib/pieces/server.rb, line 17
def sprockets_env
  Sprockets::Environment.new(config.path).tap do |env|
    env.append_path 'app/assets/javascripts'
    env.append_path 'app/assets/stylesheets'
    env.append_path 'vendor/assets/stylesheets'
    env.append_path 'vendor/assets/javascripts'
    env.append_path 'app/assets'
    env.append_path 'app/views'
    env.append_path 'app/views'

    if defined? ::Sass
      ::Sass.load_paths.each { |path| env.append_path(path) }
      env.css_compressor = :scss
    end

    if defined? ::Uglifier
      env.js_compressor = :uglify
    end
  end
end

Private Instance Methods

files_to_serve(path) click to toggle source
# File lib/pieces/server.rb, line 54
def files_to_serve(path)
  Dir["#{config.path}/build/**/*"].map { |file| file.sub("#{config.path}/build", '') }
end