rake-assets 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ rake-assets-*.gem
2
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format progress
2
+ --color
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
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
@@ -0,0 +1,4 @@
1
+ require 'rspec/core/rake_task'
2
+
3
+ RSpec::Core::RakeTask.new('spec')
4
+ task :default => :spec
@@ -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
@@ -0,0 +1,3 @@
1
+ class RakeAssets
2
+ VERSION = '1.0.0'
3
+ end
@@ -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
@@ -0,0 +1,7 @@
1
+ lib = File.expand_path('../lib', __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+
4
+ require 'bundler'
5
+ Bundler.require
6
+
7
+ require 'rake_assets'
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