41 lines
985 B
Ruby
41 lines
985 B
Ruby
|
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
|