bower-rails 0.4.0 → 0.4.4
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.
- checksums.yaml +4 -4
- data/README.md +32 -7
- data/lib/bower-rails/dsl.rb +48 -35
- data/lib/bower-rails/railtie.rb +16 -3
- data/lib/tasks/bower.rake +53 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11f1465332da4588fdbf82ba6ac1baf8ac6af36d
|
4
|
+
data.tar.gz: 58b9f18ebe219e4e94ccad4e1b00a4201d38d1cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9faedd78286fb6e4197f2e8551ef9eebc74f862ede75f6a53742307ba4600c77e1d560f5567d5c46e16d7b23ef6ae2d76f28920b129e9c8c74c34cab3b8f89dd
|
7
|
+
data.tar.gz: 480e4ad3a2cdee80ee0b6b4fac2515ddebb20f17cf9d053f1d1e926a3f4d5c307a0eeb3c4e1c2e90fe441a8e3b867b1b3ad86e89e2d92bcd67403ed3c96fc08d
|
data/README.md
CHANGED
@@ -13,7 +13,7 @@ rake tasks for bower on rails. Dependency file is bower.json in Rails root dir.
|
|
13
13
|
in Gemfile
|
14
14
|
|
15
15
|
``` Ruby
|
16
|
-
gem "bower-rails", "~> 0.4.
|
16
|
+
gem "bower-rails", "~> 0.4.4"
|
17
17
|
```
|
18
18
|
|
19
19
|
**Initialize**
|
@@ -53,38 +53,63 @@ The bower.json file is two seperate bower [component.js](https://github.com/twit
|
|
53
53
|
|
54
54
|
``` bash
|
55
55
|
rake bower:install #install js components
|
56
|
-
rake bower:
|
56
|
+
rake bower:install:force #install with force option
|
57
|
+
rake bower:update #update js components
|
58
|
+
rake bower:update:prune #update components and uninstall extraneous packages
|
57
59
|
```
|
58
60
|
|
59
61
|
|
60
62
|
##Ruby DSL configuration
|
61
63
|
|
62
|
-
The Ruby DSL configuration is a Jsfile with DSL syntax similar to Bundler
|
63
|
-
|
64
|
+
The Ruby DSL configuration is a Jsfile with DSL syntax similar to Bundler.
|
64
65
|
|
65
66
|
**Example Jsfile**
|
66
67
|
|
68
|
+
By default assets are put to `./vendor/assets/bower_components` directory:
|
69
|
+
|
70
|
+
``` ruby
|
71
|
+
|
72
|
+
# Puts to ./vendor/assets/bower_components
|
73
|
+
js "backbone"
|
74
|
+
js "moment"
|
75
|
+
```
|
76
|
+
|
77
|
+
But the default value can be overridden by `assets_path` method:
|
78
|
+
|
79
|
+
``` ruby
|
80
|
+
assets_path "assets/my_javascripts"
|
81
|
+
|
82
|
+
# Puts to ./vendor/assets/my_javascripts/bower_components
|
83
|
+
js "backbone"
|
84
|
+
js "moment"
|
85
|
+
```
|
86
|
+
|
87
|
+
And finally, the `assets_path` method can be overridden by an option in a `group` call:
|
88
|
+
|
67
89
|
``` ruby
|
68
90
|
assets_path "assets/javascript"
|
69
91
|
|
70
|
-
# Puts files under ./vendor/assets/js
|
92
|
+
# Puts files under ./vendor/assets/js/bower_components
|
71
93
|
group :vendor, :assets_path => "assets/js" do
|
72
94
|
js "jquery" # Assummes it's latests
|
73
95
|
js "backbone", "1.2"
|
74
96
|
end
|
75
97
|
|
76
|
-
# Puts files under ./lib/assets/javascript
|
98
|
+
# Puts files under ./lib/assets/javascript/bower_components
|
77
99
|
group :lib do
|
78
100
|
js "jquery"
|
79
101
|
js "backbone", "1.2"
|
80
102
|
end
|
81
103
|
```
|
104
|
+
NOTE: All the assets should be stored in `/assets` subdirectory so putting it under `./vendor/js` directory is unavailable
|
82
105
|
|
83
106
|
**Available commands with a Jsfile**
|
84
107
|
|
85
108
|
``` bash
|
86
109
|
rake bower:dsl:install #install js components
|
87
|
-
rake bower:dsl:
|
110
|
+
rake bower:dsl:install:force #install with force option
|
111
|
+
rake bower:dsl:update #update js components
|
112
|
+
rake bower:dsl:update:prune #update components and uninstall extraneous packages
|
88
113
|
```
|
89
114
|
|
90
115
|
|
data/lib/bower-rails/dsl.rb
CHANGED
@@ -1,61 +1,51 @@
|
|
1
|
-
require
|
1
|
+
require 'json'
|
2
2
|
require 'fileutils'
|
3
3
|
|
4
4
|
module BowerRails
|
5
5
|
class Dsl
|
6
|
-
|
7
|
-
|
8
|
-
@config = conf
|
9
|
-
end
|
10
|
-
|
11
|
-
def self.config
|
12
|
-
@config
|
13
|
-
end
|
6
|
+
cattr_accessor :config
|
7
|
+
attr_reader :dependencies
|
14
8
|
|
15
9
|
def self.evalute(file)
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
instance = new
|
11
|
+
instance.eval_file(file)
|
12
|
+
instance
|
19
13
|
end
|
20
14
|
|
21
15
|
def initialize
|
22
16
|
@dependencies = {}
|
23
17
|
@groups = []
|
24
18
|
@root_path = BowerRails::Dsl.config[:root_path] || File.expand_path("./")
|
25
|
-
@assets_path = BowerRails::Dsl.config[:assets_path] || "
|
19
|
+
@assets_path = BowerRails::Dsl.config[:assets_path] || "assets"
|
26
20
|
end
|
27
21
|
|
28
22
|
def eval_file(file)
|
29
|
-
|
30
|
-
instance_eval(contents, file.to_s, 1)
|
23
|
+
instance_eval(File.open(file, "rb") { |f| f.read }, file.to_s)
|
31
24
|
end
|
32
25
|
|
33
26
|
def directories
|
34
27
|
@dependencies.keys
|
35
28
|
end
|
36
29
|
|
37
|
-
def dependencies
|
38
|
-
@dependencies
|
39
|
-
end
|
40
|
-
|
41
30
|
def group(*args, &blk)
|
42
|
-
|
31
|
+
if args[1]
|
32
|
+
custom_assets_path = args[1][:assets_path]
|
33
|
+
raise ArgumentError, "Assets should be stored in /assets directory, try :assets_path => 'assets/#{custom_assets_path}' instead" if custom_assets_path.match(/assets/).nil?
|
34
|
+
new_group = [args[0], args[1]]
|
35
|
+
else
|
36
|
+
new_group = [args[0]]
|
37
|
+
end
|
38
|
+
|
39
|
+
@groups << new_group
|
43
40
|
yield
|
44
|
-
ensure
|
45
|
-
args.each { @groups.pop }
|
46
41
|
end
|
47
42
|
|
48
43
|
def js(name, *args)
|
49
|
-
options = Hash === args.last ? args.pop : {}
|
50
44
|
version = args.first || "latest"
|
51
|
-
|
52
|
-
@groups = ["lib"] if @groups.empty?
|
45
|
+
@groups = [[:vendor, { assets_path: @assets_path }]] if @groups.empty?
|
53
46
|
|
54
47
|
@groups.each do |g|
|
55
|
-
|
56
|
-
assets_path = g_options[:assets_path] || @assets_path
|
57
|
-
|
58
|
-
g_norm = normalize_location_path(g.first,assets_path)
|
48
|
+
g_norm = normalize_location_path(g.first.to_s, group_assets_path(g))
|
59
49
|
@dependencies[g_norm] ||= {}
|
60
50
|
@dependencies[g_norm][name] = version
|
61
51
|
end
|
@@ -68,26 +58,49 @@ module BowerRails
|
|
68
58
|
def write_bower_json
|
69
59
|
@dependencies.each do |dir,data|
|
70
60
|
FileUtils.mkdir_p dir unless File.directory? dir
|
71
|
-
File.open(File.join(dir,"bower.json"),"w") do |f|
|
61
|
+
File.open(File.join(dir,"bower.json"), "w") do |f|
|
72
62
|
f.write(dependencies_to_json(data))
|
73
63
|
end
|
74
64
|
end
|
75
65
|
end
|
76
66
|
|
67
|
+
def write_dotbowerrc
|
68
|
+
@groups = [[:vendor, { assets_path: @assets_path }]] if @groups.empty?
|
69
|
+
@groups.map do |g|
|
70
|
+
File.open(File.join(g.first.to_s, group_assets_path(g), ".bowerrc"), "w") do |f|
|
71
|
+
f.write(JSON.pretty_generate({:directory => "bower_components"}))
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def final_assets_path
|
77
|
+
@groups = [[:vendor, { assets_path: @assets_path }]] if @groups.empty?
|
78
|
+
@groups.map do |g|
|
79
|
+
[g.first.to_s, group_assets_path(g)]
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def group_assets_path group
|
84
|
+
group_options = Hash === group.last ? group.last : {:assets_path => @assets_path}
|
85
|
+
group_options[:assets_path]
|
86
|
+
end
|
87
|
+
|
77
88
|
private
|
78
89
|
|
79
90
|
def dependencies_to_json(data)
|
80
|
-
|
81
|
-
|
82
|
-
|
91
|
+
JSON.pretty_generate({
|
92
|
+
:name => "dsl-generated dependencies",
|
93
|
+
:dependencies => data
|
94
|
+
})
|
83
95
|
end
|
84
96
|
|
85
97
|
def assets_path(assets_path)
|
98
|
+
raise ArgumentError, "Assets should be stored in /assets directory, try assets_path 'assets/#{assets_path}' instead" if assets_path.match(/assets/).nil?
|
86
99
|
@assets_path = assets_path
|
87
100
|
end
|
88
101
|
|
89
|
-
def normalize_location_path(loc,assets_path)
|
90
|
-
File.join(@root_path,loc.to_s,assets_path)
|
102
|
+
def normalize_location_path(loc, assets_path)
|
103
|
+
File.join(@root_path, loc.to_s, assets_path)
|
91
104
|
end
|
92
105
|
|
93
106
|
end
|
data/lib/bower-rails/railtie.rb
CHANGED
@@ -1,12 +1,25 @@
|
|
1
1
|
require 'bower-rails'
|
2
|
+
require 'bower-rails/dsl'
|
2
3
|
require 'rails'
|
4
|
+
|
3
5
|
module BowerRails
|
4
6
|
class Railtie < Rails::Railtie
|
5
7
|
railtie_name :bower
|
6
8
|
|
7
|
-
|
8
|
-
|
9
|
-
|
9
|
+
if File.exist?(File.join("Jsfile"))
|
10
|
+
BowerRails::Dsl.config = {:root_path => Rails.root}
|
11
|
+
dsl = BowerRails::Dsl.evalute(File.join("Jsfile"))
|
12
|
+
|
13
|
+
config.before_initialize do |app|
|
14
|
+
dsl.final_assets_path.map do |assets_root, assets_path|
|
15
|
+
app.config.assets.paths << Rails.root.join(assets_root, assets_path, "bower_components")
|
16
|
+
end
|
17
|
+
end
|
18
|
+
else
|
19
|
+
config.before_initialize do |app|
|
20
|
+
["lib", "vendor"].each do |dir|
|
21
|
+
app.config.assets.paths << Rails.root.join(dir, 'assets', 'bower_components')
|
22
|
+
end
|
10
23
|
end
|
11
24
|
end
|
12
25
|
|
data/lib/tasks/bower.rake
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'pp'
|
3
|
+
|
3
4
|
namespace :bower do
|
4
5
|
|
5
|
-
desc "install
|
6
|
+
desc "install components from bower"
|
6
7
|
task :install do
|
7
8
|
#install to corresponding directories
|
8
9
|
perform_command do
|
@@ -10,7 +11,16 @@ namespace :bower do
|
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
13
|
-
|
14
|
+
namespace :install do
|
15
|
+
desc "install components with -F option"
|
16
|
+
task :force do
|
17
|
+
perform_command do
|
18
|
+
sh 'bower install -F'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
desc "update bower components"
|
14
24
|
task :update do
|
15
25
|
#install to corresponding directories
|
16
26
|
perform_command false do
|
@@ -18,8 +28,17 @@ namespace :bower do
|
|
18
28
|
end
|
19
29
|
end
|
20
30
|
|
31
|
+
namespace :update do
|
32
|
+
desc "update existing components and uninstalls extraneous components"
|
33
|
+
task :prune do
|
34
|
+
perform_command false do
|
35
|
+
sh 'bower update && bower prune'
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
21
40
|
namespace :dsl do
|
22
|
-
desc "install
|
41
|
+
desc "install components from bower"
|
23
42
|
task :install do
|
24
43
|
#install to corresponding directories
|
25
44
|
dsl_perform_command do
|
@@ -27,14 +46,34 @@ namespace :bower do
|
|
27
46
|
end
|
28
47
|
end
|
29
48
|
|
30
|
-
|
49
|
+
namespace :install do
|
50
|
+
desc "install components with -F option"
|
51
|
+
task :force do
|
52
|
+
dsl_perform_command do
|
53
|
+
sh 'bower install -F'
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "update bower components"
|
31
59
|
task :update do
|
32
60
|
#install to corresponding directories
|
33
61
|
dsl_perform_command false do
|
34
62
|
sh 'bower update'
|
35
63
|
end
|
36
64
|
end
|
65
|
+
|
66
|
+
namespace :update do
|
67
|
+
desc "update existing components and uninstalls extraneous components"
|
68
|
+
task :prune do
|
69
|
+
dsl_perform_command false do
|
70
|
+
sh 'bower update && bower prune'
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
37
75
|
end
|
76
|
+
|
38
77
|
end
|
39
78
|
|
40
79
|
def get_bower_root_path
|
@@ -52,6 +91,7 @@ def dsl_perform_command remove_components = true
|
|
52
91
|
|
53
92
|
if remove_components
|
54
93
|
dsl.write_bower_json
|
94
|
+
dsl.write_dotbowerrc
|
55
95
|
puts "bower.js files generated"
|
56
96
|
end
|
57
97
|
|
@@ -83,17 +123,23 @@ def perform_command remove_components = true
|
|
83
123
|
FileUtils.rm_rf("bower_components") if remove_components
|
84
124
|
|
85
125
|
#create bower json
|
86
|
-
File.open("bower.json","w") do |f|
|
126
|
+
File.open("bower.json", "w") do |f|
|
87
127
|
f.write(data.to_json)
|
88
128
|
end
|
89
129
|
|
130
|
+
#create .bowerrc
|
131
|
+
File.open(".bowerrc", "w") do |f|
|
132
|
+
f.write(JSON.pretty_generate({:directory => "bower_components"}))
|
133
|
+
end
|
134
|
+
|
90
135
|
#run command
|
91
136
|
yield
|
92
137
|
|
93
138
|
#remove bower file
|
94
139
|
FileUtils.rm("bower.json")
|
95
140
|
|
96
|
-
|
97
|
-
|
141
|
+
#remove .bowerrc
|
142
|
+
FileUtils.rm(".bowerrc")
|
143
|
+
end if data && !data["dependencies"].empty?
|
98
144
|
end
|
99
145
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bower-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ross Harrison
|
@@ -10,7 +10,7 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2013-05-08 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
13
|
+
description: Rails integration for bower.
|
14
14
|
email: rtharrison86@gmail.com
|
15
15
|
executables: []
|
16
16
|
extensions: []
|