Module: Jammit
- Defined in:
- lib/jammit.rb,
lib/jammit/helper.rb,
lib/jammit/routes.rb,
lib/jammit/railtie.rb,
lib/jammit/packager.rb,
lib/jammit/compressor.rb,
lib/jammit/controller.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, Controller, DeprecationError, MissingConfiguration, OutputNotWritable, PackageNotFound, Packager, Railtie, SassCompressor, Uglifier
Constant Summary collapse
- VERSION =
"0.6.3"
- ROOT =
File.(File.dirname(__FILE__) + '/..')
- ASSET_ROOT =
File.((defined?(Rails) && Rails.root.to_s.length > 0) ? Rails.root : ENV['RAILS_ROOT'] || ".")
- DEFAULT_PUBLIC_ROOT =
(Rails) && Rails.public_path.to_s.length > 0) ? Rails.public_path : File.join(ASSET_ROOT, 'public')
- DEFAULT_CONFIG_PATH =
File.join(ASSET_ROOT, 'config', 'assets.yml')
- DEFAULT_PACKAGE_PATH =
"assets"
- DEFAULT_JST_SCRIPT =
File.join(ROOT, 'lib/jammit/jst.js')
- DEFAULT_JST_COMPILER =
"template"
- DEFAULT_JST_NAMESPACE =
"window.JST"
- JAVASCRIPT_COMPRESSORS =
[:yui, :closure, :uglifier]
- DEFAULT_JAVASCRIPT_COMPRESSOR =
:yui
- CSS_COMPRESSORS =
[:yui, :sass]
- DEFAULT_CSS_COMPRESSOR =
:yui
- JS_EXTENSION =
Extension matchers for JavaScript and JST, which need to be disambiguated.
/\.js\Z/
- DEFAULT_JST_EXTENSION =
"jst"
Class Attribute Summary collapse
-
.allow_debugging ⇒ Object
readonly
Returns the value of attribute allow_debugging.
-
.compress_assets ⇒ Object
readonly
Returns the value of attribute compress_assets.
-
.compress_css ⇒ Object
readonly
Returns the value of attribute compress_css.
-
.compressor_options ⇒ Object
readonly
Returns the value of attribute compressor_options.
-
.config_path ⇒ Object
readonly
Returns the value of attribute config_path.
-
.configuration ⇒ Object
readonly
Returns the value of attribute configuration.
-
.css_compressor ⇒ Object
readonly
Returns the value of attribute css_compressor.
-
.css_compressor_options ⇒ Object
readonly
Returns the value of attribute css_compressor_options.
-
.css_compressors ⇒ Object
Returns the value of attribute css_compressors.
-
.embed_assets ⇒ Object
readonly
Returns the value of attribute embed_assets.
-
.gzip_assets ⇒ Object
readonly
Returns the value of attribute gzip_assets.
-
.include_jst_script ⇒ Object
readonly
Returns the value of attribute include_jst_script.
-
.javascript_compressor ⇒ Object
readonly
Returns the value of attribute javascript_compressor.
-
.javascript_compressors ⇒ Object
Returns the value of attribute javascript_compressors.
-
.mhtml_enabled ⇒ Object
readonly
Returns the value of attribute mhtml_enabled.
-
.package_assets ⇒ Object
readonly
Returns the value of attribute package_assets.
-
.package_path ⇒ Object
readonly
Returns the value of attribute package_path.
-
.public_root ⇒ Object
readonly
Returns the value of attribute public_root.
-
.template_extension ⇒ Object
readonly
Returns the value of attribute template_extension.
-
.template_extension_matcher ⇒ Object
readonly
Returns the value of attribute template_extension_matcher.
-
.template_function ⇒ Object
readonly
Returns the value of attribute template_function.
-
.template_namespace ⇒ Object
readonly
Returns the value of attribute template_namespace.
Class Method Summary collapse
-
.asset_url(package, extension, suffix = nil, mtime = nil) ⇒ Object
Generates the server-absolute URL to an asset package.
-
.filename(package, extension, suffix = nil) ⇒ Object
Generate the base filename for a version of a given package.
-
.load_configuration(config_path, soft = false) ⇒ Object
Load the complete asset configuration from the specified @config_path@.
-
.package!(options = {}) ⇒ Object
Convenience method for packaging up Jammit, using the default options.
-
.packager ⇒ Object
Keep a global (thread-local) reference to a @Jammit::Packager@, to avoid recomputing asset lists unnecessarily.
-
.reload! ⇒ Object
Force a reload by resetting the Packager and reloading the configuration.
Class Attribute Details
.allow_debugging ⇒ Object (readonly)
Returns the value of attribute allow_debugging.
54 55 56 |
# File 'lib/jammit.rb', line 54 def allow_debugging @allow_debugging end |
.compress_assets ⇒ Object (readonly)
Returns the value of attribute compress_assets.
54 55 56 |
# File 'lib/jammit.rb', line 54 def compress_assets @compress_assets end |
.compress_css ⇒ Object (readonly)
Returns the value of attribute compress_css.
54 55 56 |
# File 'lib/jammit.rb', line 54 def compress_css @compress_css end |
.compressor_options ⇒ Object (readonly)
Returns the value of attribute compressor_options.
54 55 56 |
# File 'lib/jammit.rb', line 54 def @compressor_options end |
.config_path ⇒ Object (readonly)
Returns the value of attribute config_path.
54 55 56 |
# File 'lib/jammit.rb', line 54 def config_path @config_path end |
.configuration ⇒ Object (readonly)
Returns the value of attribute configuration.
54 55 56 |
# File 'lib/jammit.rb', line 54 def configuration @configuration end |
.css_compressor ⇒ Object (readonly)
Returns the value of attribute css_compressor.
54 55 56 |
# File 'lib/jammit.rb', line 54 def css_compressor @css_compressor end |
.css_compressor_options ⇒ Object (readonly)
Returns the value of attribute css_compressor_options.
54 55 56 |
# File 'lib/jammit.rb', line 54 def @css_compressor_options end |
.css_compressors ⇒ Object
Returns the value of attribute css_compressors.
63 64 65 |
# File 'lib/jammit.rb', line 63 def css_compressors @css_compressors end |
.embed_assets ⇒ Object (readonly)
Returns the value of attribute embed_assets.
54 55 56 |
# File 'lib/jammit.rb', line 54 def @embed_assets end |
.gzip_assets ⇒ Object (readonly)
Returns the value of attribute gzip_assets.
54 55 56 |
# File 'lib/jammit.rb', line 54 def gzip_assets @gzip_assets end |
.include_jst_script ⇒ Object (readonly)
Returns the value of attribute include_jst_script.
54 55 56 |
# File 'lib/jammit.rb', line 54 def include_jst_script @include_jst_script end |
.javascript_compressor ⇒ Object (readonly)
Returns the value of attribute javascript_compressor.
54 55 56 |
# File 'lib/jammit.rb', line 54 def javascript_compressor @javascript_compressor end |
.javascript_compressors ⇒ Object
Returns the value of attribute javascript_compressors.
62 63 64 |
# File 'lib/jammit.rb', line 62 def javascript_compressors @javascript_compressors end |
.mhtml_enabled ⇒ Object (readonly)
Returns the value of attribute mhtml_enabled.
54 55 56 |
# File 'lib/jammit.rb', line 54 def mhtml_enabled @mhtml_enabled end |
.package_assets ⇒ Object (readonly)
Returns the value of attribute package_assets.
54 55 56 |
# File 'lib/jammit.rb', line 54 def package_assets @package_assets end |
.package_path ⇒ Object (readonly)
Returns the value of attribute package_path.
54 55 56 |
# File 'lib/jammit.rb', line 54 def package_path @package_path end |
.public_root ⇒ Object (readonly)
Returns the value of attribute public_root.
54 55 56 |
# File 'lib/jammit.rb', line 54 def public_root @public_root end |
.template_extension ⇒ Object (readonly)
Returns the value of attribute template_extension.
54 55 56 |
# File 'lib/jammit.rb', line 54 def template_extension @template_extension end |
.template_extension_matcher ⇒ Object (readonly)
Returns the value of attribute template_extension_matcher.
54 55 56 |
# File 'lib/jammit.rb', line 54 def template_extension_matcher @template_extension_matcher end |
.template_function ⇒ Object (readonly)
Returns the value of attribute template_function.
54 55 56 |
# File 'lib/jammit.rb', line 54 def template_function @template_function end |
.template_namespace ⇒ Object (readonly)
Returns the value of attribute template_namespace.
54 55 56 |
# File 'lib/jammit.rb', line 54 def template_namespace @template_namespace end |
Class Method Details
.asset_url(package, extension, suffix = nil, mtime = nil) ⇒ Object
Generates the server-absolute URL to an asset package.
129 130 131 132 |
# File 'lib/jammit.rb', line 129 def self.asset_url(package, extension, suffix=nil, mtime=nil) = mtime ? "?#{mtime.to_i}" : '' "/#{package_path}/#{filename(package, extension, suffix)}#{}" end |
.filename(package, extension, suffix = nil) ⇒ Object
Generate the base filename for a version of a given package.
123 124 125 126 |
# File 'lib/jammit.rb', line 123 def self.filename(package, extension, suffix=nil) suffix_part = suffix ? "-#{suffix}" : '' "#{package}#{suffix_part}.#{extension}" end |
.load_configuration(config_path, soft = false) ⇒ Object
Load the complete asset configuration from the specified @config_path@. If we’re loading softly, don’t let missing configuration error out.
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/jammit.rb', line 75 def self.load_configuration(config_path, soft=false) exists = config_path && File.exists?(config_path) return false if soft && !exists raise MissingConfiguration, "could not find the \"#{config_path}\" configuration file" unless exists conf = YAML.load(ERB.new(File.read(config_path)).result) # Optionally overwrite configuration based on the environment. rails_env = defined?(Rails) ? Rails.env : ENV['RAILS_ENV'] conf.merge! conf.delete rails_env if conf.has_key? rails_env @config_path = config_path @configuration = symbolize_keys(conf) @package_path = conf[:package_path] || DEFAULT_PACKAGE_PATH @embed_assets = conf[:embed_assets] || conf[:embed_images] @compress_assets = !(conf[:compress_assets] == false) @compress_css = conf[:compress_css].nil? ? @compress_assets : !(conf[:compress_css] == false) @gzip_assets = !(conf[:gzip_assets] == false) @allow_debugging = !(conf[:allow_debugging] == false) @mhtml_enabled = @embed_assets && @embed_assets != "datauri" @compressor_options = symbolize_keys(conf[:compressor_options] || {}) @css_compressor_options = symbolize_keys(conf[:css_compressor_options] || {}) set_javascript_compressor(conf[:javascript_compressor]) set_css_compressor(conf[:css_compressor]) set_package_assets(conf[:package_assets]) set_template_function(conf[:template_function]) set_template_namespace(conf[:template_namespace]) set_template_extension(conf[:template_extension]) set_public_root(conf[:public_root]) if conf[:public_root] symbolize_keys(conf[:stylesheets]) if conf[:stylesheets] symbolize_keys(conf[:javascripts]) if conf[:javascripts] check_for_deprecations self end |
.package!(options = {}) ⇒ Object
Convenience method for packaging up Jammit, using the default options.
135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/jammit.rb', line 135 def self.package!(={}) = { :config_path => Jammit::DEFAULT_CONFIG_PATH, :output_folder => nil, :base_url => nil, :public_root => nil, :force => false }.merge() load_configuration([:config_path]) set_public_root([:public_root]) if [:public_root] packager.force = [:force] packager.package_names = [:package_names] packager.precache_all([:output_folder], [:base_url]) end |
.packager ⇒ Object
Keep a global (thread-local) reference to a @Jammit::Packager@, to avoid recomputing asset lists unnecessarily.
118 119 120 |
# File 'lib/jammit.rb', line 118 def self.packager Thread.current[:jammit_packager] ||= Packager.new end |
.reload! ⇒ Object
Force a reload by resetting the Packager and reloading the configuration. In development, this will be called as a before_filter before every request.
111 112 113 114 |
# File 'lib/jammit.rb', line 111 def self.reload! Thread.current[:jammit_packager] = nil load_configuration(@config_path) end |