rails2_asset_pipeline 0.1.2 → 0.1.3
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/Gemfile.lock +1 -1
- data/Readme.md +18 -20
- data/lib/rails2_asset_pipeline/jammit_converter.rb +71 -0
- data/lib/rails2_asset_pipeline/tasks.rb +3 -25
- data/lib/rails2_asset_pipeline/version.rb +1 -1
- data/spec/fake_rails/config/assets.yml +1 -0
- data/spec/rails2_asset_pipeline/tasks_spec.rb +27 -2
- metadata +5 -4
data/Gemfile.lock
CHANGED
data/Readme.md
CHANGED
@@ -6,15 +6,18 @@ Familiar asset handling for those stuck on Rails 2.
|
|
6
6
|
- application.js?time for development
|
7
7
|
- application-MD5.js for production
|
8
8
|
- old asset versions can stay around during deploys
|
9
|
+
- converter for jammit asset.yml
|
9
10
|
- no monkey-patching, everything is opt-in
|
10
11
|
|
12
|
+
[Example application](https://github.com/grosser/rails2_asset_pipeline_exmaple)
|
13
|
+
|
11
14
|
# Usage
|
12
15
|
|
13
16
|
```
|
14
17
|
rake assets:precompile
|
15
18
|
rake assets:clean
|
16
|
-
rake assets:remove_old
|
17
|
-
rake assets:convert_jammit
|
19
|
+
rake assets:remove_old # Keeps current + 2 older versions in public/assets
|
20
|
+
rake assets:convert_jammit # reads config/assets.yml and converts packs into `app/assets/<type>/<pack>.js` with `//= require <dependency>`
|
18
21
|
```
|
19
22
|
|
20
23
|
```Erb
|
@@ -30,14 +33,7 @@ rake assets:convert_jammit
|
|
30
33
|
# config/environment.rb
|
31
34
|
config.gem "rails2_asset_pipeline"
|
32
35
|
|
33
|
-
|
34
|
-
begin
|
35
|
-
require "rails2_asset_pipeline/tasks"
|
36
|
-
rescue LoadError
|
37
|
-
puts "rails2_asset_pipeline is not installed, you probably should run 'rake gems:install' or 'bundle install'."
|
38
|
-
end
|
39
|
-
|
40
|
-
## Initializer
|
36
|
+
### Initializer
|
41
37
|
Here you can do additional configuration of sprockets.
|
42
38
|
|
43
39
|
```Ruby
|
@@ -47,7 +43,16 @@ Rails2AssetPipeline.setup do |sprockets|
|
|
47
43
|
end
|
48
44
|
```
|
49
45
|
|
50
|
-
|
46
|
+
### Tasks
|
47
|
+
|
48
|
+
# Rakefile
|
49
|
+
begin
|
50
|
+
require "rails2_asset_pipeline/tasks"
|
51
|
+
rescue LoadError
|
52
|
+
puts "rails2_asset_pipeline is not installed, you probably should run 'rake gems:install' or 'bundle install'."
|
53
|
+
end
|
54
|
+
|
55
|
+
### Dynamic assets for development
|
51
56
|
Setup a config.ru so development has dynamic assets
|
52
57
|
|
53
58
|
```Ruby
|
@@ -65,7 +70,7 @@ map '/' do
|
|
65
70
|
end
|
66
71
|
```
|
67
72
|
|
68
|
-
|
73
|
+
### View helpers
|
69
74
|
```
|
70
75
|
# app/helpers/application_helper.rb
|
71
76
|
require 'rails2_asset_pipeline/view_helpers'
|
@@ -76,14 +81,7 @@ end
|
|
76
81
|
```
|
77
82
|
|
78
83
|
|
79
|
-
#
|
80
|
-
|
81
|
-
rake assets:precompile
|
82
|
-
rake assets:clean
|
83
|
-
rake assets:remove_old # Keeps current + 2 older versions in public/assets
|
84
|
-
rake assets:convert_jammit # reads config/assets.yml and converts packs into `app/assets/<type>/<pack>.js` with `//= require <dependency>`
|
85
|
-
|
86
|
-
## Todo
|
84
|
+
# Todo
|
87
85
|
- read config from Rails 3 style config.assets
|
88
86
|
- asset image helpers for inside css/scss
|
89
87
|
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
module Rails2AssetPipeline
|
4
|
+
module JammitConverter
|
5
|
+
def self.convert
|
6
|
+
move_to_app
|
7
|
+
cleanup_scss
|
8
|
+
convert_javascript_packs
|
9
|
+
convert_stylesheet_packs
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def self.jammit
|
15
|
+
@jammit ||= YAML.load_file("config/assets.yml")
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.cleanup_scss
|
19
|
+
stylesheets = Dir["app/assets/stylesheets/**/*"].select{|f| File.file?(f) and f =~ /\.s?css$/ }
|
20
|
+
|
21
|
+
# cleanup import of .scss
|
22
|
+
stylesheets.each do |file|
|
23
|
+
content = File.read(file)
|
24
|
+
rex = /^(@import ['"].*).scss(['"]);/
|
25
|
+
if content =~ rex
|
26
|
+
File.open(file, 'w'){|f| f.write content.gsub(rex, "\\1.css\\2;") }
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# cleanup .scss -> .css.scss
|
31
|
+
stylesheets.each do |file|
|
32
|
+
sh "mv #{file} #{file.sub(".scss", ".css.scss")}" if file =~ /\.scss$/ and not file =~ /\.css\.scss$/
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.convert_javascript_packs
|
37
|
+
# convert javascript packs
|
38
|
+
jammit["javascripts"].each do |pack, assets|
|
39
|
+
File.open("app/assets/javascripts/#{pack}.js", "w") do |f|
|
40
|
+
assets.each do |file|
|
41
|
+
fuzzy = /[\/*]+$/
|
42
|
+
f.puts "//= #{file =~ fuzzy ? "require_tree" : "require"} #{file.sub("public/javascripts/", "").sub(".js","").sub(fuzzy,"")}"
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.convert_stylesheet_packs
|
49
|
+
jammit["stylesheets"].each do |pack, assets|
|
50
|
+
File.open("app/assets/stylesheets/#{pack}.css", "w") do |f|
|
51
|
+
f.puts "/*"
|
52
|
+
assets.each do |file|
|
53
|
+
f.puts " *= require #{file.sub("public/stylesheets/", "").sub(/.s?css$/,"")}"
|
54
|
+
end
|
55
|
+
f.puts " */"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# TODO only move .js/.css/.scss, no images
|
61
|
+
def self.move_to_app
|
62
|
+
sh "mkdir app/assets" unless File.exist?("app/assets")
|
63
|
+
folders = ["javascripts", "stylesheets"]
|
64
|
+
folders.each do |folder|
|
65
|
+
target = "app/assets/#{folder}"
|
66
|
+
raise "Remove #{target} before proceeding, I'm not merging!" if File.exist?(target)
|
67
|
+
end
|
68
|
+
folders.each{|f| sh "mv public/#{f} app/assets/#{f}" }
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: UTF-8
|
1
2
|
require 'rake/sprocketstask'
|
2
3
|
|
3
4
|
namespace :assets do
|
@@ -32,30 +33,7 @@ namespace :assets do
|
|
32
33
|
|
33
34
|
desc "converts project from jammit based assets.yml"
|
34
35
|
task :convert_jammit do
|
35
|
-
require '
|
36
|
-
|
37
|
-
sh "mkdir app/assets" unless File.exist?("app/assets")
|
38
|
-
sh "mv public/javascripts app/assets/javascripts"
|
39
|
-
sh "mv public/stylesheets app/assets/stylesheets"
|
40
|
-
|
41
|
-
jammit = YAML.load_file("config/assets.yml")
|
42
|
-
|
43
|
-
jammit["javascripts"].each do |pack, assets|
|
44
|
-
File.open("app/assets/javascripts/#{pack}.js", "w") do |f|
|
45
|
-
assets.each do |file|
|
46
|
-
f.puts "//= require #{file.sub("public/javascripts", "").sub(".js","")}"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
jammit["stylesheets"].each do |pack, assets|
|
52
|
-
File.open("app/assets/stylesheets/#{pack}.css", "w") do |f|
|
53
|
-
f.puts "/*"
|
54
|
-
assets.each do |file|
|
55
|
-
f.puts "//= require #{file.sub("public/stylesheets", "").sub(".css","")}"
|
56
|
-
end
|
57
|
-
f.puts " */"
|
58
|
-
end
|
59
|
-
end
|
36
|
+
require 'rails2_asset_pipeline/jammit_converter'
|
37
|
+
Rails2AssetPipeline::JammitConverter.convert
|
60
38
|
end
|
61
39
|
end
|
@@ -67,18 +67,43 @@ describe "Rails2AssetPipeline Tasks" do
|
|
67
67
|
write "public/stylesheets/b.css", "A"
|
68
68
|
end
|
69
69
|
|
70
|
+
it "fails when folders already exist" do
|
71
|
+
run "mkdir -p app/assets/javascripts"
|
72
|
+
expect{
|
73
|
+
puts run "rake assets:convert_jammit"
|
74
|
+
}.to raise_error
|
75
|
+
end
|
76
|
+
|
70
77
|
it "moves and combines javascripts" do
|
71
78
|
run "rake assets:convert_jammit"
|
72
79
|
run("ls app/assets").should == "javascripts\nstylesheets\n"
|
73
80
|
run("ls app/assets/javascripts").should == "a.js\nb.js\npack.js\n"
|
74
|
-
run("cat app/assets/javascripts/pack.js").should == "//= require
|
81
|
+
run("cat app/assets/javascripts/pack.js").should == "//= require a\n//= require b\n//= require_tree c\n"
|
75
82
|
end
|
76
83
|
|
77
84
|
it "moves and combines stylesheets" do
|
78
85
|
run "rake assets:convert_jammit"
|
79
86
|
run("ls app/assets").should == "javascripts\nstylesheets\n"
|
80
87
|
run("ls app/assets/stylesheets").should == "a.css\nb.css\npack.css\n"
|
81
|
-
run("cat app/assets/stylesheets/pack.css").should == "/*\n
|
88
|
+
run("cat app/assets/stylesheets/pack.css").should == "/*\n *= require a\n *= require b\n */\n"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "renames .scss to .css.scss" do
|
92
|
+
write "public/stylesheets/c.scss", "C"
|
93
|
+
run "rake assets:convert_jammit"
|
94
|
+
run("ls app/assets/stylesheets").should include("\nc.css.scss\n")
|
95
|
+
end
|
96
|
+
|
97
|
+
it "does not renames .css.scss to .css.css.scss" do
|
98
|
+
write "public/stylesheets/c.css.scss", "C"
|
99
|
+
run "rake assets:convert_jammit"
|
100
|
+
run("ls app/assets/stylesheets").should include("\nc.css.scss\n")
|
101
|
+
end
|
102
|
+
|
103
|
+
it "fixes broken inputs" do
|
104
|
+
write "public/stylesheets/c.css.scss", "a{}\n@import \"../global/_tables.scss\";\na{}"
|
105
|
+
run "rake assets:convert_jammit"
|
106
|
+
run("cat app/assets/stylesheets/c.css.scss").should == "a{}\n@import \"../global/_tables.css\";\na{}"
|
82
107
|
end
|
83
108
|
end
|
84
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails2_asset_pipeline
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sprockets
|
@@ -39,6 +39,7 @@ files:
|
|
39
39
|
- Rakefile
|
40
40
|
- Readme.md
|
41
41
|
- lib/rails2_asset_pipeline.rb
|
42
|
+
- lib/rails2_asset_pipeline/jammit_converter.rb
|
42
43
|
- lib/rails2_asset_pipeline/tasks.rb
|
43
44
|
- lib/rails2_asset_pipeline/version.rb
|
44
45
|
- lib/rails2_asset_pipeline/view_helpers.rb
|
@@ -66,7 +67,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
66
67
|
version: '0'
|
67
68
|
segments:
|
68
69
|
- 0
|
69
|
-
hash:
|
70
|
+
hash: 2378466707075981159
|
70
71
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
72
|
none: false
|
72
73
|
requirements:
|
@@ -75,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
75
76
|
version: '0'
|
76
77
|
segments:
|
77
78
|
- 0
|
78
|
-
hash:
|
79
|
+
hash: 2378466707075981159
|
79
80
|
requirements: []
|
80
81
|
rubyforge_project:
|
81
82
|
rubygems_version: 1.8.24
|