Sha256: e7aef0ccae4bd11c461860d2571771e7b355355735917e6e6aad9d36f94f6138

Contents?: true

Size: 1.72 KB

Versions: 2

Compression:

Stored size: 1.72 KB

Contents

require "guard"
require "guard/guard"
require "guard/livereload"
require "webrick"

module Middleman::Guard
  def self.start(options={}, livereload={})
    options_hash = ""
    options.each do |k,v|
      options_hash << ", :#{k} => '#{v}'"
    end
    
    guardfile_contents = %Q{
      guard 'middleman'#{options_hash} do 
        watch("config.rb")
        watch(%r{^lib/^[^\.](.*)\.rb$})
      end
    }
    
    if livereload
      livereload_options_hash = ""
      livereload.each do |k,v|
        livereload_options_hash << ", :#{k} => '#{v}'"
      end
      
      guardfile_contents << %Q{
        guard 'livereload'#{livereload_options_hash} do 
          watch(%r{^source/^[^\.](.*)$})
        end
      }
    end
    
    ::Guard.start({ :guardfile_contents => guardfile_contents })
  end
end

module Guard
  class Middleman < Guard
    def initialize(watchers = [], options = {})
      super
      @options = {
        :port => '4567'
      }.update(options)
    end
    
    def start
      server_start
    end
  
    def run_on_change(paths)
      server_stop
      server_start
    end

  private
    def server_start
      @server_options = { 
        :Port => @options[:port],
        :Logger => ::WEBrick::Log.new('/dev/null'),
        :AccessLog => ::WEBrick::Log.new('/dev/null')
      }
      @server_job = fork do
        @server_options[:app] = ::Middleman.server.new
        ::Rack::Server.new(@server_options).start
      end

      puts "== The Middleman is standing watch on port #{@options[:port]}"
    end
  
    def server_stop
      puts "== The Middleman is shutting down"
      Process.kill("KILL", @server_job)
      Process.wait @server_job
      @server_job = nil
      @server_options[:app] = nil
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
middleman-2.0.0.rc92 lib/middleman/guard.rb
middleman-2.0.0.rc91 lib/middleman/guard.rb