diff --git a/guard-rails-assets.gemspec b/guard-rails-assets.gemspec index a9383d3..105b67f 100644 --- a/guard-rails-assets.gemspec +++ b/guard-rails-assets.gemspec @@ -15,7 +15,7 @@ Gem::Specification.new do |s| s.add_dependency 'guard' s.add_dependency 'rake' - s.add_dependency 'rails', '>= 3.1.1.rc2' + s.add_dependency 'rails', '>= 3.1.1' s.add_development_dependency 'rspec' s.files = `git ls-files`.split("\n") diff --git a/lib/guard/rails-assets/rails_runner.rb b/lib/guard/rails-assets/rails_runner.rb index 3586894..1311252 100644 --- a/lib/guard/rails-assets/rails_runner.rb +++ b/lib/guard/rails-assets/rails_runner.rb @@ -6,9 +6,11 @@ module Guard @@rails_booted = false # Only one rails app is allowed, so make it a class var @@rails_env = nil + @@digest = nil def initialize(options={}) @@rails_env = (options[:rails_env] || 'test').to_s unless @@rails_booted + @@digest = options[:digest] end def self.apply_hacks @@ -35,39 +37,32 @@ module Guard end - def clean - Rake::Task["tmp:cache:clear"].execute - # copy from the "assets:clean" Rake task - config = ::Rails.application.config - public_asset_path = File.join(Rails.public_path, config.assets.prefix) - rm_rf public_asset_path, :secure => true - end - def precompile - # copy from the "assets:precompile" Rake task + config = Rails.application.config + unless config.assets.enabled + warn "Cannot precompile assets if sprockets is disabled. Enabling it." + config.assets.enabled = true + end - # Ensure that action view is loaded and the appropriate sprockets hooks get executed - ActionView::Base + # Ensure that action view is loaded and the appropriate + # sprockets hooks get executed + _ = ActionView::Base + + digest = @@digest.nil? ? config.assets.digest : @@digest - config = ::Rails.application.config - config.assets.compile = true - - env = ::Rails.application.assets - - # Always compile files and avoid use of existing precompiled assets config.assets.compile = true + config.assets.digest = digest config.assets.digests = {} - target = File.join(::Rails.public_path, config.assets.prefix) - static_compiler = Sprockets::StaticCompiler.new(env, target, :digest => config.assets.digest) - - manifest = static_compiler.precompile(config.assets.precompile) - manifest_path = config.assets.manifest || target - FileUtils.mkdir_p(manifest_path) - - File.open("#{manifest_path}/manifest.yml", 'wb') do |f| - YAML.dump(manifest, f) - end + env = Rails.application.assets + target = File.join(Rails.public_path, config.assets.prefix) + compiler = Sprockets::StaticCompiler.new(env, + target, + config.assets.precompile, + :manifest_path => config.assets.manifest, + :digest => config.assets.digest, + :manifest => config.assets.digest.nil?) + compiler.compile end @@ -78,7 +73,6 @@ module Guard self.class.boot_rails return false unless @@rails_booted begin - clean precompile true rescue => e diff --git a/lib/guard/version.rb b/lib/guard/version.rb index e98e36f..1a40650 100644 --- a/lib/guard/version.rb +++ b/lib/guard/version.rb @@ -1,5 +1,5 @@ module Guard module RailsAssetsVersion - VERSION = "0.0.9" + VERSION = "0.1.0" end end