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 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