rake-assets 1.0.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/.gitignore +2 -0
- data/.rspec +2 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +57 -0
- data/Rakefile +4 -0
- data/lib/rake_assets.rb +58 -0
- data/lib/rake_assets/rake.rb +28 -0
- data/lib/rake_assets/version.rb +3 -0
- data/rake_assets.gemspec +26 -0
- data/readme.md +31 -0
- data/spec/rake_assets_spec.rb +87 -0
- data/spec/spec_helper.rb +7 -0
- metadata +174 -0
data/.gitignore
ADDED
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
rake-assets (1.0.0)
|
5
|
+
coffee-script
|
6
|
+
rake
|
7
|
+
sass
|
8
|
+
sprockets
|
9
|
+
uglifier
|
10
|
+
yui-compressor
|
11
|
+
|
12
|
+
GEM
|
13
|
+
remote: http://rubygems.org/
|
14
|
+
specs:
|
15
|
+
POpen4 (0.1.4)
|
16
|
+
Platform (>= 0.4.0)
|
17
|
+
open4
|
18
|
+
Platform (0.4.0)
|
19
|
+
coffee-script (2.2.0)
|
20
|
+
coffee-script-source
|
21
|
+
execjs
|
22
|
+
coffee-script-source (1.3.3)
|
23
|
+
diff-lcs (1.1.3)
|
24
|
+
execjs (1.4.0)
|
25
|
+
multi_json (~> 1.0)
|
26
|
+
hike (1.2.1)
|
27
|
+
multi_json (1.3.6)
|
28
|
+
open4 (1.3.0)
|
29
|
+
rack (1.4.1)
|
30
|
+
rake (0.9.2.2)
|
31
|
+
rspec (2.11.0)
|
32
|
+
rspec-core (~> 2.11.0)
|
33
|
+
rspec-expectations (~> 2.11.0)
|
34
|
+
rspec-mocks (~> 2.11.0)
|
35
|
+
rspec-core (2.11.1)
|
36
|
+
rspec-expectations (2.11.3)
|
37
|
+
diff-lcs (~> 1.1.3)
|
38
|
+
rspec-mocks (2.11.3)
|
39
|
+
sass (3.2.1)
|
40
|
+
sprockets (2.6.0)
|
41
|
+
hike (~> 1.2)
|
42
|
+
multi_json (~> 1.0)
|
43
|
+
rack (~> 1.0)
|
44
|
+
tilt (~> 1.1, != 1.3.0)
|
45
|
+
tilt (1.3.3)
|
46
|
+
uglifier (1.3.0)
|
47
|
+
execjs (>= 0.3.0)
|
48
|
+
multi_json (~> 1.0, >= 1.0.2)
|
49
|
+
yui-compressor (0.9.6)
|
50
|
+
POpen4 (>= 0.1.4)
|
51
|
+
|
52
|
+
PLATFORMS
|
53
|
+
ruby
|
54
|
+
|
55
|
+
DEPENDENCIES
|
56
|
+
rake-assets!
|
57
|
+
rspec
|
data/Rakefile
ADDED
data/lib/rake_assets.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rake_assets/version'
|
2
|
+
|
3
|
+
require 'sprockets'
|
4
|
+
require 'uglifier'
|
5
|
+
require 'yui/compressor'
|
6
|
+
|
7
|
+
class RakeAssets
|
8
|
+
def initialize(settings = {})
|
9
|
+
@settings = {
|
10
|
+
env: Sprockets::Environment.new(Dir.pwd) { |env| env.logger = Logger.new(STDOUT) },
|
11
|
+
root: Dir.pwd,
|
12
|
+
js_path: 'app/assets/scripts',
|
13
|
+
js_compiled: "#{Dir.pwd}/public/scripts/application.js",
|
14
|
+
css_path: 'app/assets/styles',
|
15
|
+
css_compiled: "#{Dir.pwd}/public/css/style.css",
|
16
|
+
# Uglifier Config - https://github.com/lautis/uglifier
|
17
|
+
uglifier: { mangle: true },
|
18
|
+
# Ruby-YUI Compressor Config - https://github.com/sstephenson/ruby-yui-compressor
|
19
|
+
yuicomp: {}
|
20
|
+
}.merge(settings)
|
21
|
+
end
|
22
|
+
|
23
|
+
def check
|
24
|
+
unless File.directory? @settings[:root]
|
25
|
+
raise "Root path (#{@settings[:root]}) was not found."
|
26
|
+
end
|
27
|
+
|
28
|
+
unless File.directory? File.join(@settings[:root], @settings[:js_path])
|
29
|
+
raise "Javascript path (#{@settings[:js_path]}) was not found."
|
30
|
+
end
|
31
|
+
|
32
|
+
unless File.directory? File.dirname(@settings[:js_compiled])
|
33
|
+
raise "Javascript compiled path (#{File.dirname @settings[:js_compiled]}) was not found."
|
34
|
+
end
|
35
|
+
|
36
|
+
unless File.directory? File.join(@settings[:root], @settings[:css_path])
|
37
|
+
raise "Style path (#{@settings[:css_path]}) was not found."
|
38
|
+
end
|
39
|
+
|
40
|
+
unless File.directory? File.dirname(@settings[:css_compiled])
|
41
|
+
raise "Style compiled path (#{File.dirname @settings[:css_compiled]}) was not found."
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def compile_js
|
46
|
+
@settings[:env].clear_paths
|
47
|
+
@settings[:env].js_compressor = Uglifier.new(@settings[:uglifier])
|
48
|
+
@settings[:env].append_path(@settings[:js_path])
|
49
|
+
@settings[:env].find_asset('application').write_to(@settings[:js_compiled])
|
50
|
+
end
|
51
|
+
|
52
|
+
def compile_css
|
53
|
+
@settings[:env].clear_paths
|
54
|
+
@settings[:env].css_compressor = YUI::CssCompressor.new(@settings[:yuicomp])
|
55
|
+
@settings[:env].append_path(@settings[:css_path])
|
56
|
+
@settings[:env].find_asset('application').write_to(@settings[:css_compiled])
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
Bundler.require
|
3
|
+
|
4
|
+
require 'rake_assets'
|
5
|
+
|
6
|
+
namespace :assets do
|
7
|
+
desc 'Compiles both CSS and Javascript'
|
8
|
+
task :compile => [:check, :compile_js, :compile_css] do
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'Checks that the configuration paths are valid'
|
12
|
+
task :check do
|
13
|
+
@rake_assets ||= RakeAssets.new
|
14
|
+
@rake_assets.check
|
15
|
+
end
|
16
|
+
|
17
|
+
desc 'Compiles Javascript files into a single minified Javascript file'
|
18
|
+
task :compile_js do
|
19
|
+
@rake_assets ||= RakeAssets.new
|
20
|
+
@rake_assets.compile_js
|
21
|
+
end
|
22
|
+
|
23
|
+
desc 'Compiles CSS files into a single minified CSS file'
|
24
|
+
task :compile_css do
|
25
|
+
@rake_assets ||= RakeAssets.new
|
26
|
+
@rake_assets.compile_css
|
27
|
+
end
|
28
|
+
end
|
data/rake_assets.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
lib = File.expand_path('../lib', __FILE__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'rake_assets/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = 'rake-assets'
|
7
|
+
gem.date = '2012-09-22'
|
8
|
+
gem.version = RakeAssets::VERSION
|
9
|
+
gem.authors = ['Nick Barth']
|
10
|
+
gem.email = ['nick@nickbarth.ca']
|
11
|
+
gem.summary = 'A Ruby Gem for compiling assets.'
|
12
|
+
gem.description = 'RakeAssets is a small Ruby Gem that contains some simple configurable Rake Tasks and dependancies for making compiling assets faster and easier.'
|
13
|
+
gem.homepage = 'https://github.com/nickbarth/RakeAssets'
|
14
|
+
|
15
|
+
gem.add_dependency('rake')
|
16
|
+
gem.add_dependency('sass')
|
17
|
+
gem.add_dependency('coffee-script')
|
18
|
+
gem.add_dependency('sprockets')
|
19
|
+
gem.add_dependency('yui-compressor')
|
20
|
+
gem.add_dependency('uglifier')
|
21
|
+
gem.add_development_dependency('rspec')
|
22
|
+
|
23
|
+
gem.files = `git ls-files`.split($/)
|
24
|
+
gem.test_files = gem.files.grep /spec/
|
25
|
+
gem.require_paths = ['lib']
|
26
|
+
end
|
data/readme.md
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# RakeAssets
|
2
|
+
RakeAssets is a small Ruby Gem that contains some simple configurable Rake Tasks and dependancies for making compiling assets using Sprockets faster and easier.
|
3
|
+
|
4
|
+
# How To Use
|
5
|
+
|
6
|
+
Install the gem
|
7
|
+
|
8
|
+
gem install rake-assets
|
9
|
+
|
10
|
+
Add a require to your `Rakefile`
|
11
|
+
|
12
|
+
require 'rake_assets/rake'
|
13
|
+
|
14
|
+
Now you will have some rake tasks to compress and minify your CSS and Javascript assets.
|
15
|
+
|
16
|
+
rake -T
|
17
|
+
|
18
|
+
rake assets:compile # Compiles both CSS and Javascript
|
19
|
+
rake assets:check # Checks that the configuration paths are valid
|
20
|
+
rake assets:compile_js # Compiles Javascript files into a single minified Javascript file
|
21
|
+
rake assets:compile_css # Compiles CSS files into a single minified CSS file
|
22
|
+
|
23
|
+
To configure them just initialize a new instance of RakeAssets to override the default paths in your `Rakefile`.
|
24
|
+
|
25
|
+
@rake_assets = RakeAssets.new js_path: 'app/assets/scripts', # Location of application.js
|
26
|
+
js_compiled: "#{Dir.pwd}/public/scripts/application.js", # Path to compile JS too
|
27
|
+
css_path: 'app/assets/styles', # Path of application.css file
|
28
|
+
css_compiled: "#{Dir.pwd}/public/css/style.css", # Path to compile CSS too
|
29
|
+
|
30
|
+
### License
|
31
|
+
MIT © 2012 Nick Barth
|
@@ -0,0 +1,87 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe RakeAssets do
|
4
|
+
before(:each) do
|
5
|
+
@writer = double(:writer)
|
6
|
+
@sprockets = Struct.new(:js_compressor, :css_compressor).new
|
7
|
+
@options = {
|
8
|
+
root: 'ROOT_PATH',
|
9
|
+
js_path: 'JS_PATH',
|
10
|
+
js_compiled: 'JS_COMPILED_PATH',
|
11
|
+
css_path: 'CSS_PATH',
|
12
|
+
css_compiled: 'CSS_COMPILED_PATH'
|
13
|
+
}
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'on javascript compile' do
|
17
|
+
it 'it calls sprockets correctly' do
|
18
|
+
@writer.should_receive(:write_to).with('JS_COMPILED_PATH')
|
19
|
+
@sprockets.should_receive(:clear_paths).once
|
20
|
+
@sprockets.should_receive(:append_path).with('JS_PATH')
|
21
|
+
@sprockets.should_receive(:find_asset).with('application').and_return(@writer)
|
22
|
+
|
23
|
+
@options[:env] = @sprockets
|
24
|
+
@rake_assets = RakeAssets.new @options
|
25
|
+
|
26
|
+
@rake_assets.compile_js
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'on css compile' do
|
31
|
+
it 'it calls sprockets correctly' do
|
32
|
+
@writer.should_receive(:write_to).with('CSS_COMPILED_PATH')
|
33
|
+
@sprockets.should_receive(:clear_paths).once
|
34
|
+
@sprockets.should_receive(:append_path).with('CSS_PATH')
|
35
|
+
@sprockets.should_receive(:find_asset).with('application').and_return(@writer)
|
36
|
+
|
37
|
+
@options[:env] = @sprockets
|
38
|
+
@rake_assets = RakeAssets.new @options
|
39
|
+
|
40
|
+
@rake_assets.compile_css
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'on path check' do
|
45
|
+
it 'succeeds on valid paths' do
|
46
|
+
@options = {
|
47
|
+
root: '/',
|
48
|
+
js_path: '/',
|
49
|
+
js_compiled: '/',
|
50
|
+
css_path: '/',
|
51
|
+
css_compiled: '/'
|
52
|
+
}
|
53
|
+
@rake_assets = RakeAssets.new @options
|
54
|
+
lambda { @rake_assets.check }.should_not raise_error
|
55
|
+
end
|
56
|
+
|
57
|
+
it 'fails on invalid root' do
|
58
|
+
@options[:root] = 'INVALID_PATH'
|
59
|
+
@rake_assets = RakeAssets.new @options
|
60
|
+
lambda { @rake_assets.check }.should raise_error
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'fails on invalid JS Path' do
|
64
|
+
@options[:js_path] = 'INVALID_PATH'
|
65
|
+
@rake_assets = RakeAssets.new @options
|
66
|
+
lambda { @rake_assets.check }.should raise_error
|
67
|
+
end
|
68
|
+
|
69
|
+
it 'fails on invalid JS Compile Path' do
|
70
|
+
@options[:js_compiled] = 'INVALID_PATH'
|
71
|
+
@rake_assets = RakeAssets.new @options
|
72
|
+
lambda { @rake_assets.check }.should raise_error
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'fails on invalid CSS Path' do
|
76
|
+
@options[:css_path] = 'INVALID_PATH'
|
77
|
+
@rake_assets = RakeAssets.new @options
|
78
|
+
lambda { @rake_assets.check }.should raise_error
|
79
|
+
end
|
80
|
+
|
81
|
+
it 'fails on invalid CSS Compile Path' do
|
82
|
+
@options[:css_compiled] = 'INVALID_PATH'
|
83
|
+
@rake_assets = RakeAssets.new @options
|
84
|
+
lambda { @rake_assets.check }.should raise_error
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,174 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rake-assets
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Nick Barth
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-09-22 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rake
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: sass
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: coffee-script
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :runtime
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: sprockets
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: yui-compressor
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: uglifier
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :runtime
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: rspec
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: RakeAssets is a small Ruby Gem that contains some simple configurable
|
127
|
+
Rake Tasks and dependancies for making compiling assets faster and easier.
|
128
|
+
email:
|
129
|
+
- nick@nickbarth.ca
|
130
|
+
executables: []
|
131
|
+
extensions: []
|
132
|
+
extra_rdoc_files: []
|
133
|
+
files:
|
134
|
+
- .gitignore
|
135
|
+
- .rspec
|
136
|
+
- Gemfile
|
137
|
+
- Gemfile.lock
|
138
|
+
- Rakefile
|
139
|
+
- lib/rake_assets.rb
|
140
|
+
- lib/rake_assets/rake.rb
|
141
|
+
- lib/rake_assets/version.rb
|
142
|
+
- rake_assets.gemspec
|
143
|
+
- readme.md
|
144
|
+
- spec/rake_assets_spec.rb
|
145
|
+
- spec/spec_helper.rb
|
146
|
+
homepage: https://github.com/nickbarth/RakeAssets
|
147
|
+
licenses: []
|
148
|
+
post_install_message:
|
149
|
+
rdoc_options: []
|
150
|
+
require_paths:
|
151
|
+
- lib
|
152
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
none: false
|
160
|
+
requirements:
|
161
|
+
- - ! '>='
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
requirements: []
|
165
|
+
rubyforge_project:
|
166
|
+
rubygems_version: 1.8.24
|
167
|
+
signing_key:
|
168
|
+
specification_version: 3
|
169
|
+
summary: A Ruby Gem for compiling assets.
|
170
|
+
test_files:
|
171
|
+
- .rspec
|
172
|
+
- rake_assets.gemspec
|
173
|
+
- spec/rake_assets_spec.rb
|
174
|
+
- spec/spec_helper.rb
|