Module: Jammit
- Defined in:
- lib/jammit.rb,
lib/jammit/routes.rb,
lib/jammit/helper.rb,
lib/jammit/packager.rb,
lib/jammit/controller.rb,
lib/jammit/compressor.rb,
lib/jammit/command_line.rb
Overview
Jammit
is the central namespace for all Jammit classes, and provides access
to all of the configuration options.
Defined Under Namespace
Modules: Helper, Routes Classes: CommandLine, Compressor, ConfigurationNotFound, Controller, JavaNotFound, PackageNotFound, Packager
Constant Summary
- VERSION =
"0.2.6"
- ROOT =
File.(File.dirname(__FILE__) + '/..')
- ASSET_ROOT =
defined?(RAILS_ROOT) ? RAILS_ROOT : "."
- DEFAULT_CONFIG_PATH =
"#{ASSET_ROOT}/config/assets.yml"
- DEFAULT_PACKAGE_PATH =
"assets"
- DEFAULT_JST_SCRIPT =
"#{ROOT}/lib/jammit/jst.js"
- DEFAULT_JST_COMPILER =
"template"
- AVAILABLE_COMPRESSORS =
[:yui, :closure]
- DEFAULT_COMPRESSOR =
:yui
Attribute Summary
- + (Object) compressor_options readonly Returns the value of attribute compressor_options.
- + (Object) configuration readonly Returns the value of attribute configuration.
- + (Object) embed_images readonly Returns the value of attribute embed_images.
- + (Object) include_jst_script readonly Returns the value of attribute include_jst_script.
- + (Object) javascript_compressor readonly Returns the value of attribute javascript_compressor.
- + (Object) mhtml_enabled readonly Returns the value of attribute mhtml_enabled.
- + (Object) package_assets readonly Returns the value of attribute package_assets.
- + (Object) package_path readonly Returns the value of attribute package_path.
- + (Object) template_function readonly Returns the value of attribute template_function.
Method Summary
- + (Object) asset_url(package, extension, suffix = nil, mtime = nil) Generates the server-absolute URL to an asset package.
- + (Object) filename(package, extension, suffix = nil) Generate the base filename for a version of a given package.
-
+ (Object) load_configuration(config_path)
Load the complete asset configuration from the specified
config_path
. -
+ (Object) packager
Keep a global (thread-local) reference to a
Jammit::Packager
, to avoid recomputing asset lists unnecessarily. - + (Object) reload! Force a reload by resetting the Packager and reloading the configuration.
- + (Object) check_java_version private The YUI Compressor requires Java > 1.4, and Closure requires Java > 1.6.
- + (Object) set_javascript_compressor(value) private Ensure that the JavaScript compressor is a valid choice.
- + (Object) set_package_assets(value) private Turn asset packaging on or off, depending on configuration and environment.
- + (Object) set_template_function(value) private Assign the JST template function, unless explicitly turned off.
Attribute Details
+ (Object) compressor_options (readonly)
Returns the value of attribute compressor_options
38 39 40 |
# File 'lib/jammit.rb', line 38 def end |
+ (Object) configuration (readonly)
Returns the value of attribute configuration
38 39 40 |
# File 'lib/jammit.rb', line 38 def configuration @configuration end |
+ (Object) embed_images (readonly)
Returns the value of attribute embed_images
38 39 40 |
# File 'lib/jammit.rb', line 38 def end |
+ (Object) include_jst_script (readonly)
Returns the value of attribute include_jst_script
38 39 40 |
# File 'lib/jammit.rb', line 38 def include_jst_script @include_jst_script end |
+ (Object) javascript_compressor (readonly)
Returns the value of attribute javascript_compressor
38 39 40 |
# File 'lib/jammit.rb', line 38 def javascript_compressor @javascript_compressor end |
+ (Object) mhtml_enabled (readonly)
Returns the value of attribute mhtml_enabled
38 39 40 |
# File 'lib/jammit.rb', line 38 def mhtml_enabled @mhtml_enabled end |
+ (Object) package_assets (readonly)
Returns the value of attribute package_assets
38 39 40 |
# File 'lib/jammit.rb', line 38 def package_assets @package_assets end |
+ (Object) package_path (readonly)
Returns the value of attribute package_path
38 39 40 |
# File 'lib/jammit.rb', line 38 def package_path @package_path end |
+ (Object) template_function (readonly)
Returns the value of attribute template_function
38 39 40 |
# File 'lib/jammit.rb', line 38 def template_function @template_function end |
Method Details
+ (Object) asset_url(package, extension, suffix = nil, mtime = nil)
Generates the server-absolute URL to an asset package.
84 85 86 87 |
# File 'lib/jammit.rb', line 84 def self.asset_url(package, extension, suffix=nil, mtime=nil) = mtime ? "?#{mtime.to_i}" : '' "/#{package_path}/#{filename(package, extension, suffix)}#{timestamp}" end |
+ (Object) filename(package, extension, suffix = nil)
Generate the base filename for a version of a given package.
78 79 80 81 |
# File 'lib/jammit.rb', line 78 def self.filename(package, extension, suffix=nil) suffix_part = suffix ? "-#{suffix}" : '' "#{package}#{suffix_part}.#{extension}" end |
+ (Object) load_configuration(config_path)
Load the complete asset configuration from the specified config_path
.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/jammit.rb', line 48 def self.load_configuration(config_path) conf = config_path && File.exists?(config_path) && YAML.load_file(config_path) raise ConfigurationNotFound, "could not find the \"#{config_path}\" configuration file" unless conf @config_path = config_path @configuration = conf = conf.symbolize_keys @package_path = conf[:package_path] || DEFAULT_PACKAGE_PATH = conf[:embed_images] @mhtml_enabled = && != "datauri" = (conf[:compressor_options] || {}).symbolize_keys set_javascript_compressor(conf[:javascript_compressor]) set_package_assets(conf[:package_assets]) set_template_function(conf[:template_function]) check_java_version self end |
+ (Object) packager
Keep a global (thread-local) reference to a Jammit::Packager
, to avoid
recomputing asset lists unnecessarily.
73 74 75 |
# File 'lib/jammit.rb', line 73 def self.packager Thread.current[:jammit_packager] ||= Packager.new end |
+ (Object) reload!
Force a reload by resetting the Packager and reloading the configuration. In development, this will be called as a before_filter before every request.
66 67 68 69 |
# File 'lib/jammit.rb', line 66 def self.reload! Thread.current[:jammit_packager] = nil load_configuration(@config_path) end |
+ (Object) check_java_version (private)
The YUI Compressor requires Java > 1.4, and Closure requires Java > 1.6.
113 114 115 116 117 118 119 |
# File 'lib/jammit.rb', line 113 def self.check_java_version java = [:java] || 'java' version = (`#{java} -version 2>&1`).match(/\d+\.\d+/)[0] rescue false raise JavaNotFound, "the \"#{java}\" command could not be found" unless version raise JavaNotFound, "the closure compiler requires Java 6 (1.6) or greater" if @javascript_compressor == :closure && version < '1.6' raise JavaNotFound, "the YUI compressor requires Java 1.4 or greater" if @javascript_compressor == :yui && version < '1.4' end |
+ (Object) set_javascript_compressor(value) (private)
Ensure that the JavaScript compressor is a valid choice.
93 94 95 96 |
# File 'lib/jammit.rb', line 93 def self.set_javascript_compressor(value) value = value && value.to_sym @javascript_compressor = AVAILABLE_COMPRESSORS.include?(value) ? value : DEFAULT_COMPRESSOR end |
+ (Object) set_package_assets(value) (private)
Turn asset packaging on or off, depending on configuration and environment.
99 100 101 102 103 |
# File 'lib/jammit.rb', line 99 def self.set_package_assets(value) package_env = !defined?(RAILS_ENV) || RAILS_ENV != 'development' @package_assets = value == true || value.nil? ? package_env : value == 'always' ? true : false end |
+ (Object) set_template_function(value) (private)
Assign the JST template function, unless explicitly turned off.
106 107 108 109 110 |
# File 'lib/jammit.rb', line 106 def self.set_template_function(value) @template_function = value == true || value.nil? ? DEFAULT_JST_COMPILER : value == false ? '' : value @include_jst_script = @template_function == DEFAULT_JST_COMPILER end |