class Guard::RailsAssets::RailsRunner
Attributes
digest[RW]
rails_booted[R]
rails_env[RW]
Public Class Methods
apply_hacks()
click to toggle source
# File lib/guard/rails-assets/rails_runner.rb, line 22 def self.apply_hacks # TODO: Hack due to Rails 3.1 issue: https://github.com/rails/rails/issues/2663#issuecomment-1990121 ENV['RAILS_GROUPS'] ||= 'assets' ENV['RAILS_ENV'] ||= rails_env end
boot_rails()
click to toggle source
Methods to run the asset pipeline See as a reference github.com/rails/rails/blob/master/actionpack/lib/sprockets/assets.rake
# File lib/guard/rails-assets/rails_runner.rb, line 30 def self.boot_rails return if @rails_booted puts "Booting Rails for #{rails_env} environment." require 'fileutils' apply_hacks require 'rake' require "#{Dir.pwd}/config/environment.rb" app = ::Rails.application app.assets.cache = nil # don't touch my FS pls. (can we use `app.config.assets.cache_store = false` instead)? app.load_tasks @rails_booted = true end
new(options = {})
click to toggle source
# File lib/guard/rails-assets/rails_runner.rb, line 17 def initialize(options = {}) self.class.rails_env = (options[:rails_env] || 'test').to_s unless self.class.rails_booted self.class.digest = options[:digest] end
Public Instance Methods
clean()
click to toggle source
# File lib/guard/rails-assets/rails_runner.rb, line 45 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
compile_assets()
click to toggle source
Runs the asset pipeline compiler.
@return [ Boolean ] Whether the compilation was successful or not
# File lib/guard/rails-assets/rails_runner.rb, line 84 def compile_assets self.class.boot_rails return false unless self.class.rails_booted begin clean precompile true rescue => e puts "An error occurred compiling assets: #{e}" false ensure ::Rails.application.assets.instance_eval { expire_index! } end end
precompile()
click to toggle source
# File lib/guard/rails-assets/rails_runner.rb, line 53 def precompile 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 digest = self.class.digest.nil? ? config.assets.digest : self.class.digest config.assets.compile = true config.assets.digest = digest config.assets.digests = {} 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