rake autospec should handle css file watching and reloading, guard is a bit pear shape at the moment

This commit is contained in:
Sam 2013-07-10 12:16:56 +10:00
parent 7977deb3bf
commit db196ee126
2 changed files with 48 additions and 0 deletions

View File

@ -0,0 +1,40 @@
module Autospec; end
class Autospec::ReloadCss
MATCHERS = {}
def self.watch(pattern, &blk)
MATCHERS[pattern] = blk
end
watch(/tmp\/refresh_browser/)
watch(/\.css$/)
watch(/\.css\.erb$/)
watch(/\.sass$/)
watch(/\.scss$/)
watch(/\.sass\.erb$/)
watch(/\.handlebars$/)
def self.message_bus
MessageBus::Instance.new.tap do |bus|
bus.site_id_lookup do
# this is going to be dev the majority of the time, if you have multisite configured in dev stuff may be different
"default"
end
end
end
def self.run_on_change(paths)
paths.map! do |p|
hash = nil
fullpath = Rails.root.to_s + "/" + p
hash = Digest::MD5.hexdigest(File.read(fullpath)) if File.exists? fullpath
p = p.sub /\.sass\.erb/, ""
p = p.sub /\.sass/, ""
p = p.sub /\.scss/, ""
p = p.sub /^app\/assets\/stylesheets/, "assets"
{name: p, hash: hash}
end
message_bus.publish "/file-change", paths
end
end

View File

@ -1,6 +1,7 @@
require "drb/drb"
require "thread"
require "fileutils"
require "autospec/reload_css"
module Autospec; end
@ -183,6 +184,13 @@ class Autospec::Runner
end
end
end
Autospec::ReloadCss::MATCHERS.each do |k,v|
matches = []
if k.match(file)
matches << file
end
Autospec::ReloadCss.run_on_change(matches) if matches.present?
end
end
queue_specs(specs) if hit
rescue => e