Sha256: 18a50fa54956c4a0bc1e56e186891fe945e2c0deb4281cb91671bce16279664e
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
require 'rack' require 'listen' require 'sprockets' require 'pieces/listener' module Pieces class Server < Rack::Server def self.start(config = {}) new(Config.new(config)).start end attr_reader :config def initialize(config) @config = config super({}) end def start Pieces::Listener.new(config).listen super end 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 'app/views' end end def app urls = files_to_serve(config.path) build_path = "#{config.path}/build" assets_app = sprockets_env Rack::Builder.app do use Rack::Reloader use Rack::Static, urls: [''], root: build_path, index: 'index.html' map('/assets') { run assets_app } unless defined? ::Rails run Proc.new { |env| [404, {}, ['Not found']] } end end private def files_to_serve(path) Dir["#{config.path}/build/**/*"].map { |file| file.sub("#{config.path}/build", '') } end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pieces-0.5.0 | lib/pieces/server.rb |