Sha256: 1e7272425541b44e80e6cec069a1a5014a9514bc4e53d60f51a4a5bd83cc82bd

Contents?: true

Size: 1.66 KB

Versions: 3

Compression:

Stored size: 1.66 KB

Contents

module Stylish
  module Developer
    class Environment

      def self.start options={}, &block
          reloader = new(options)
          yield(reloader) if block_given?
          reloader.start()
          Spawnling.wait(reloader.spawns)
      end

      attr_reader :spawns, :options, :logger

      def start
        @spawns = []

        @spawns << Spawnling.new { start_library_server() }
        @spawns << Spawnling.new { start_watcher_service() }
        #@spawns << Spawnling.new { start_push_service() }
      end

      protected

      attr_accessor :options

      def initialize(options={})
        @options = options
        @logger = options[:logger]
        @logger ||= Logger.new(STDOUT)

        if options[:library_root]
          Stylish::Developer.config.library_root = Pathname(options[:library_root])
        end

        puts "Starting at #{ root }"
      end

      def root
        options[:root] || Stylish::Developer::Server.root || Dir.pwd()
      end

      def puts val
        @logger && @logger.info(val)
      end

      def on_file_change *args
        #modified, added, removed = args
        #puts(args.inspect)
      end

      def start_library_server
        Rack::Server.start(:app => Stylish::Developer::Server, :Port => "8090")
      end

      def start_watcher_service
        reload = self

        begin
          @watcher = Listen.to(root) {|*args| puts args; reload.send(:on_file_change, *args) }
          @watcher.start()
          sleep
        rescue => e
          puts e.message
        end
      end

      def start_push_service
        10.times do |n|
          puts("push #{n}")
          sleep 1
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
stylish-0.3.1 lib/stylish/developer/environment.rb
stylish-0.3.0 lib/stylish/developer/environment.rb
stylish-0.0.2 lib/stylish/developer/environment.rb