Sha256: 4a461ebe0efad00416e0329004e3638f081b4d79ff5a2227deee31ff89855bf3

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

module Inesita
  module Server
    SOURCE_MAP_PREFIX = '/__OPAL_MAPS__'

    module_function

    def assets
      Sprockets::Environment.new.tap do |s|
        # register engines
        s.register_engine '.slim', Slim::Template
        s.register_engine '.rb', Opal::Processor

        # add folders
        s.append_path 'app'

        # add paths from opal
        Opal.paths.each do |p|
          s.append_path p
        end

        # add paths from rails-assets
        RailsAssets.load_paths.each do |p|
          s.append_path p
        end

        s.context_class.class_eval do
          def asset_path(path, options = {})
            "#{path}"
          end
        end
      end
    end

    def set_global_vars(assets, debug = false)
      $LOAD_ASSETS_CODE = Opal::Processor.load_asset_code(assets, 'application.js')
      if debug
        $SCRIPT_FILES = (assets['application.js'].dependencies + [assets['application.self.js']]).map(&:logical_path)
      end
    end

    def source_maps(sprockets)
      ::Opal::Sprockets::SourceMapHeaderPatch.inject!(SOURCE_MAP_PREFIX)
      Opal::SourceMapServer.new(sprockets, SOURCE_MAP_PREFIX)
    end

    def create
      assets_app = assets
      source_maps_app = source_maps(assets_app)
      set_global_vars(assets_app, true)

      Rack::Builder.new do
        map '/' do
          run assets_app
        end

        map SOURCE_MAP_PREFIX do
          run source_maps_app
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
inesita-0.0.4 lib/inesita/server.rb