Class: Webby::AutoBuilder
- Inherits:
-
Object
- Object
- Webby::AutoBuilder
- Defined in:
- lib/webby/auto_builder.rb
Overview
The AutoBuilder class is used to monitor the content and layouts folders and to compile the resource files only when they are modified. If a layout is modified, then all resources that depend upon the layout are compiled.
Defined Under Namespace
Classes: WebServer
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Class Method Summary collapse
-
.run ⇒ Object
call-seq: AutoBuilder.run.
Instance Method Summary collapse
-
#initialize ⇒ AutoBuilder
constructor
call-seq: AutoBuilder.new.
-
#run ⇒ Object
call-seq: run.
-
#update(*events) ⇒ Object
call-seq: update( *events ).
Constructor Details
#initialize ⇒ AutoBuilder
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/webby/auto_builder.rb', line 33 def initialize @logger = Logging::Logger[self] @builder = Builder.new ::Webby.load_files @watcher = DirectoryWatcher.new '.', :interval => 2 @watcher.add_observer self glob = [] glob << File.join(::Webby.site.layout_dir, '**', '*') glob << File.join(::Webby.site.content_dir, '**', '*') @watcher.glob = glob @web_server = ::Webby.site.use_web_server ? WebServer.new : nil end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
26 27 28 |
# File 'lib/webby/auto_builder.rb', line 26 def logger @logger end |
Class Method Details
.run ⇒ Object
call-seq:
AutoBuilder.run
Creates a new AutoBuilder and sets it running. This method will only return when the user presses Ctrl-C.
22 23 24 |
# File 'lib/webby/auto_builder.rb', line 22 def self.run self.new.run end |
Instance Method Details
#run ⇒ Object
call-seq:
run
Starts the DirectoryWatcher running and waits till the user presses Ctrl-C to stop the watcher thread.
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 |
# File 'lib/webby/auto_builder.rb', line 80 def run logger.info 'starting autobuild (Ctrl-C to stop)' Signal.trap('INT') { @watcher.stop @web_server.stop if @web_server } @watcher.start if @web_server @web_server.start sleep 0.25 Launchy.open("http://localhost:#{::Webby.site.web_port}") end @watcher.join @web_server.join if @web_server end |
#update(*events) ⇒ Object
call-seq:
update( *events )
The update method is called by the DirectoryWatcher when files have been modified, added, or deleted. An array of events is passed to his method, and each event contains the event type and the path to the file.
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/webby/auto_builder.rb', line 57 def update( *events ) ary = events.find_all {|evt| evt.type != :removed} return if ary.empty? ary.each do |evt| logger.debug "changed #{evt.path}" next unless test ?f, evt.path next if evt.path =~ ::Webby.exclude Resources.new evt.path end logger.info 'running the build' @builder.run :load_files => false, :verbose => false rescue => err logger.error err end |