jammit 0.5.3 → 0.5.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/jammit.gemspec +2 -2
- data/lib/jammit.rb +17 -3
- data/lib/jammit/command_line.rb +1 -3
- data/lib/jammit/compressor.rb +9 -5
- data/lib/jammit/controller.rb +2 -2
- data/lib/jammit/dependencies.rb +1 -1
- data/rails/routes.rb +4 -1
- metadata +4 -4
data/jammit.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'jammit'
|
3
|
-
s.version = '0.5.
|
4
|
-
s.date = '2010-
|
3
|
+
s.version = '0.5.4' # Keep version in sync with jammit.rb
|
4
|
+
s.date = '2010-11-8'
|
5
5
|
|
6
6
|
s.homepage = "http://documentcloud.github.com/jammit/"
|
7
7
|
s.summary = "Industrial Strength Asset Packaging for Rails"
|
data/lib/jammit.rb
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.push File.expand_path(File.dirname(__FILE__))
|
|
4
4
|
# to all of the configuration options.
|
5
5
|
module Jammit
|
6
6
|
|
7
|
-
VERSION = "0.5.
|
7
|
+
VERSION = "0.5.4"
|
8
8
|
|
9
9
|
ROOT = File.expand_path(File.dirname(__FILE__) + '/..')
|
10
10
|
|
@@ -58,8 +58,10 @@ module Jammit
|
|
58
58
|
@package_path = DEFAULT_PACKAGE_PATH
|
59
59
|
|
60
60
|
# Load the complete asset configuration from the specified @config_path@.
|
61
|
-
|
61
|
+
# If we're loading softly, don't let missing configuration error out.
|
62
|
+
def self.load_configuration(config_path, soft=false)
|
62
63
|
exists = config_path && File.exists?(config_path)
|
64
|
+
return false if soft && !exists
|
63
65
|
raise ConfigurationNotFound, "could not find the \"#{config_path}\" configuration file" unless exists
|
64
66
|
conf = YAML.load(ERB.new(File.read(config_path)).result)
|
65
67
|
@config_path = config_path
|
@@ -108,6 +110,18 @@ module Jammit
|
|
108
110
|
"/#{package_path}/#{filename(package, extension, suffix)}#{timestamp}"
|
109
111
|
end
|
110
112
|
|
113
|
+
# Convenience method for packaging up Jammit, using the default options.
|
114
|
+
def self.package!(options={})
|
115
|
+
options = {
|
116
|
+
:config_path => Jammit::DEFAULT_CONFIG_PATH,
|
117
|
+
:output_folder => nil,
|
118
|
+
:base_url => nil,
|
119
|
+
:force => false
|
120
|
+
}.merge(options)
|
121
|
+
load_configuration(options[:config_path])
|
122
|
+
packager.force = options[:force]
|
123
|
+
packager.precache_all(options[:output_folder], options[:base_url])
|
124
|
+
end
|
111
125
|
|
112
126
|
private
|
113
127
|
|
@@ -119,7 +133,7 @@ module Jammit
|
|
119
133
|
|
120
134
|
# Turn asset packaging on or off, depending on configuration and environment.
|
121
135
|
def self.set_package_assets(value)
|
122
|
-
package_env = !defined?(Rails) || !Rails.env.development?
|
136
|
+
package_env = !defined?(Rails) || (!Rails.env.development? && !Rails.env.test?)
|
123
137
|
@package_assets = value == true || value.nil? ? package_env :
|
124
138
|
value == 'always' ? true : false
|
125
139
|
end
|
data/lib/jammit/command_line.rb
CHANGED
@@ -26,9 +26,7 @@ Options:
|
|
26
26
|
def initialize
|
27
27
|
parse_options
|
28
28
|
ensure_configuration_file
|
29
|
-
Jammit.
|
30
|
-
Jammit.packager.force = @options[:force]
|
31
|
-
Jammit.packager.precache_all(@options[:output_folder], @options[:base_url])
|
29
|
+
Jammit.package!(@options)
|
32
30
|
end
|
33
31
|
|
34
32
|
|
data/lib/jammit/compressor.rb
CHANGED
@@ -97,12 +97,12 @@ module Jammit
|
|
97
97
|
paths = paths.grep(Jammit.template_extension_matcher).sort
|
98
98
|
base_path = find_base_path(paths)
|
99
99
|
compiled = paths.map do |path|
|
100
|
-
contents =
|
100
|
+
contents = read_binary_file(path)
|
101
101
|
contents = contents.gsub(/\n/, '').gsub("'", '\\\\\'')
|
102
102
|
name = template_name(path, base_path)
|
103
103
|
"#{namespace}['#{name}'] = #{Jammit.template_function}('#{contents}');"
|
104
104
|
end
|
105
|
-
compiler = Jammit.include_jst_script ?
|
105
|
+
compiler = Jammit.include_jst_script ? read_binary_file(DEFAULT_JST_SCRIPT) : '';
|
106
106
|
setup_namespace = "#{namespace} = #{namespace} || {};"
|
107
107
|
[JST_START, setup_namespace, compiler, compiled, JST_END].flatten.join("\n")
|
108
108
|
end
|
@@ -137,7 +137,7 @@ module Jammit
|
|
137
137
|
# at it.
|
138
138
|
def concatenate_and_tag_assets(paths, variant=nil)
|
139
139
|
stylesheets = [paths].flatten.map do |css_path|
|
140
|
-
contents =
|
140
|
+
contents = read_binary_file(css_path)
|
141
141
|
contents.gsub(EMBED_DETECTOR) do |url|
|
142
142
|
ipath, cpath = Pathname.new($1), Pathname.new(File.expand_path(css_path))
|
143
143
|
is_url = URI.parse($1).absolute?
|
@@ -228,7 +228,7 @@ module Jammit
|
|
228
228
|
# Return the Base64-encoded contents of an asset on a single line.
|
229
229
|
def encoded_contents(asset_path)
|
230
230
|
return @asset_contents[asset_path] if @asset_contents[asset_path]
|
231
|
-
data =
|
231
|
+
data = read_binary_file(asset_path)
|
232
232
|
@asset_contents[asset_path] = Base64.encode64(data).gsub(/\n/, '')
|
233
233
|
end
|
234
234
|
|
@@ -239,9 +239,13 @@ module Jammit
|
|
239
239
|
|
240
240
|
# Concatenate together a list of asset files.
|
241
241
|
def concatenate(paths)
|
242
|
-
[paths].flatten.map {|p|
|
242
|
+
[paths].flatten.map {|p| read_binary_file(p) }.join("\n")
|
243
243
|
end
|
244
244
|
|
245
|
+
# `File.read`, but in "binary" mode.
|
246
|
+
def read_binary_file(path)
|
247
|
+
File.open(path, 'r:binary') {|f| f.read }
|
248
|
+
end
|
245
249
|
end
|
246
250
|
|
247
251
|
end
|
data/lib/jammit/controller.rb
CHANGED
@@ -53,7 +53,7 @@ module Jammit
|
|
53
53
|
def generate_stylesheets
|
54
54
|
return @contents = Jammit.packager.pack_stylesheets(@package, @variant) unless @variant == :mhtml
|
55
55
|
@mtime = Time.now
|
56
|
-
request_url = prefix_url(request.
|
56
|
+
request_url = prefix_url(request.fullpath)
|
57
57
|
cached_url = prefix_url(Jammit.asset_url(@package, @extension, @variant, @mtime))
|
58
58
|
css = Jammit.packager.pack_stylesheets(@package, @variant, request_url)
|
59
59
|
@contents = css.gsub(request_url, cached_url) if perform_caching
|
@@ -87,7 +87,7 @@ end
|
|
87
87
|
# Make the Jammit::Controller available to Rails as a top-level controller.
|
88
88
|
::JammitController = Jammit::Controller
|
89
89
|
|
90
|
-
if defined?(Rails) && Rails.env.development?
|
90
|
+
if defined?(Rails) && (Rails.env.development? || Rails.env.test?)
|
91
91
|
ActionController::Base.class_eval do
|
92
92
|
append_before_filter { Jammit.reload! }
|
93
93
|
end
|
data/lib/jammit/dependencies.rb
CHANGED
@@ -12,7 +12,7 @@ require 'yui/compressor'
|
|
12
12
|
require 'closure-compiler'
|
13
13
|
|
14
14
|
# Load initial configuration before the rest of Jammit.
|
15
|
-
Jammit.load_configuration(Jammit::DEFAULT_CONFIG_PATH) if defined?(Rails)
|
15
|
+
Jammit.load_configuration(Jammit::DEFAULT_CONFIG_PATH, true) if defined?(Rails)
|
16
16
|
|
17
17
|
# Jammit Core:
|
18
18
|
require 'jammit/compressor'
|
data/rails/routes.rb
CHANGED
@@ -2,6 +2,9 @@ if defined?(Rails::Application)
|
|
2
2
|
# Rails3 routes
|
3
3
|
Rails.application.routes.draw do
|
4
4
|
match "/#{Jammit.package_path}/:package.:extension",
|
5
|
-
:to => 'jammit#package', :as => :jammit
|
5
|
+
:to => 'jammit#package', :as => :jammit, :constraints => {
|
6
|
+
# A hack to allow extension to include "."
|
7
|
+
:extension => /.+/
|
8
|
+
}
|
6
9
|
end
|
7
10
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jammit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 5
|
9
|
-
-
|
10
|
-
version: 0.5.
|
9
|
+
- 4
|
10
|
+
version: 0.5.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeremy Ashkenas
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-11-08 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|