rad_assets 0.2.8 → 0.2.9
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/Rakefile +1 -1
- data/lib/components/assets.rb +1 -1
- data/lib/rad/assets/assets.rb +16 -16
- data/lib/rad/assets/compressor.rb +2 -2
- data/lib/rad/assets/gems.rb +1 -1
- data/lib/rad/assets/packaged_resource.rb +15 -15
- data/lib/rad/assets/resource.rb +3 -3
- data/lib/rad/assets/static_files.rb +10 -7
- data/lib/rad/assets/view_helper.rb +1 -1
- data/spec/assets_spec.rb +3 -3
- data/spec/resources_spec.rb +9 -9
- metadata +18 -29
data/Rakefile
CHANGED
data/lib/components/assets.rb
CHANGED
data/lib/rad/assets/assets.rb
CHANGED
@@ -1,42 +1,42 @@
|
|
1
|
-
class Rad::Assets
|
2
|
-
inject logger: :logger, environment: :environment
|
3
|
-
|
4
|
-
#
|
1
|
+
class Rad::Assets
|
2
|
+
inject logger: :logger, environment: :environment
|
3
|
+
|
4
|
+
#
|
5
5
|
# Config
|
6
|
-
#
|
6
|
+
#
|
7
7
|
attr_accessor :static_path_prefix
|
8
8
|
# attr_required :static_path_prefix
|
9
|
-
|
10
|
-
|
11
|
-
def resolve_http_paths http_path
|
9
|
+
|
10
|
+
|
11
|
+
def resolve_http_paths http_path
|
12
12
|
resource = pack? ? Rad::Assets::PackagedResource.new(http_path) : Rad::Assets::Resource.new(http_path)
|
13
13
|
resource.resolved_http_paths
|
14
14
|
end
|
15
15
|
cache_method_with_params_in_production :resolve_http_paths
|
16
|
-
|
16
|
+
|
17
17
|
def paths
|
18
18
|
@paths ||= []
|
19
19
|
end
|
20
|
-
|
20
|
+
|
21
21
|
def copy_to_public!
|
22
22
|
paths.each do |path|
|
23
23
|
path = path.to_dir
|
24
24
|
raise "asset path should exist (#{path})!" unless path.exist?
|
25
|
-
raise "asset path should be a directory (#{path})!" unless path.dir?
|
26
|
-
path.copy_to
|
25
|
+
raise "asset path should be a directory (#{path})!" unless path.dir?
|
26
|
+
path.copy_to "#{rad.http.public_path}#{static_path_prefix}".to_dir
|
27
27
|
end
|
28
28
|
end
|
29
|
-
|
30
|
-
def fs_path http_path
|
29
|
+
|
30
|
+
def fs_path http_path
|
31
31
|
http_path.must =~ /^\//
|
32
32
|
environment.find_file http_path, paths
|
33
33
|
end
|
34
|
-
|
34
|
+
|
35
35
|
def asset? http_path
|
36
36
|
!!((http_path =~ /^\//) and fs_path(http_path))
|
37
37
|
end
|
38
38
|
cache_method_with_params_in_production :asset?
|
39
|
-
|
39
|
+
|
40
40
|
protected
|
41
41
|
def pack?
|
42
42
|
rad.production?
|
@@ -5,7 +5,7 @@ class Rad::Assets::Compressor
|
|
5
5
|
# `ruby #{jsmin} <#{path} >#{packaged_path} \n`
|
6
6
|
# },
|
7
7
|
css: -> path, packaged_path {
|
8
|
-
data = path.to_file.read
|
8
|
+
data = path.to_file.read
|
9
9
|
data.gsub!(/\s+/, " ") # collapse space
|
10
10
|
data.gsub!(/\/\*(.*?)\*\//, "") # remove comments - caution, might want to remove this if using css hacks
|
11
11
|
data.gsub!(/\} /, "}\n") # add line breaks
|
@@ -15,7 +15,7 @@ class Rad::Assets::Compressor
|
|
15
15
|
packaged_path.to_file.write data
|
16
16
|
}
|
17
17
|
}
|
18
|
-
|
18
|
+
|
19
19
|
def self.pack! path
|
20
20
|
file = path.to_file.must.exist
|
21
21
|
packager = COMPRESSORS[file.extension.to_sym]
|
data/lib/rad/assets/gems.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
class Rad::Assets::PackagedResource < Rad::Assets::Resource
|
1
|
+
class Rad::Assets::PackagedResource < Rad::Assets::Resource
|
2
2
|
PACKAGED_POSTFIX = 'packaged'
|
3
|
-
|
3
|
+
|
4
4
|
def resolved_http_paths
|
5
5
|
http_path = "#{assets.static_path_prefix}#{self.http_path}"
|
6
|
-
|
6
|
+
|
7
7
|
fs_path = self.fs_path http_path
|
8
8
|
http_paths = []
|
9
9
|
fs_path.to_file.read.scan ASSET_REQUIRE_RE do |dependency_http_path|
|
@@ -11,40 +11,40 @@ class Rad::Assets::PackagedResource < Rad::Assets::Resource
|
|
11
11
|
http_paths.push *res.resolved_http_paths
|
12
12
|
end
|
13
13
|
http_paths << http_path
|
14
|
-
|
15
|
-
fs_paths = http_paths.collect{|path| self.fs_path path}
|
14
|
+
|
15
|
+
fs_paths = http_paths.collect{|path| self.fs_path path}
|
16
16
|
packaged_file = self.fs_path(packaged_http_path(http_path)).to_file
|
17
|
-
|
17
|
+
|
18
18
|
rebuild = (
|
19
19
|
!packaged_file.exist? or
|
20
20
|
fs_paths.any?{|path| path.to_file.updated_at > packaged_file.updated_at}
|
21
21
|
)
|
22
22
|
rebuild! packaged_file, fs_paths if rebuild
|
23
|
-
|
23
|
+
|
24
24
|
[packaged_http_path(http_path)]
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
protected
|
28
28
|
def fs_path http_path
|
29
29
|
"#{rad.http.public_path}#{http_path}"
|
30
30
|
end
|
31
|
-
|
31
|
+
|
32
32
|
def packaged_http_path http_path
|
33
33
|
extension = File.extname(http_path)
|
34
34
|
base = http_path[0..(http_path.size - extension.size - 1)]
|
35
35
|
"#{base}.packaged#{extension}"
|
36
36
|
end
|
37
|
-
|
38
|
-
def rebuild! packaged_file, fs_paths
|
37
|
+
|
38
|
+
def rebuild! packaged_file, fs_paths
|
39
39
|
# merging
|
40
|
-
packaged_file.write
|
40
|
+
packaged_file.write do |writer|
|
41
41
|
fs_paths.each do |path|
|
42
|
-
path.to_file.read do |buff|
|
43
|
-
writer.
|
42
|
+
path.to_file.read do |buff|
|
43
|
+
writer.write buff
|
44
44
|
end
|
45
45
|
end
|
46
46
|
end
|
47
|
-
|
47
|
+
|
48
48
|
# packing
|
49
49
|
Rad::Assets::Compressor.pack! packaged_file.path
|
50
50
|
end
|
data/lib/rad/assets/resource.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
class Rad::Assets::Resource
|
1
|
+
class Rad::Assets::Resource
|
2
2
|
attr_reader :http_path
|
3
3
|
inject assets: :assets
|
4
|
-
|
4
|
+
|
5
5
|
ASSET_REQUIRE_RE = /rad\.assets\.require[ \t]+['"]([a-zA-Z0-9_\-\.\/]+)['"]/
|
6
|
-
|
6
|
+
|
7
7
|
def initialize http_path
|
8
8
|
raise "resources path should be absolute (#{http_path})!" unless http_path =~ /^\//
|
9
9
|
@http_path = http_path
|
@@ -5,8 +5,8 @@ class Rad::Assets::StaticFiles < Rack::File
|
|
5
5
|
|
6
6
|
def call(env)
|
7
7
|
path = env["PATH_INFO"]
|
8
|
-
|
9
|
-
if path != '/' and (!@filter or (@filter and @filter =~ path)) and (resolved_path = find_file(path))
|
8
|
+
|
9
|
+
if path != '/' and (!@filter or (@filter and @filter =~ path)) and (resolved_path = find_file(path))
|
10
10
|
@path = resolved_path
|
11
11
|
serving(env)
|
12
12
|
else
|
@@ -16,13 +16,16 @@ class Rad::Assets::StaticFiles < Rack::File
|
|
16
16
|
|
17
17
|
protected
|
18
18
|
inject assets: :assets
|
19
|
-
|
19
|
+
|
20
20
|
def find_file http_path
|
21
|
-
|
21
|
+
http_path = http_path.url_unescape
|
22
|
+
if rad.http.public_path?
|
22
23
|
fs_path = "#{rad.http.public_path}#{http_path}"
|
23
|
-
fs_path if fs_path.to_file.exist?
|
24
|
-
|
25
|
-
|
24
|
+
return fs_path if fs_path.to_file.exist?
|
25
|
+
end
|
26
|
+
|
27
|
+
if rad.development?
|
28
|
+
http_path = http_path.sub rad.assets.static_path_prefix, ''
|
26
29
|
fs_path = assets.fs_path http_path
|
27
30
|
fs_path.sub rad.http.public_path, '' if fs_path
|
28
31
|
end
|
data/spec/assets_spec.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe 'Assets' do
|
4
|
-
the_spec_dir = with_tmp_spec_dir
|
4
|
+
the_spec_dir = with_tmp_spec_dir
|
5
5
|
with_load_path(
|
6
6
|
"#{the_spec_dir}/app/lib",
|
7
7
|
"#{the_spec_dir}/plugin_a/lib",
|
8
8
|
"#{the_spec_dir}/plugin_b/lib",
|
9
9
|
)
|
10
|
-
|
10
|
+
|
11
11
|
inject assets: :assets
|
12
|
-
|
12
|
+
|
13
13
|
before do
|
14
14
|
rad.stub!(:runtime_path).and_return("#{spec_dir}/app/runtime")
|
15
15
|
load "app/init.rb"
|
data/spec/resources_spec.rb
CHANGED
@@ -3,41 +3,41 @@ require 'spec_helper'
|
|
3
3
|
describe 'Resources' do
|
4
4
|
with_tmp_spec_dir
|
5
5
|
inject assets: :assets
|
6
|
-
|
6
|
+
|
7
7
|
describe "development" do
|
8
8
|
before do
|
9
9
|
assets.stub!(:fs_path){|http_path| "#{spec_dir}/development#{http_path}"}
|
10
10
|
assets.stub!(:pack?).and_return(false)
|
11
11
|
end
|
12
|
-
|
13
|
-
it "resolve_http_paths" do
|
12
|
+
|
13
|
+
it "resolve_http_paths" do
|
14
14
|
assets.resolve_http_paths('/app.js').should == %w(/static/vendor/jquery.js /static/lib/tools.js /static/app.js)
|
15
15
|
end
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
describe "production" do
|
19
19
|
before do
|
20
20
|
rad.http.stub!(:public_path).and_return("#{spec_dir}/production/public")
|
21
21
|
assets.stub!(:pack?).and_return(true)
|
22
22
|
@static_dir = "#{spec_dir}/production/public/static"
|
23
23
|
end
|
24
|
-
|
24
|
+
|
25
25
|
it "resolve_http_paths" do
|
26
26
|
assets.resolve_http_paths('/app.js').should == %w(/static/app.packaged.js)
|
27
|
-
|
27
|
+
|
28
28
|
packaged_file = "#{@static_dir}/app.packaged.js".to_file
|
29
29
|
packaged_file.should exist
|
30
30
|
packaged_file.read.should =~ /jQuery.*Tools.*App/m
|
31
|
-
|
31
|
+
|
32
32
|
"#{@static_dir}/lib/tools.packaged.js".to_file.should exist
|
33
33
|
"#{@static_dir}/vendor/jquery.packaged.js".to_file.should exist
|
34
34
|
end
|
35
|
-
|
35
|
+
|
36
36
|
it "should create new packed version if sources are updated" do
|
37
37
|
assets.resolve_http_paths('/app.js').should == %w(/static/app.packaged.js)
|
38
38
|
packaged_file = "#{@static_dir}/app.packaged.js".to_file
|
39
39
|
packaged_file.read.should =~ /jQuery.*Tools.*App/m
|
40
|
-
|
40
|
+
|
41
41
|
sleep 1.1 # file system can't notice smaller difference in file update time
|
42
42
|
"#{@static_dir}/vendor/jquery.js".to_file.write "newQuery"
|
43
43
|
assets.resolve_http_paths('/app.js').should == %w(/static/app.packaged.js)
|
metadata
CHANGED
@@ -1,28 +1,22 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: rad_assets
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
|
-
authors:
|
7
|
+
authors:
|
8
8
|
- Alexey Petrushin
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
|
13
|
-
date: 2011-08-08 00:00:00 +04:00
|
14
|
-
default_executable:
|
12
|
+
date: 2011-09-22 00:00:00.000000000Z
|
15
13
|
dependencies: []
|
16
|
-
|
17
14
|
description:
|
18
15
|
email:
|
19
16
|
executables: []
|
20
|
-
|
21
17
|
extensions: []
|
22
|
-
|
23
18
|
extra_rdoc_files: []
|
24
|
-
|
25
|
-
files:
|
19
|
+
files:
|
26
20
|
- Rakefile
|
27
21
|
- readme.md
|
28
22
|
- lib/components/assets.rb
|
@@ -53,33 +47,28 @@ files:
|
|
53
47
|
- spec/resources_spec/production/public/static/vendor/jquery.js
|
54
48
|
- spec/resources_spec.rb
|
55
49
|
- spec/spec_helper.rb
|
56
|
-
has_rdoc: true
|
57
50
|
homepage: http://github.com/alexeypetrushin/rad_assets
|
58
51
|
licenses: []
|
59
|
-
|
60
52
|
post_install_message:
|
61
53
|
rdoc_options: []
|
62
|
-
|
63
|
-
require_paths:
|
54
|
+
require_paths:
|
64
55
|
- lib
|
65
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
57
|
none: false
|
67
|
-
requirements:
|
68
|
-
- -
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version:
|
71
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
63
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version:
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
77
68
|
requirements: []
|
78
|
-
|
79
69
|
rubyforge_project:
|
80
|
-
rubygems_version: 1.
|
70
|
+
rubygems_version: 1.8.6
|
81
71
|
signing_key:
|
82
72
|
specification_version: 3
|
83
73
|
summary: Assets for Rad Framework
|
84
74
|
test_files: []
|
85
|
-
|