dassets 0.12.0 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +2 -2
- data/{LICENSE.txt → LICENSE} +0 -0
- data/README.md +2 -1
- data/lib/dassets/asset_file.rb +8 -8
- data/lib/dassets/cache.rb +1 -1
- data/lib/dassets/config.rb +14 -3
- data/lib/dassets/server/request.rb +1 -1
- data/lib/dassets/source_file.rb +4 -4
- data/lib/dassets/source_proxy.rb +15 -9
- data/lib/dassets/version.rb +1 -1
- data/test/support/factory.rb +4 -0
- data/test/system/rack_tests.rb +5 -3
- data/test/unit/asset_file_tests.rb +14 -18
- data/test/unit/config_tests.rb +26 -3
- data/test/unit/source_file_tests.rb +42 -2
- data/test/unit/source_proxy_tests.rb +15 -6
- metadata +6 -8
- data/test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt +0 -1
data/Gemfile
CHANGED
data/{LICENSE.txt → LICENSE}
RENAMED
File without changes
|
data/README.md
CHANGED
@@ -19,7 +19,8 @@ Dassets.configure do |c|
|
|
19
19
|
|
20
20
|
# (optional) tell Dassets where to store digested asset files
|
21
21
|
# if none given, Dassets will not write any digested output
|
22
|
-
# use this to "cache" digested assets to the public dir
|
22
|
+
# use this to "cache" digested assets to the public dir so that
|
23
|
+
# your web server can serve them directly
|
23
24
|
c.file_store '/path/to/public' # default: `FileStore::NullStore.new`
|
24
25
|
|
25
26
|
end
|
data/lib/dassets/asset_file.rb
CHANGED
@@ -12,21 +12,21 @@ class Dassets::AssetFile
|
|
12
12
|
@dirname = File.dirname(@digest_path)
|
13
13
|
@extname = File.extname(@digest_path)
|
14
14
|
@basename = File.basename(@digest_path, @extname)
|
15
|
-
@source_proxy = Dassets::SourceProxy.new(@digest_path,
|
15
|
+
@source_proxy = Dassets::SourceProxy.new(@digest_path, {
|
16
|
+
:content_cache => Dassets.config.content_cache,
|
17
|
+
:fingerprint_cache => Dassets.config.fingerprint_cache
|
18
|
+
})
|
16
19
|
end
|
17
20
|
|
18
21
|
def digest!
|
19
22
|
return if !self.exists?
|
20
|
-
Dassets.config.file_store.save(self.
|
21
|
-
end
|
22
|
-
|
23
|
-
def path
|
24
|
-
path_basename = "#{@basename}-#{self.fingerprint}#{@extname}"
|
25
|
-
File.join(@dirname, path_basename).sub(/^\.\//, '').sub(/^\//, '')
|
23
|
+
Dassets.config.file_store.save(self.url){ self.content }
|
26
24
|
end
|
27
25
|
|
28
26
|
def url
|
29
|
-
"#{
|
27
|
+
path_basename = "#{@basename}-#{self.fingerprint}#{@extname}"
|
28
|
+
path = File.join(@dirname, path_basename).sub(/^\.\//, '').sub(/^\//, '')
|
29
|
+
"#{dassets_base_url}/#{path}"
|
30
30
|
end
|
31
31
|
|
32
32
|
alias_method :href, :url
|
data/lib/dassets/cache.rb
CHANGED
data/lib/dassets/config.rb
CHANGED
@@ -10,14 +10,15 @@ module Dassets
|
|
10
10
|
include NsOptions::Proxy
|
11
11
|
|
12
12
|
option :file_store, FileStore, :default => proc{ FileStore::NullStore.new }
|
13
|
-
option :cache, :default => proc{ Cache::NoCache.new }
|
14
13
|
|
15
14
|
attr_reader :sources, :combinations
|
16
15
|
|
17
16
|
def initialize
|
18
17
|
super
|
19
|
-
@sources
|
20
|
-
@combinations
|
18
|
+
@sources = []
|
19
|
+
@combinations = Hash.new{ |h, k| [k] } # digest pass-thru if none defined
|
20
|
+
@content_cache = Dassets::Cache::NoCache.new
|
21
|
+
@fingerprint_cache = Dassets::Cache::NoCache.new
|
21
22
|
end
|
22
23
|
|
23
24
|
def base_url(value = nil)
|
@@ -29,6 +30,16 @@ module Dassets
|
|
29
30
|
@base_url = value
|
30
31
|
end
|
31
32
|
|
33
|
+
def content_cache(cache = nil)
|
34
|
+
@content_cache = cache if !cache.nil?
|
35
|
+
@content_cache
|
36
|
+
end
|
37
|
+
|
38
|
+
def fingerprint_cache(cache = nil)
|
39
|
+
@fingerprint_cache = cache if !cache.nil?
|
40
|
+
@fingerprint_cache
|
41
|
+
end
|
42
|
+
|
32
43
|
def source(path, &block)
|
33
44
|
@sources << Source.new(path).tap{ |s| block.call(s) if block }
|
34
45
|
end
|
data/lib/dassets/source_file.rb
CHANGED
@@ -7,13 +7,13 @@ module Dassets
|
|
7
7
|
|
8
8
|
class SourceFile
|
9
9
|
|
10
|
-
def self.find_by_digest_path(path,
|
10
|
+
def self.find_by_digest_path(path, options = nil)
|
11
11
|
# look in the configured source list
|
12
12
|
source_files = Dassets.source_list.map{ |p| self.new(p) }
|
13
13
|
|
14
14
|
# get the last matching one (in case two source files have the same digest
|
15
15
|
# path the last one *should* be correct since it was last to be configured)
|
16
|
-
source_files.select{ |s| s.digest_path == path }.last || NullSourceFile.new(path,
|
16
|
+
source_files.select{ |s| s.digest_path == path }.last || NullSourceFile.new(path, options)
|
17
17
|
end
|
18
18
|
|
19
19
|
attr_reader :file_path
|
@@ -86,11 +86,11 @@ module Dassets
|
|
86
86
|
|
87
87
|
class NullSourceFile < SourceFile
|
88
88
|
|
89
|
-
def initialize(digest_path,
|
89
|
+
def initialize(digest_path, options = nil)
|
90
90
|
@file_path, @ext_list = '', []
|
91
91
|
@digest_path = digest_path
|
92
92
|
@source_proxy = if Dassets.config.combination?(@digest_path)
|
93
|
-
SourceProxy.new(@digest_path,
|
93
|
+
SourceProxy.new(@digest_path, options)
|
94
94
|
else
|
95
95
|
NullSourceProxy.new
|
96
96
|
end
|
data/lib/dassets/source_proxy.rb
CHANGED
@@ -5,12 +5,18 @@ require 'dassets/source_file'
|
|
5
5
|
module Dassets; end
|
6
6
|
class Dassets::SourceProxy
|
7
7
|
|
8
|
-
attr_reader :digest_path, :
|
8
|
+
attr_reader :digest_path, :content_cache, :fingerprint_cache
|
9
|
+
attr_reader :source_files
|
9
10
|
|
10
|
-
def initialize(digest_path,
|
11
|
-
|
12
|
-
@
|
13
|
-
@
|
11
|
+
def initialize(digest_path, options = nil)
|
12
|
+
options ||= {}
|
13
|
+
@digest_path = digest_path
|
14
|
+
@content_cache = options[:content_cache] || Dassets::Cache::NoCache.new
|
15
|
+
@fingerprint_cache = options[:fingerprint_cache] || Dassets::Cache::NoCache.new
|
16
|
+
@source_files = get_source_files(@digest_path, {
|
17
|
+
:content_cache => @content_cache,
|
18
|
+
:fingerprint_cache => @fingerprint_cache
|
19
|
+
})
|
14
20
|
end
|
15
21
|
|
16
22
|
def key
|
@@ -18,11 +24,11 @@ class Dassets::SourceProxy
|
|
18
24
|
end
|
19
25
|
|
20
26
|
def content
|
21
|
-
@
|
27
|
+
@content_cache[self.key] ||= source_content
|
22
28
|
end
|
23
29
|
|
24
30
|
def fingerprint
|
25
|
-
@
|
31
|
+
@fingerprint_cache[self.key] ||= source_fingerprint
|
26
32
|
end
|
27
33
|
|
28
34
|
def mtime
|
@@ -43,9 +49,9 @@ class Dassets::SourceProxy
|
|
43
49
|
Digest::MD5.new.hexdigest(source_content)
|
44
50
|
end
|
45
51
|
|
46
|
-
def get_source_files(digest_path,
|
52
|
+
def get_source_files(digest_path, options)
|
47
53
|
Dassets.config.combinations[digest_path.to_s].map do |source_digest_path|
|
48
|
-
Dassets::SourceFile.find_by_digest_path(source_digest_path,
|
54
|
+
Dassets::SourceFile.find_by_digest_path(source_digest_path, options)
|
49
55
|
end
|
50
56
|
end
|
51
57
|
|
data/lib/dassets/version.rb
CHANGED
data/test/support/factory.rb
CHANGED
data/test/system/rack_tests.rb
CHANGED
@@ -81,19 +81,21 @@ module Dassets
|
|
81
81
|
|
82
82
|
class DigestTests < SuccessTests
|
83
83
|
setup do
|
84
|
+
base_url = Factory.base_url
|
85
|
+
Assert.stub(Dassets.config, :base_url){ base_url }
|
84
86
|
Dassets.config.file_store = TEST_SUPPORT_PATH.join('public').to_s
|
85
|
-
@url = 'file1
|
87
|
+
@url = Dassets['file1.txt'].url
|
86
88
|
@url_file = Dassets.config.file_store.store_path(@url)
|
87
|
-
FileUtils.rm(@url_file)
|
88
89
|
end
|
89
90
|
teardown do
|
91
|
+
FileUtils.rm(@url_file)
|
90
92
|
Dassets.config.file_store = FileStore::NullStore.new
|
91
93
|
end
|
92
94
|
|
93
95
|
should "digest the asset" do
|
94
96
|
assert_not_file_exists @url_file
|
95
97
|
|
96
|
-
resp = get
|
98
|
+
resp = get @url
|
97
99
|
assert_equal 200, resp.status
|
98
100
|
assert_file_exists @url_file
|
99
101
|
end
|
@@ -15,7 +15,7 @@ class Dassets::AssetFile
|
|
15
15
|
subject{ @asset_file }
|
16
16
|
|
17
17
|
should have_readers :digest_path, :dirname, :extname, :basename, :source_proxy
|
18
|
-
should have_imeths :digest!, :
|
18
|
+
should have_imeths :digest!, :url, :href, :fingerprint, :content
|
19
19
|
should have_imeths :mtime, :size, :mime_type, :exists?, :==
|
20
20
|
|
21
21
|
should "know its digest path, dirname, extname, and basename" do
|
@@ -39,9 +39,12 @@ class Dassets::AssetFile
|
|
39
39
|
end
|
40
40
|
|
41
41
|
should "know its source proxy" do
|
42
|
-
|
43
|
-
|
44
|
-
|
42
|
+
source_proxy = subject.source_proxy
|
43
|
+
assert_not_nil source_proxy
|
44
|
+
assert_kind_of Dassets::SourceProxy, source_proxy
|
45
|
+
assert_equal subject.digest_path, source_proxy.digest_path
|
46
|
+
assert_equal Dassets.config.content_cache, source_proxy.content_cache
|
47
|
+
assert_equal Dassets.config.fingerprint_cache, source_proxy.fingerprint_cache
|
45
48
|
end
|
46
49
|
|
47
50
|
should "have a fingerprint" do
|
@@ -68,14 +71,7 @@ class Dassets::AssetFile
|
|
68
71
|
assert_equal exp_content, without_output.content
|
69
72
|
end
|
70
73
|
|
71
|
-
should "build it's
|
72
|
-
assert_match /^file1-[a-f0-9]{32}\.txt$/, subject.path
|
73
|
-
|
74
|
-
nested = Dassets::AssetFile.new('nested/file1.txt')
|
75
|
-
assert_equal "nested/file1-.txt", nested.path
|
76
|
-
end
|
77
|
-
|
78
|
-
should "build it's url/href from the path and any configured base url" do
|
74
|
+
should "build it's url/href from the file, fingerpint and any configured base url" do
|
79
75
|
assert_match /^\/file1-[a-f0-9]{32}\.txt$/, subject.url
|
80
76
|
assert_match subject.url, subject.href
|
81
77
|
|
@@ -84,7 +80,7 @@ class Dassets::AssetFile
|
|
84
80
|
assert_equal nested.url, nested.href
|
85
81
|
|
86
82
|
base_url = Factory.url
|
87
|
-
Dassets.config
|
83
|
+
Assert.stub(Dassets.config, :base_url){ base_url }
|
88
84
|
|
89
85
|
assert_match /^#{base_url}\/file1-[a-f0-9]{32}\.txt$/, subject.url
|
90
86
|
assert_match subject.url, subject.href
|
@@ -94,10 +90,6 @@ class Dassets::AssetFile
|
|
94
90
|
end
|
95
91
|
|
96
92
|
should "not memoize its attributes" do
|
97
|
-
path1 = subject.path
|
98
|
-
path2 = subject.path
|
99
|
-
assert_not_same path2, path1
|
100
|
-
|
101
93
|
url1 = subject.url
|
102
94
|
url2 = subject.url
|
103
95
|
assert_not_same url2, url1
|
@@ -120,11 +112,15 @@ class Dassets::AssetFile
|
|
120
112
|
class DigestTests < UnitTests
|
121
113
|
desc "being digested with an output path configured"
|
122
114
|
setup do
|
115
|
+
base_url = Factory.base_url
|
116
|
+
Assert.stub(Dassets.config, :base_url){ base_url }
|
123
117
|
Dassets.config.file_store = TEST_SUPPORT_PATH.join('public').to_s
|
118
|
+
|
124
119
|
@save_path = @asset_file.digest!
|
125
|
-
@outfile = Dassets.config.file_store.store_path(@asset_file.
|
120
|
+
@outfile = Dassets.config.file_store.store_path(@asset_file.url)
|
126
121
|
end
|
127
122
|
teardown do
|
123
|
+
FileUtils.rm(@outfile)
|
128
124
|
Dassets.config.file_store = Dassets::FileStore::NullStore.new
|
129
125
|
end
|
130
126
|
|
data/test/unit/config_tests.rb
CHANGED
@@ -16,9 +16,10 @@ class Dassets::Config
|
|
16
16
|
end
|
17
17
|
subject{ @config }
|
18
18
|
|
19
|
-
should have_options :file_store
|
19
|
+
should have_options :file_store
|
20
20
|
should have_readers :combinations
|
21
21
|
should have_imeths :base_url, :set_base_url
|
22
|
+
should have_imeths :content_cache, :fingerprint_cache
|
22
23
|
should have_imeths :source, :combination, :combination?
|
23
24
|
|
24
25
|
should "have no base url by default" do
|
@@ -47,8 +48,30 @@ class Dassets::Config
|
|
47
48
|
assert_kind_of Dassets::FileStore::NullStore, subject.file_store
|
48
49
|
end
|
49
50
|
|
50
|
-
should "default
|
51
|
-
|
51
|
+
should "default its content cache" do
|
52
|
+
assert_instance_of Dassets::Cache::NoCache, subject.content_cache
|
53
|
+
end
|
54
|
+
|
55
|
+
should "allow configuring non-nil content caches" do
|
56
|
+
cache = Dassets::Cache::MemCache.new
|
57
|
+
subject.content_cache(cache)
|
58
|
+
assert_equal cache, subject.content_cache
|
59
|
+
|
60
|
+
subject.content_cache(nil)
|
61
|
+
assert_equal cache, subject.content_cache
|
62
|
+
end
|
63
|
+
|
64
|
+
should "default its fingerprint cache" do
|
65
|
+
assert_instance_of Dassets::Cache::NoCache, subject.fingerprint_cache
|
66
|
+
end
|
67
|
+
|
68
|
+
should "allow configuring non-nil fingerprint caches" do
|
69
|
+
cache = Dassets::Cache::MemCache.new
|
70
|
+
subject.fingerprint_cache(cache)
|
71
|
+
assert_equal cache, subject.fingerprint_cache
|
72
|
+
|
73
|
+
subject.fingerprint_cache(nil)
|
74
|
+
assert_equal cache, subject.fingerprint_cache
|
52
75
|
end
|
53
76
|
|
54
77
|
should "register new sources with the `source` method" do
|
@@ -2,6 +2,7 @@ require 'assert'
|
|
2
2
|
require 'dassets/source_file'
|
3
3
|
|
4
4
|
require 'dassets/asset_file'
|
5
|
+
require 'dassets/cache'
|
5
6
|
require 'dassets/source_proxy'
|
6
7
|
|
7
8
|
class Dassets::SourceFile
|
@@ -61,6 +62,12 @@ class Dassets::SourceFile
|
|
61
62
|
end
|
62
63
|
|
63
64
|
class NullSourceTests < UnitTests
|
65
|
+
setup do
|
66
|
+
Dassets.config.combination 'file3.txt', ['file1.txt', 'file2.txt']
|
67
|
+
end
|
68
|
+
teardown do
|
69
|
+
Dassets.config.combinations.delete('file3.txt')
|
70
|
+
end
|
64
71
|
|
65
72
|
should "find a null src file if finding by an unknown digest path" do
|
66
73
|
null_src = Dassets::NullSourceFile.new('not/found/digest/path')
|
@@ -75,16 +82,49 @@ class Dassets::SourceFile
|
|
75
82
|
assert_nil null_src.mtime
|
76
83
|
end
|
77
84
|
|
85
|
+
should "pass options to a null src when finding by an unknown digest path" do
|
86
|
+
null_src = Dassets::NullSourceFile.new('not/found/digest/path')
|
87
|
+
null_src_new_called_with = []
|
88
|
+
Assert.stub(Dassets::NullSourceFile, :new) do |*args|
|
89
|
+
null_src_new_called_with = args
|
90
|
+
null_src
|
91
|
+
end
|
92
|
+
|
93
|
+
options = {
|
94
|
+
:content_cache => Dassets::Cache::NoCache.new,
|
95
|
+
:fingerprint_cache => Dassets::Cache::NoCache.new
|
96
|
+
}
|
97
|
+
Dassets::SourceFile.find_by_digest_path('not/found/digest/path', options)
|
98
|
+
|
99
|
+
exp = ['not/found/digest/path', options]
|
100
|
+
assert_equal exp, null_src_new_called_with
|
101
|
+
end
|
102
|
+
|
78
103
|
should "'proxy' the digest path if the path is a combination" do
|
79
|
-
Dassets.config.combination 'file3.txt', ['file1.txt', 'file2.txt']
|
80
104
|
src_proxy = Dassets::SourceProxy.new('file3.txt')
|
81
105
|
null_combo_src = Dassets::NullSourceFile.new('file3.txt')
|
82
106
|
|
83
107
|
assert_equal src_proxy.exists?, null_combo_src.exists?
|
84
108
|
assert_equal src_proxy.content, null_combo_src.compiled
|
85
109
|
assert_equal src_proxy.mtime, null_combo_src.mtime
|
110
|
+
end
|
86
111
|
|
87
|
-
|
112
|
+
should "pass options to its source proxy when the path is a combination" do
|
113
|
+
src_proxy = Dassets::SourceProxy.new('file3.txt')
|
114
|
+
src_proxy_new_called_with = []
|
115
|
+
Assert.stub(Dassets::SourceProxy, :new) do |*args|
|
116
|
+
src_proxy_new_called_with = args
|
117
|
+
src_proxy
|
118
|
+
end
|
119
|
+
|
120
|
+
options = {
|
121
|
+
:content_cache => Dassets::Cache::NoCache.new,
|
122
|
+
:fingerprint_cache => Dassets::Cache::NoCache.new
|
123
|
+
}
|
124
|
+
Dassets::NullSourceFile.new('file3.txt', options)
|
125
|
+
|
126
|
+
exp = ['file3.txt', options]
|
127
|
+
assert_equal exp, src_proxy_new_called_with
|
88
128
|
end
|
89
129
|
|
90
130
|
end
|
@@ -15,7 +15,8 @@ class Dassets::SourceProxy
|
|
15
15
|
end
|
16
16
|
subject{ @source_proxy }
|
17
17
|
|
18
|
-
should have_readers :digest_path, :
|
18
|
+
should have_readers :digest_path, :content_cache, :fingerprint_cache
|
19
|
+
should have_readers :source_files
|
19
20
|
should have_imeths :key, :content, :fingerprint, :mtime, :exists?
|
20
21
|
|
21
22
|
end
|
@@ -30,8 +31,9 @@ class Dassets::SourceProxy
|
|
30
31
|
assert_equal 'file1.txt', subject.digest_path
|
31
32
|
end
|
32
33
|
|
33
|
-
should "use
|
34
|
-
assert_kind_of Dassets::Cache::NoCache, subject.
|
34
|
+
should "use no cache by default" do
|
35
|
+
assert_kind_of Dassets::Cache::NoCache, subject.content_cache
|
36
|
+
assert_kind_of Dassets::Cache::NoCache, subject.fingerprint_cache
|
35
37
|
end
|
36
38
|
|
37
39
|
should "have a single source file" do
|
@@ -155,7 +157,10 @@ class Dassets::SourceProxy
|
|
155
157
|
desc "with a `NoCache` cache handler"
|
156
158
|
setup do
|
157
159
|
@cache = Dassets::Cache::NoCache.new
|
158
|
-
@source_proxy = Dassets::SourceProxy.new('file1.txt',
|
160
|
+
@source_proxy = Dassets::SourceProxy.new('file1.txt', {
|
161
|
+
:content_cache => @cache,
|
162
|
+
:fingerprint_cache => @cache
|
163
|
+
})
|
159
164
|
end
|
160
165
|
|
161
166
|
should "not cache its source content/fingerprint" do
|
@@ -173,8 +178,12 @@ class Dassets::SourceProxy
|
|
173
178
|
class MemCacheTests < UnitTests
|
174
179
|
desc "with a `MemCache` cache handler"
|
175
180
|
setup do
|
176
|
-
@
|
177
|
-
@
|
181
|
+
@content_cache = Dassets::Cache::MemCache.new
|
182
|
+
@fingerprint_cache = Dassets::Cache::MemCache.new
|
183
|
+
@source_proxy = Dassets::SourceProxy.new('file1.txt', {
|
184
|
+
:content_cache => @content_cache,
|
185
|
+
:fingerprint_cache => @fingerprint_cache
|
186
|
+
})
|
178
187
|
end
|
179
188
|
|
180
189
|
should "cache its source content/fingerprint in memory" do
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dassets
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 43
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
8
|
+
- 13
|
9
9
|
- 0
|
10
|
-
version: 0.
|
10
|
+
version: 0.13.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Kelly Redding
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2015-
|
19
|
+
date: 2015-12-22 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
requirement: &id001 !ruby/object:Gem::Requirement
|
@@ -106,7 +106,7 @@ extra_rdoc_files: []
|
|
106
106
|
files:
|
107
107
|
- .gitignore
|
108
108
|
- Gemfile
|
109
|
-
- LICENSE
|
109
|
+
- LICENSE
|
110
110
|
- README.md
|
111
111
|
- Rakefile
|
112
112
|
- dassets.gemspec
|
@@ -133,7 +133,6 @@ files:
|
|
133
133
|
- test/support/app/assets/nested/file3.txt
|
134
134
|
- test/support/empty/.gitkeep
|
135
135
|
- test/support/factory.rb
|
136
|
-
- test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt
|
137
136
|
- test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
|
138
137
|
- test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
|
139
138
|
- test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use
|
@@ -185,7 +184,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
185
184
|
requirements: []
|
186
185
|
|
187
186
|
rubyforge_project:
|
188
|
-
rubygems_version: 1.8.
|
187
|
+
rubygems_version: 1.8.25
|
189
188
|
signing_key:
|
190
189
|
specification_version: 3
|
191
190
|
summary: Digested asset files
|
@@ -199,7 +198,6 @@ test_files:
|
|
199
198
|
- test/support/app/assets/nested/file3.txt
|
200
199
|
- test/support/empty/.gitkeep
|
201
200
|
- test/support/factory.rb
|
202
|
-
- test/support/public/file1-daa05c683a4913b268653f7a7e36a5b4.txt
|
203
201
|
- test/support/public/file2-9bbe1047cffbb590f59e0e5aeff46ae4.txt
|
204
202
|
- test/support/public/grumpy_cat-b0d1f399a916f7a25c4c0f693c619013.jpg
|
205
203
|
- test/support/public/nested/a-thing.txt-7413d18f2eba9c695a880aff67fde135.no-use
|
@@ -1 +0,0 @@
|
|
1
|
-
file1.txt
|