Class: Sprockets::Environment
Instance Attribute Summary
Attributes inherited from Base
#cache, #context_class, #default_external_encoding, #digest_class, #logger, #version
Instance Method Summary collapse
-
#find_asset(path, options = {}) ⇒ Object
Cache
find_assetcalls. -
#index ⇒ Object
Returns a cached version of the environment.
-
#initialize(root = ".") {|_self| ... } ⇒ Environment
constructor
Environmentshould initialized with your application’s root directory.
Methods inherited from Base
#[], #attributes_for, #content_type_of, #digest, #each_entry, #each_file, #each_logical_path, #entries, #file_digest, #inspect, #stat
Methods included from Caching
Methods included from Processing
#bundle_processors, #css_compressor, #css_compressor=, #format_extensions, #js_compressor, #js_compressor=, #postprocessors, #preprocessors, #processors, #register_bundle_processor, #register_engine, #register_mime_type, #register_postprocessor, #register_preprocessor, #register_processor, #unregister_bundle_processor, #unregister_postprocessor, #unregister_preprocessor, #unregister_processor
Methods included from Engines
#engine_extensions, #engines, #register_engine
Methods included from Mime
#encoding_for_mime_type, #extension_for_mime_type, #mime_types, #register_mime_type
Methods included from Server
Methods included from Trail
#append_path, #clear_paths, #extensions, #paths, #prepend_path, #resolve, #root
Constructor Details
#initialize(root = ".") {|_self| ... } ⇒ Environment
Environment should initialized with your application’s root directory. This should be the same as your Rails or Rack root.
env = Environment.new(Rails.root)
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/sprockets/environment.rb', line 20 def initialize(root = ".") @trail = Hike::Trail.new(root) self.logger = Logger.new($stderr) self.logger.level = Logger::FATAL if respond_to?(:default_external_encoding) self.default_external_encoding = Encoding::UTF_8 end # Create a safe `Context` subclass to mutate @context_class = Class.new(Context) # Set MD5 as the default digest require 'digest/md5' @digest_class = ::Digest::MD5 @version = '' @mime_types = {} @engines = Sprockets.engines @preprocessors = Hash.new { |h, k| h[k] = [] } @postprocessors = Hash.new { |h, k| h[k] = [] } @bundle_processors = Hash.new { |h, k| h[k] = [] } @engines.each do |ext, klass| add_engine_to_trail(ext, klass) end register_mime_type 'text/css', '.css' register_mime_type 'application/javascript', '.js' register_preprocessor 'text/css', DirectiveProcessor register_preprocessor 'application/javascript', DirectiveProcessor register_postprocessor 'application/javascript', SafetyColons register_bundle_processor 'text/css', CharsetNormalizer expire_index! yield self if block_given? end |
Instance Method Details
#find_asset(path, options = {}) ⇒ Object
Cache find_asset calls
72 73 74 75 76 77 78 79 80 81 82 |
# File 'lib/sprockets/environment.rb', line 72 def find_asset(path, = {}) [:bundle] = true unless .key?(:bundle) # Ensure inmemory cached assets are still fresh on every lookup if (asset = @assets[cache_key_for(path, )]) && asset.fresh?(self) asset elsif asset = index.find_asset(path, ) # Cache is pushed upstream by Index#find_asset asset end end |
#index ⇒ Object
Returns a cached version of the environment.
All its file system calls are cached which makes index much faster. This behavior is ideal in production since the file system only changes between deploys.
67 68 69 |
# File 'lib/sprockets/environment.rb', line 67 def index Index.new(self) end |