smart_asset 0.1.3 → 0.2.0
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/lib/smart_asset/version.rb +1 -1
- data/lib/smart_asset.rb +33 -12
- metadata +4 -4
data/lib/smart_asset/version.rb
CHANGED
data/lib/smart_asset.rb
CHANGED
@@ -14,7 +14,7 @@ require 'smart_asset/version'
|
|
14
14
|
class SmartAsset
|
15
15
|
class <<self
|
16
16
|
|
17
|
-
attr_accessor :asset_host, :cache, :config, :dest, :env, :pub, :root, :sources
|
17
|
+
attr_accessor :asset_host, :cache, :config, :dest, :env, :envs, :pub, :root, :sources
|
18
18
|
|
19
19
|
BIN = File.expand_path(File.dirname(__FILE__) + '/../bin')
|
20
20
|
CLOSURE_COMPILER = BIN + '/closure_compiler.jar'
|
@@ -27,9 +27,10 @@ class SmartAsset
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def compress(type)
|
30
|
+
dest = @dest[type]
|
30
31
|
dir = "#{@pub}/#{@sources[type]}"
|
31
32
|
ext = ext_from_type type
|
32
|
-
FileUtils.mkdir_p
|
33
|
+
FileUtils.mkdir_p dest
|
33
34
|
(@config[type] || {}).each do |package, files|
|
34
35
|
create_package = false
|
35
36
|
compressed = {}
|
@@ -43,24 +44,27 @@ class SmartAsset
|
|
43
44
|
modified = Time.parse(modified).utc.strftime("%Y%m%d%H%M%S")
|
44
45
|
end
|
45
46
|
file = file.to_s.gsub('/', '_')
|
46
|
-
unless File.exists?(destination = "#{
|
47
|
+
unless File.exists?(destination = "#{dest}/#{modified}_#{package}_#{file}.#{ext}")
|
47
48
|
create_package = true
|
48
|
-
Dir["#{
|
49
|
+
Dir["#{dest}/*[0-9]_#{package}_#{file}.#{ext}"].each do |old|
|
49
50
|
FileUtils.rm old
|
50
51
|
end
|
51
52
|
puts "\nCompressing #{source}..."
|
52
53
|
if ext == 'js'
|
53
|
-
|
54
|
+
warning = ENV['WARN'] ? nil : " --warning_level QUIET"
|
55
|
+
cmd = "java -jar #{CLOSURE_COMPILER} --js #{source} --js_output_file #{destination}#{warn}"
|
54
56
|
elsif ext == 'css'
|
55
|
-
|
57
|
+
cmd = "java -jar #{YUI_COMPRESSOR} #{source} -o #{destination}"
|
56
58
|
end
|
59
|
+
puts cmd if ENV['DEBUG']
|
60
|
+
`#{cmd}`
|
57
61
|
end
|
58
62
|
compressed[destination] = modified
|
59
63
|
end
|
60
64
|
end
|
61
65
|
if modified = compressed.values.compact.sort.last
|
62
|
-
old_packages = "#{
|
63
|
-
package = "#{
|
66
|
+
old_packages = "#{dest}/*[0-9]_#{package}.#{ext}"
|
67
|
+
package = "#{dest}/#{modified}_#{package}.#{ext}"
|
64
68
|
if create_package || !File.exists?(package)
|
65
69
|
Dir[old_packages].each do |old|
|
66
70
|
FileUtils.rm old
|
@@ -81,17 +85,33 @@ class SmartAsset
|
|
81
85
|
@config = YAML::load(File.read("#{@root}/#{relative_config}"))
|
82
86
|
|
83
87
|
@config['asset_host'] ||= ActionController::Base.asset_host rescue nil
|
88
|
+
@config['environments'] ||= %w(production)
|
84
89
|
@config['public'] ||= 'public'
|
85
|
-
@config['destination'] ||=
|
90
|
+
@config['destination'] ||= {}
|
91
|
+
@config['destination']['javascripts'] ||= 'javascripts/packaged'
|
92
|
+
@config['destination']['stylesheets'] ||= 'stylesheets/packaged'
|
86
93
|
@config['sources'] ||= {}
|
87
94
|
@config['sources']['javascripts'] ||= "javascripts"
|
88
95
|
@config['sources']['stylesheets'] ||= "stylesheets"
|
89
96
|
|
97
|
+
# Convert from asset packager syntax
|
98
|
+
%w(javascripts stylesheets).each do |type|
|
99
|
+
if @config[type].respond_to?(:pop)
|
100
|
+
@config[type] = @config[type].inject({}) do |hash, package|
|
101
|
+
hash.merge! package
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
90
106
|
@asset_host = @config['asset_host']
|
107
|
+
@envs = @config['environments']
|
91
108
|
@sources = @config['sources']
|
92
109
|
|
93
110
|
@pub = File.expand_path("#{@root}/#{@config['public']}")
|
94
|
-
@dest =
|
111
|
+
@dest = %w(javascripts stylesheets).inject({}) do |hash, type|
|
112
|
+
hash[type] = "#{@pub}/#{@config['destination'][type]}"
|
113
|
+
hash
|
114
|
+
end
|
95
115
|
end
|
96
116
|
|
97
117
|
def paths(type, match)
|
@@ -109,12 +129,13 @@ class SmartAsset
|
|
109
129
|
@asset_host[@env.to_s] :
|
110
130
|
@asset_host
|
111
131
|
|
132
|
+
dest = @dest[type]
|
112
133
|
ext = ext_from_type type
|
113
134
|
|
114
|
-
if @env.
|
135
|
+
if @envs.include?(@env.to_s)
|
115
136
|
match = match.gsub('/', '_')
|
116
137
|
@cache[type][match] =
|
117
|
-
if result = Dir["#{
|
138
|
+
if result = Dir["#{dest}/*_#{match}.#{ext}"].sort.last
|
118
139
|
[ "#{host}#{result.gsub(@pub, '')}" ]
|
119
140
|
else
|
120
141
|
[]
|
metadata
CHANGED
@@ -4,9 +4,9 @@ version: !ruby/object:Gem::Version
|
|
4
4
|
prerelease: false
|
5
5
|
segments:
|
6
6
|
- 0
|
7
|
-
-
|
8
|
-
-
|
9
|
-
version: 0.
|
7
|
+
- 2
|
8
|
+
- 0
|
9
|
+
version: 0.2.0
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Winton Welsh
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-07 00:00:00 -08:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|