rails_asset_packager 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/CHANGELOG +7 -0
- data/Gemfile +4 -0
- data/README +174 -0
- data/Rakefile +2 -0
- data/lib/jsmin.rb +211 -0
- data/lib/rails_asset_packager/asset_package.rb +211 -0
- data/lib/rails_asset_packager/asset_package_helper.rb +39 -0
- data/lib/rails_asset_packager/railtie.rb +13 -0
- data/lib/rails_asset_packager/version.rb +3 -0
- data/lib/rails_asset_packager.rb +3 -0
- data/lib/tasks/asset_packager_tasks.rake +90 -0
- data/rails/init.rb +1 -0
- data/rails_asset_packager.gemspec +21 -0
- data/test/asset_package_helper_development_test.rb +102 -0
- data/test/asset_package_helper_production_test.rb +142 -0
- data/test/asset_packager_test.rb +91 -0
- data/test/asset_packages.yml +20 -0
- data/test/assets/javascripts/application.js +2 -0
- data/test/assets/javascripts/bar.js +4 -0
- data/test/assets/javascripts/controls.js +815 -0
- data/test/assets/javascripts/dragdrop.js +913 -0
- data/test/assets/javascripts/effects.js +958 -0
- data/test/assets/javascripts/foo.js +4 -0
- data/test/assets/javascripts/prototype.js +2006 -0
- data/test/assets/stylesheets/bar.css +16 -0
- data/test/assets/stylesheets/foo.css +16 -0
- data/test/assets/stylesheets/header.css +16 -0
- data/test/assets/stylesheets/screen.css +16 -0
- data/test/assets/stylesheets/subdir/bar.css +16 -0
- data/test/assets/stylesheets/subdir/foo.css +16 -0
- metadata +133 -0
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require File.dirname(__FILE__) + '/../rails_asset_packager/asset_package'
|
3
|
+
|
4
|
+
namespace :asset do
|
5
|
+
namespace :packager do
|
6
|
+
|
7
|
+
desc "Merge and compress assets"
|
8
|
+
task :build_all do
|
9
|
+
RailsAssetPackager::AssetPackage.build_all
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Delete all asset builds"
|
13
|
+
task :delete_all do
|
14
|
+
RailsAssetPackager::AssetPackage.delete_all
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Generate asset_packages.yml from existing assets"
|
18
|
+
task :create_yml do
|
19
|
+
RailsAssetPackager::AssetPackage.create_yml
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
namespace :cache do
|
25
|
+
S3_CONFIG = YAML.load_file(File.join(Rails.root, "config/s3.yml"))[Rails.env] rescue nil || {}
|
26
|
+
ASSET_PKG_CONFIG = YAML.load_file(File.join(Rails.root, "config/asset_packages.yml")) rescue nil || {}
|
27
|
+
|
28
|
+
desc "start aws"
|
29
|
+
task :aws do
|
30
|
+
require 'aws/s3'
|
31
|
+
|
32
|
+
AWS::S3::Base.establish_connection!(
|
33
|
+
:access_key_id => S3_CONFIG['access_key_id'],
|
34
|
+
:secret_access_key => S3_CONFIG['secret_access_key']
|
35
|
+
)
|
36
|
+
end
|
37
|
+
|
38
|
+
desc "update s3"
|
39
|
+
task :s3 => :aws do
|
40
|
+
prefix = ''
|
41
|
+
|
42
|
+
files = []
|
43
|
+
|
44
|
+
ASSET_PKG_CONFIG.keys.each do |set|
|
45
|
+
if set == 'javascripts' || set == 'stylesheets'
|
46
|
+
ext = (set == 'javascripts') ? "js" : "css"
|
47
|
+
|
48
|
+
ASSET_PKG_CONFIG[set].each do |val|
|
49
|
+
val.keys.each do |val|
|
50
|
+
files << "./public/#{set}/#{val}_packaged.#{ext}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
elsif set == 'uploads'
|
54
|
+
ASSET_PKG_CONFIG[set].each do |val|
|
55
|
+
if File.directory?("./public/#{val}")
|
56
|
+
files = files + Dir.glob("./public/#{val}/**/*.*")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
files.uniq!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
files.each do |f|
|
65
|
+
next if File.directory?(f)
|
66
|
+
puts f
|
67
|
+
|
68
|
+
key = f.gsub(/\.\/public/, prefix)
|
69
|
+
puts " -> %s" % key
|
70
|
+
|
71
|
+
AWS::S3::S3Object.store(
|
72
|
+
key,
|
73
|
+
File.open(f),
|
74
|
+
S3_CONFIG['bucket'],
|
75
|
+
:access => :public_read,
|
76
|
+
'Cache-Control' => 'max-age=315360000',
|
77
|
+
'x-amz-storage-class' => 'REDUCED_REDUNDANCY'
|
78
|
+
)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "cache assets and update s3 for production"
|
83
|
+
task :production do
|
84
|
+
Rake::Task['asset:packager:delete_all'].invoke
|
85
|
+
Rake::Task['asset:packager:build_all'].invoke
|
86
|
+
Rake::Task['asset:cache:s3'].invoke
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
data/rails/init.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require 'rails_asset_packager'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "rails_asset_packager/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "rails_asset_packager"
|
7
|
+
s.version = RailsAssetPackager::VERSION
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.authors = ["Scott Becker","Katherine G Pe","James Thompson"]
|
10
|
+
s.email = ["","","james@plainprograms.com"]
|
11
|
+
s.homepage = "http://rubygems.org/gems/rails_asset_packager"
|
12
|
+
s.summary = %q{Javascript and CSS asset compression for Rails}
|
13
|
+
s.description = %q{A tool to compress Javascript and CSS assets for production Rals applications.}
|
14
|
+
|
15
|
+
s.files = `git ls-files`.split("\n")
|
16
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
|
20
|
+
s.add_dependency "aws-s3", "~> 0.6.2"
|
21
|
+
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
3
|
+
ENV['RAILS_ENV'] = "development"
|
4
|
+
require File.dirname(__FILE__) + '/../../../../config/environment'
|
5
|
+
require 'test/unit'
|
6
|
+
require 'rubygems'
|
7
|
+
require 'mocha'
|
8
|
+
|
9
|
+
require 'action_controller/test_process'
|
10
|
+
|
11
|
+
ActionController::Base.logger = nil
|
12
|
+
ActionController::Routing::Routes.reload rescue nil
|
13
|
+
|
14
|
+
class AssetPackageHelperDevelopmentTest < Test::Unit::TestCase
|
15
|
+
include ActionController::Assertions::DomAssertions
|
16
|
+
include ActionController::TestCase::Assertions
|
17
|
+
include ActionView::Helpers::TagHelper
|
18
|
+
include ActionView::Helpers::AssetTagHelper
|
19
|
+
include RailsAssetPackager::AssetPackageHelper
|
20
|
+
|
21
|
+
def setup
|
22
|
+
RailsAssetPackager::AssetPackage.asset_base_path = "#{Rails.root}/vendor/plugins/asset_packager/test/assets"
|
23
|
+
RailsAssetPackager::AssetPackage.asset_packages_yml = YAML.load_file("#{Rails.root}/vendor/plugins/asset_packager/test/asset_packages.yml")
|
24
|
+
|
25
|
+
RailsAssetPackager::AssetPackage.any_instance.stubs(:log)
|
26
|
+
|
27
|
+
@controller = Class.new do
|
28
|
+
def request
|
29
|
+
@request ||= ActionController::TestRequest.new
|
30
|
+
end
|
31
|
+
end.new
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_js_expected_string(*sources)
|
35
|
+
sources.map {|s| javascript_include_tag(s) }.join("\n")
|
36
|
+
end
|
37
|
+
|
38
|
+
def build_css_expected_string(*sources)
|
39
|
+
sources.map {|s| stylesheet_link_tag(s) }.join("\n")
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_js_basic
|
43
|
+
assert_dom_equal build_js_expected_string("prototype"),
|
44
|
+
javascript_include_merged("prototype")
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_js_multiple_packages
|
48
|
+
assert_dom_equal build_js_expected_string("prototype", "foo"),
|
49
|
+
javascript_include_merged("prototype", "foo")
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_js_unpackaged_file
|
53
|
+
assert_dom_equal build_js_expected_string("prototype", "foo", "not_part_of_a_package"),
|
54
|
+
javascript_include_merged("prototype", "foo", "not_part_of_a_package")
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_js_multiple_from_same_package
|
58
|
+
assert_dom_equal build_js_expected_string("prototype", "effects", "controls", "not_part_of_a_package", "foo"),
|
59
|
+
javascript_include_merged("prototype", "effects", "controls", "not_part_of_a_package", "foo")
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_js_by_package_name
|
63
|
+
assert_dom_equal build_js_expected_string("prototype", "effects", "controls", "dragdrop"),
|
64
|
+
javascript_include_merged(:base)
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_js_multiple_package_names
|
68
|
+
assert_dom_equal build_js_expected_string("prototype", "effects", "controls", "dragdrop", "foo", "bar", "application"),
|
69
|
+
javascript_include_merged(:base, :secondary)
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_css_basic
|
73
|
+
assert_dom_equal build_css_expected_string("screen"),
|
74
|
+
stylesheet_link_merged("screen")
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_css_multiple_packages
|
78
|
+
assert_dom_equal build_css_expected_string("screen", "foo", "subdir/bar"),
|
79
|
+
stylesheet_link_merged("screen", "foo", "subdir/bar")
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_css_unpackaged_file
|
83
|
+
assert_dom_equal build_css_expected_string("screen", "foo", "not_part_of_a_package", "subdir/bar"),
|
84
|
+
stylesheet_link_merged("screen", "foo", "not_part_of_a_package", "subdir/bar")
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_css_multiple_from_same_package
|
88
|
+
assert_dom_equal build_css_expected_string("screen", "header", "not_part_of_a_package", "foo", "bar", "subdir/foo", "subdir/bar"),
|
89
|
+
stylesheet_link_merged("screen", "header", "not_part_of_a_package", "foo", "bar", "subdir/foo", "subdir/bar")
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_css_by_package_name
|
93
|
+
assert_dom_equal build_css_expected_string("screen", "header"),
|
94
|
+
stylesheet_link_merged(:base)
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_css_multiple_package_names
|
98
|
+
assert_dom_equal build_css_expected_string("screen", "header", "foo", "bar", "subdir/foo", "subdir/bar"),
|
99
|
+
stylesheet_link_merged(:base, :secondary, "subdir/styles")
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__) + '/../lib')
|
2
|
+
|
3
|
+
require File.dirname(__FILE__) + '/../../../../config/environment'
|
4
|
+
require 'test/unit'
|
5
|
+
require 'rubygems'
|
6
|
+
require 'mocha'
|
7
|
+
|
8
|
+
require 'action_controller/test_process'
|
9
|
+
|
10
|
+
ActionController::Base.logger = nil
|
11
|
+
ActionController::Routing::Routes.reload rescue nil
|
12
|
+
|
13
|
+
class AssetPackageHelperProductionTest < Test::Unit::TestCase
|
14
|
+
include ActionController::Assertions::DomAssertions
|
15
|
+
include ActionController::TestCase::Assertions
|
16
|
+
include ActionView::Helpers::TagHelper
|
17
|
+
include ActionView::Helpers::AssetTagHelper
|
18
|
+
include RailsAssetPackager::AssetPackageHelper
|
19
|
+
|
20
|
+
cattr_accessor :packages_built
|
21
|
+
|
22
|
+
def setup
|
23
|
+
RailsAssetPackager::AssetPackage.asset_base_path = "#{Rails.root}/vendor/plugins/asset_packager/test/assets"
|
24
|
+
RailsAssetPackager::AssetPackage.asset_packages_yml = YAML.load_file("#{Rails.root}/vendor/plugins/asset_packager/test/asset_packages.yml")
|
25
|
+
|
26
|
+
RailsAssetPackager::AssetPackage.any_instance.stubs(:log)
|
27
|
+
self.stubs(:should_merge?).returns(true)
|
28
|
+
|
29
|
+
@controller = Class.new do
|
30
|
+
def request
|
31
|
+
@request ||= ActionController::TestRequest.new
|
32
|
+
end
|
33
|
+
end.new
|
34
|
+
|
35
|
+
build_packages_once
|
36
|
+
end
|
37
|
+
|
38
|
+
def build_packages_once
|
39
|
+
unless @@packages_built
|
40
|
+
RailsAssetPackager::AssetPackage.build_all
|
41
|
+
@@packages_built = true
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_js_expected_string(*sources)
|
46
|
+
sources.map {|s| javascript_include_tag(s) }.join("\n")
|
47
|
+
end
|
48
|
+
|
49
|
+
def build_css_expected_string(*sources)
|
50
|
+
sources.map {|s| stylesheet_link_tag(s) }.join("\n")
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_js_basic
|
54
|
+
current_file = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "prototype").current_file
|
55
|
+
assert_dom_equal build_js_expected_string(current_file),
|
56
|
+
javascript_include_merged("prototype")
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_js_multiple_packages
|
60
|
+
current_file1 = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "prototype").current_file
|
61
|
+
current_file2 = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "foo").current_file
|
62
|
+
|
63
|
+
assert_dom_equal build_js_expected_string(current_file1, current_file2),
|
64
|
+
javascript_include_merged("prototype", "foo")
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_js_unpackaged_file
|
68
|
+
current_file1 = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "prototype").current_file
|
69
|
+
current_file2 = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "foo").current_file
|
70
|
+
|
71
|
+
assert_dom_equal build_js_expected_string(current_file1, current_file2, "not_part_of_a_package"),
|
72
|
+
javascript_include_merged("prototype", "foo", "not_part_of_a_package")
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_js_multiple_from_same_package
|
76
|
+
current_file1 = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "prototype").current_file
|
77
|
+
current_file2 = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "foo").current_file
|
78
|
+
|
79
|
+
assert_dom_equal build_js_expected_string(current_file1, "not_part_of_a_package", current_file2),
|
80
|
+
javascript_include_merged("prototype", "effects", "controls", "not_part_of_a_package", "foo")
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_js_by_package_name
|
84
|
+
package_name = RailsAssetPackager::AssetPackage.find_by_target("javascripts", "base").current_file
|
85
|
+
assert_dom_equal build_js_expected_string(package_name),
|
86
|
+
javascript_include_merged(:base)
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_js_multiple_package_names
|
90
|
+
package_name1 = RailsAssetPackager::AssetPackage.find_by_target("javascripts", "base").current_file
|
91
|
+
package_name2 = RailsAssetPackager::AssetPackage.find_by_target("javascripts", "secondary").current_file
|
92
|
+
assert_dom_equal build_js_expected_string(package_name1, package_name2),
|
93
|
+
javascript_include_merged(:base, :secondary)
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_css_basic
|
97
|
+
current_file = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "screen").current_file
|
98
|
+
assert_dom_equal build_css_expected_string(current_file),
|
99
|
+
stylesheet_link_merged("screen")
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_css_multiple_packages
|
103
|
+
current_file1 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "screen").current_file
|
104
|
+
current_file2 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "foo").current_file
|
105
|
+
current_file3 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "subdir/bar").current_file
|
106
|
+
|
107
|
+
assert_dom_equal build_css_expected_string(current_file1, current_file2, current_file3),
|
108
|
+
stylesheet_link_merged("screen", "foo", "subdir/bar")
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_css_unpackaged_file
|
112
|
+
current_file1 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "screen").current_file
|
113
|
+
current_file2 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "foo").current_file
|
114
|
+
|
115
|
+
assert_dom_equal build_css_expected_string(current_file1, current_file2, "not_part_of_a_package"),
|
116
|
+
stylesheet_link_merged("screen", "foo", "not_part_of_a_package")
|
117
|
+
end
|
118
|
+
|
119
|
+
def test_css_multiple_from_same_package
|
120
|
+
current_file1 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "screen").current_file
|
121
|
+
current_file2 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "foo").current_file
|
122
|
+
current_file3 = RailsAssetPackager::AssetPackage.find_by_source("stylesheets", "subdir/bar").current_file
|
123
|
+
|
124
|
+
assert_dom_equal build_css_expected_string(current_file1, "not_part_of_a_package", current_file2, current_file3),
|
125
|
+
stylesheet_link_merged("screen", "header", "not_part_of_a_package", "foo", "bar", "subdir/foo", "subdir/bar")
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_css_by_package_name
|
129
|
+
package_name = RailsAssetPackager::AssetPackage.find_by_target("stylesheets", "base").current_file
|
130
|
+
assert_dom_equal build_css_expected_string(package_name),
|
131
|
+
stylesheet_link_merged(:base)
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_css_multiple_package_names
|
135
|
+
package_name1 = RailsAssetPackager::AssetPackage.find_by_target("stylesheets", "base").current_file
|
136
|
+
package_name2 = RailsAssetPackager::AssetPackage.find_by_target("stylesheets", "secondary").current_file
|
137
|
+
package_name3 = RailsAssetPackager::AssetPackage.find_by_target("stylesheets", "subdir/styles").current_file
|
138
|
+
assert_dom_equal build_css_expected_string(package_name1, package_name2, package_name3),
|
139
|
+
stylesheet_link_merged(:base, :secondary, "subdir/styles")
|
140
|
+
end
|
141
|
+
|
142
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../../../../config/environment'
|
2
|
+
require 'test/unit'
|
3
|
+
require 'mocha'
|
4
|
+
|
5
|
+
class AssetPackagerTest < Test::Unit::TestCase
|
6
|
+
include RailsAssetPackager
|
7
|
+
|
8
|
+
def setup
|
9
|
+
RailsAssetPackager::AssetPackage.asset_base_path = "#{Rails.root}/vendor/plugins/asset_packager/test/assets"
|
10
|
+
RailsAssetPackager::AssetPackage.asset_packages_yml = YAML.load_file("#{Rails.root}/vendor/plugins/asset_packager/test/asset_packages.yml")
|
11
|
+
|
12
|
+
RailsAssetPackager::AssetPackage.any_instance.stubs(:log)
|
13
|
+
RailsAssetPackager::AssetPackage.build_all
|
14
|
+
end
|
15
|
+
|
16
|
+
def teardown
|
17
|
+
RailsAssetPackager::AssetPackage.delete_all
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_find_by_type
|
21
|
+
js_asset_packages = RailsAssetPackager::AssetPackage.find_by_type("javascripts")
|
22
|
+
assert_equal 2, js_asset_packages.length
|
23
|
+
assert_equal "base", js_asset_packages[0].target
|
24
|
+
assert_equal ["prototype", "effects", "controls", "dragdrop"], js_asset_packages[0].sources
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_find_by_target
|
28
|
+
package = RailsAssetPackager::AssetPackage.find_by_target("javascripts", "base")
|
29
|
+
assert_equal "base", package.target
|
30
|
+
assert_equal ["prototype", "effects", "controls", "dragdrop"], package.sources
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_find_by_source
|
34
|
+
package = RailsAssetPackager::AssetPackage.find_by_source("javascripts", "controls")
|
35
|
+
assert_equal "base", package.target
|
36
|
+
assert_equal ["prototype", "effects", "controls", "dragdrop"], package.sources
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_delete_and_build
|
40
|
+
RailsAssetPackager::AssetPackage.delete_all
|
41
|
+
js_package_names = Dir.new("#{RailsAssetPackager::AssetPackage.asset_base_path}/javascripts").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.js/) }
|
42
|
+
css_package_names = Dir.new("#{RailsAssetPackager::AssetPackage.asset_base_path}/stylesheets").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }
|
43
|
+
css_subdir_package_names = Dir.new("#{RailsAssetPackager::AssetPackage.asset_base_path}/stylesheets/subdir").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }
|
44
|
+
|
45
|
+
assert_equal 0, js_package_names.length
|
46
|
+
assert_equal 0, css_package_names.length
|
47
|
+
assert_equal 0, css_subdir_package_names.length
|
48
|
+
|
49
|
+
RailsAssetPackager::AssetPackage.build_all
|
50
|
+
js_package_names = Dir.new("#{RailsAssetPackager::AssetPackage.asset_base_path}/javascripts").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.js/) }.sort
|
51
|
+
css_package_names = Dir.new("#{RailsAssetPackager::AssetPackage.asset_base_path}/stylesheets").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }.sort
|
52
|
+
css_subdir_package_names = Dir.new("#{RailsAssetPackager::AssetPackage.asset_base_path}/stylesheets/subdir").entries.delete_if { |x| ! (x =~ /\A\w+_packaged.css/) }.sort
|
53
|
+
|
54
|
+
assert_equal 2, js_package_names.length
|
55
|
+
assert_equal 2, css_package_names.length
|
56
|
+
assert_equal 1, css_subdir_package_names.length
|
57
|
+
assert js_package_names[0].match(/\Abase_packaged.js\z/)
|
58
|
+
assert js_package_names[1].match(/\Asecondary_packaged.js\z/)
|
59
|
+
assert css_package_names[0].match(/\Abase_packaged.css\z/)
|
60
|
+
assert css_package_names[1].match(/\Asecondary_packaged.css\z/)
|
61
|
+
assert css_subdir_package_names[0].match(/\Astyles_packaged.css\z/)
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_js_names_from_sources
|
65
|
+
package_names = RailsAssetPackager::AssetPackage.targets_from_sources("javascripts", ["prototype", "effects", "noexist1", "controls", "foo", "noexist2"])
|
66
|
+
assert_equal 4, package_names.length
|
67
|
+
assert package_names[0].match(/\Abase_packaged\z/)
|
68
|
+
assert_equal package_names[1], "noexist1"
|
69
|
+
assert package_names[2].match(/\Asecondary_packaged\z/)
|
70
|
+
assert_equal package_names[3], "noexist2"
|
71
|
+
end
|
72
|
+
|
73
|
+
def test_css_names_from_sources
|
74
|
+
package_names = RailsAssetPackager::AssetPackage.targets_from_sources("stylesheets", ["header", "screen", "noexist1", "foo", "noexist2"])
|
75
|
+
assert_equal 4, package_names.length
|
76
|
+
assert package_names[0].match(/\Abase_packaged\z/)
|
77
|
+
assert_equal package_names[1], "noexist1"
|
78
|
+
assert package_names[2].match(/\Asecondary_packaged\z/)
|
79
|
+
assert_equal package_names[3], "noexist2"
|
80
|
+
end
|
81
|
+
|
82
|
+
def test_should_return_merge_environments_when_set
|
83
|
+
RailsAssetPackager::AssetPackage.merge_environments = ["staging", "production"]
|
84
|
+
assert_equal ["staging", "production"], RailsAssetPackager::AssetPackage.merge_environments
|
85
|
+
end
|
86
|
+
|
87
|
+
def test_should_only_return_production_merge_environment_when_not_set
|
88
|
+
assert_equal ["production"], RailsAssetPackager::AssetPackage.merge_environments
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
javascripts:
|
2
|
+
- base:
|
3
|
+
- prototype
|
4
|
+
- effects
|
5
|
+
- controls
|
6
|
+
- dragdrop
|
7
|
+
- secondary:
|
8
|
+
- foo
|
9
|
+
- bar
|
10
|
+
- application
|
11
|
+
stylesheets:
|
12
|
+
- base:
|
13
|
+
- screen
|
14
|
+
- header
|
15
|
+
- secondary:
|
16
|
+
- foo
|
17
|
+
- bar
|
18
|
+
- subdir/styles:
|
19
|
+
- foo
|
20
|
+
- bar
|