bower-rails 0.10.0 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +0 -0
- data/README.md +66 -46
- data/lib/bower-rails.rb +14 -0
- data/lib/bower-rails/dsl.rb +19 -3
- data/lib/bower-rails/performer.rb +33 -16
- data/lib/bower-rails/railtie.rb +4 -4
- data/lib/bower-rails/version.rb +1 -1
- data/lib/generators/bower_rails/initialize/initialize_generator.rb +5 -3
- data/lib/generators/bower_rails/initialize/templates/Bowerfile +0 -0
- data/lib/generators/bower_rails/initialize/templates/bower.json +0 -0
- data/lib/generators/bower_rails/initialize/templates/bower_rails.rb +4 -1
- data/lib/tasks/bower.rake +3 -2
- 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: 6006f079a66a16246b1b202c5937c34c2a10f604
|
4
|
+
data.tar.gz: ff977ce0ecd9914b0da8d17035654a3cf68dd82c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9b0caababbe66adb75d1978c4c2dbb38dd351d48da41fb1a441a273ce1ee3ce157addcc0e780cb3990f44f5e5891c2f1f024f666fbc2aff33b42734fde4263b0
|
7
|
+
data.tar.gz: 32912bcc0c5b3c9650446a7751c137d9b9e02ec179ba1853a9ed5b17a6c2004808a6c13216640d0249ee6c61bd887889da606a4c5ef29b2a570273fdb9d67796
|
data/MIT-LICENSE
CHANGED
File without changes
|
data/README.md
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
bower-rails
|
2
|
-
===========
|
1
|
+
# bower-rails
|
3
2
|
|
4
|
-
[![Gem Version](
|
5
|
-
[![Code Climate](
|
6
|
-
[![Dependency Status](
|
3
|
+
[![Gem Version](https://badge.fury.io/rb/bower-rails.svg)](http://badge.fury.io/rb/bower-rails)
|
4
|
+
[![Code Climate](https://codeclimate.com/github/rharriso/bower-rails/badges/gpa.svg)](https://codeclimate.com/github/rharriso/bower-rails)
|
5
|
+
[![Dependency Status](https://img.shields.io/gemnasium/SergeyKishenin/bower-rails.svg)][gemnasium]
|
7
6
|
[![Build Status](https://travis-ci.org/rharriso/bower-rails.svg?branch=master)][travis]
|
8
|
-
[![Coverage Status](https://coveralls.io/repos/
|
7
|
+
[![Coverage Status](https://coveralls.io/repos/rharriso/bower-rails/badge.svg?branch=master&service=github)](https://coveralls.io/github/rharriso/bower-rails?branch=master)
|
9
8
|
|
10
9
|
[gem]: https://rubygems.org/gems/bower-rails
|
11
10
|
[travis]: https://travis-ci.org/rharriso/bower-rails
|
@@ -29,17 +28,17 @@ NOTE: If you install `node` via package manager with `sudo apt-get install nodej
|
|
29
28
|
|
30
29
|
in Gemfile
|
31
30
|
|
32
|
-
```
|
31
|
+
```ruby
|
33
32
|
gem "bower-rails", "~> 0.10.0"
|
34
33
|
```
|
35
34
|
|
36
|
-
##JSON configuration
|
35
|
+
## JSON configuration
|
37
36
|
|
38
|
-
Bower-rails now supports the standard [bower package](
|
37
|
+
Bower-rails now supports the standard [bower package](http://bower.io/docs/creating-packages/#specification) format out-of-the-box. Simply place your bower.json file the Rails root directory to start. Using the standard format will default all bower components to be installed under the `vendor` directory.
|
39
38
|
|
40
39
|
To install dependencies into both `lib` and `vendor` directories, run the initializer to generate a custom bower.json:
|
41
40
|
|
42
|
-
```
|
41
|
+
```bash
|
43
42
|
rails g bower_rails:initialize json
|
44
43
|
```
|
45
44
|
|
@@ -47,31 +46,40 @@ This will generate a `config/initializers/bower_rails.rb` config file and a spec
|
|
47
46
|
|
48
47
|
**example bower.json file**
|
49
48
|
|
50
|
-
```
|
49
|
+
```json
|
51
50
|
{
|
52
51
|
"lib": {
|
53
52
|
"name": "bower-rails generated lib assets",
|
54
53
|
"dependencies": {
|
55
|
-
"threex"
|
56
|
-
"gsvpano.js"
|
54
|
+
"threex": "git@github.com:rharriso/threex.git",
|
55
|
+
"gsvpano.js": "https://github.com/rharriso/GSVPano.js/blob/master/src/GSVPano.js"
|
57
56
|
}
|
58
57
|
},
|
59
58
|
"vendor": {
|
60
59
|
"name": "bower-rails generated vendor assets",
|
61
60
|
"dependencies": {
|
62
|
-
"three.js"
|
61
|
+
"three.js": "https://raw.github.com/mrdoob/three.js/master/build/three.js"
|
63
62
|
}
|
64
63
|
}
|
65
64
|
}
|
66
65
|
```
|
67
66
|
|
68
|
-
##
|
67
|
+
## Include in Asset Pipeline
|
68
|
+
|
69
|
+
```javascript
|
70
|
+
// Bower packages
|
71
|
+
//= require d3/d3
|
72
|
+
//= require underscore/underscore
|
73
|
+
//
|
74
|
+
```
|
75
|
+
|
76
|
+
## Ruby DSL configuration
|
69
77
|
|
70
78
|
The Ruby DSL configuration is a Bowerfile at the project's root with DSL syntax similar to Bundler.
|
71
79
|
|
72
80
|
Run the initializer to generate a sample Bowerfile inside the Rails root and a `config/initializers/bower_rails.rb` config file:
|
73
81
|
|
74
|
-
```
|
82
|
+
```bash
|
75
83
|
rails g bower_rails:initialize
|
76
84
|
```
|
77
85
|
|
@@ -79,7 +87,7 @@ Run the initializer to generate a sample Bowerfile inside the Rails root and a `
|
|
79
87
|
|
80
88
|
By default assets are put to `./vendor/assets/bower_components` directory:
|
81
89
|
|
82
|
-
```
|
90
|
+
```ruby
|
83
91
|
|
84
92
|
# Puts to ./vendor/assets/bower_components
|
85
93
|
asset "backbone"
|
@@ -101,7 +109,7 @@ asset "three.js", "https://raw.github.com/mrdoob/three.js/master/build/three.js"
|
|
101
109
|
|
102
110
|
But the default value can be overridden by `assets_path` method:
|
103
111
|
|
104
|
-
```
|
112
|
+
```ruby
|
105
113
|
assets_path "assets/my_javascripts"
|
106
114
|
|
107
115
|
# Puts to ./vendor/assets/my_javascripts/bower_components
|
@@ -111,7 +119,7 @@ asset "moment"
|
|
111
119
|
|
112
120
|
The `assets_path` method can be overridden by an option in a `group` call:
|
113
121
|
|
114
|
-
```
|
122
|
+
```ruby
|
115
123
|
assets_path "assets/javascript"
|
116
124
|
|
117
125
|
# Puts files under ./vendor/assets/js/bower_components
|
@@ -129,10 +137,10 @@ end
|
|
129
137
|
NOTE: Available groups are `:lib` and `:vendor`. Others are not allowed according to the Rails convention.
|
130
138
|
NOTE: All the assets should be stored in `/assets` subdirectory so putting it under `./vendor/js` directory is unavailable
|
131
139
|
|
132
|
-
You can extend `main` directive to include some missing files using `main_files`
|
140
|
+
You can extend `main` directive to include some missing files using `main_files`
|
133
141
|
option as parameter or in a block:
|
134
142
|
|
135
|
-
```
|
143
|
+
```ruby
|
136
144
|
# via argument
|
137
145
|
asset "moment", "2.10.1", main_files: ["./locale/en-gb.js"]
|
138
146
|
|
@@ -148,7 +156,7 @@ end
|
|
148
156
|
|
149
157
|
And finally, you can specify the assets to be in the devDependencies block:
|
150
158
|
|
151
|
-
```
|
159
|
+
```ruby
|
152
160
|
asset "backbone", "1.1.1"
|
153
161
|
|
154
162
|
# Adds jasmine-sinon and jasmine-matchers to devDependencies
|
@@ -164,11 +172,11 @@ end
|
|
164
172
|
```
|
165
173
|
results in the following bower.json file:
|
166
174
|
|
167
|
-
```
|
175
|
+
```json
|
168
176
|
{
|
169
|
-
"name": "dsl-generated
|
177
|
+
"name": "dsl-generated-dependencies",
|
170
178
|
"dependencies": {
|
171
|
-
"backbone": "1.1.1"
|
179
|
+
"backbone": "1.1.1",
|
172
180
|
"angular": "1.2.18",
|
173
181
|
},
|
174
182
|
"devDependencies": {
|
@@ -189,11 +197,11 @@ resolution "angular", "1.2.22"
|
|
189
197
|
|
190
198
|
That will produce `bower.json` like:
|
191
199
|
|
192
|
-
```
|
200
|
+
```json
|
193
201
|
{
|
194
|
-
"name" : "dsl-generated
|
195
|
-
"dependencies"
|
196
|
-
"angular"
|
202
|
+
"name" : "dsl-generated-dependencies",
|
203
|
+
"dependencies": {
|
204
|
+
"angular": "1.2.22"
|
197
205
|
},
|
198
206
|
"resolutions": {
|
199
207
|
"angular": "1.2.22"
|
@@ -207,7 +215,7 @@ That will produce `bower.json` like:
|
|
207
215
|
|
208
216
|
Change options in your `config/initializers/bower_rails.rb`:
|
209
217
|
|
210
|
-
```
|
218
|
+
```ruby
|
211
219
|
BowerRails.configure do |bower_rails|
|
212
220
|
# Tell bower-rails what path should be considered as root. Defaults to Dir.pwd
|
213
221
|
bower_rails.root_path = Dir.pwd
|
@@ -221,11 +229,21 @@ BowerRails.configure do |bower_rails|
|
|
221
229
|
# Invokes rake bower:clean before precompilation. Defaults to false
|
222
230
|
bower_rails.clean_before_precompile = true
|
223
231
|
|
224
|
-
#
|
232
|
+
# Excludes specific bower components from clean. Defaults to nil
|
233
|
+
bower_rails.exclude_from_clean = ['moment']
|
234
|
+
|
235
|
+
# Invokes rake bower:install:deployment instead of rake bower:install. Defaults to false
|
225
236
|
bower_rails.use_bower_install_deployment = true
|
226
237
|
|
238
|
+
# rake bower:install will search for gem dependencies and in each gem it will search for Bowerfile
|
239
|
+
# and then concatenate all Bowerfile for evaluation
|
240
|
+
bower_rails.use_gem_deps_for_bowerfile = true
|
241
|
+
|
227
242
|
# Passes the -F option to rake bower:install or rake bower:install:deployment. Defaults to false.
|
228
243
|
bower_rails.force_install = true
|
244
|
+
|
245
|
+
# Change the default directory name
|
246
|
+
bower_rails.bower_components_directory = 'bower_components'
|
229
247
|
end
|
230
248
|
```
|
231
249
|
|
@@ -242,7 +260,7 @@ end
|
|
242
260
|
|
243
261
|
By default this line is added while running the generator.
|
244
262
|
|
245
|
-
##Rake tasks
|
263
|
+
## Rake tasks
|
246
264
|
|
247
265
|
Once you are done with `bower.json` or `Bowerfile` you can run
|
248
266
|
|
@@ -253,7 +271,7 @@ Once you are done with `bower.json` or `Bowerfile` you can run
|
|
253
271
|
* `rake bower:list` to list all packages
|
254
272
|
* `rake bower:clean` to remove all files not listed as [main files](#bower-main-files) (if specified)
|
255
273
|
* `rake bower:resolve` to resolve [relative asset paths](#relative-asset-paths) in components
|
256
|
-
* `rake bower:cache:clean` to clear the bower cache. This is useful when you know a component has been updated.
|
274
|
+
* `rake bower:cache:clean` to clear the bower cache. This is useful when you know a component has been updated.
|
257
275
|
|
258
276
|
If you'd like to pass any bower CLI options to a rake task, like `-f`, `-j`, you can simply do:
|
259
277
|
|
@@ -261,17 +279,19 @@ If you'd like to pass any bower CLI options to a rake task, like `-f`, `-j`, you
|
|
261
279
|
rake bower:install['-f']
|
262
280
|
```
|
263
281
|
|
264
|
-
##Capistrano 3 Configuration
|
282
|
+
## Capistrano 3 Configuration
|
265
283
|
|
266
284
|
While using Capistrano 3 and Capistrano Rails gem, it's needed to run bower install before assets compile. Add the following code to your deploy.rb, it will run `rake bower:install` before compiling the assets. CI=true flag is used not to ask for the analytics at the first bower install.
|
267
285
|
|
268
|
-
```
|
286
|
+
```ruby
|
269
287
|
namespace :bower do
|
270
288
|
desc 'Install bower'
|
271
289
|
task :install do
|
272
290
|
on roles(:web) do
|
273
291
|
within release_path do
|
274
|
-
|
292
|
+
with rails_env: fetch(:rails_env) do
|
293
|
+
execute :rake, 'bower:install CI=true'
|
294
|
+
end
|
275
295
|
end
|
276
296
|
end
|
277
297
|
end
|
@@ -279,29 +299,29 @@ end
|
|
279
299
|
before 'deploy:compile_assets', 'bower:install'
|
280
300
|
```
|
281
301
|
|
282
|
-
##Bower Configuration
|
302
|
+
## Bower Configuration
|
283
303
|
|
284
304
|
If you provide a `.bowerrc` in the rails project root, bower-rails will use it for bower configuration.
|
285
305
|
Some .bowerrc options are not supported: `directory`, `cwd`, and `interactive`. Bower-rails
|
286
306
|
will ignore the `directory` property and instead will use the automatically generated asset path.
|
287
307
|
|
288
|
-
###Bower Installation
|
308
|
+
### Bower Installation
|
289
309
|
|
290
310
|
[Bower](https://github.com/bower/bower) should be installed using npm. Bower can be installed globally (with `$ npm install -g bower`) or in `node_modules` in the root directory of your project.
|
291
311
|
|
292
|
-
##Relative asset paths
|
312
|
+
## Relative asset paths
|
293
313
|
|
294
314
|
Some bower components (eg. [Bootstrap](https://github.com/twbs/bootstrap/blob/0016c17f9307bc71fc96d8d4680a9c861f137cae/dist/css/bootstrap.css#L2263)) have relative urls in the CSS files for imports, images, etc. Rails prefers using [helper methods](http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets) for linking to assets within CSS. Relative paths can cause issues when assets are precompiled for production.
|
295
315
|
|
296
316
|
Remember that you should have [bower installed](#bower-installation) either locally in your project or on a remote server.
|
297
317
|
|
298
|
-
##Bower Main Files
|
318
|
+
## Bower Main Files
|
299
319
|
|
300
|
-
Each bower component should follow the [bower.json spec](https://github.com/bower/bower.json-spec)
|
301
|
-
which designates a recommended `main` directive that lists the primary files of
|
302
|
-
that component. You may choose to reference these files if you are using the asset
|
303
|
-
pipeline, in which case other extraneous includes of the bower component are not needed.
|
304
|
-
The `rake bower:clean` task removes every file that isn't listed in the `main` directive,
|
320
|
+
Each bower component should follow the [bower.json spec](https://github.com/bower/bower.json-spec)
|
321
|
+
which designates a recommended `main` directive that lists the primary files of
|
322
|
+
that component. You may choose to reference these files if you are using the asset
|
323
|
+
pipeline, in which case other extraneous includes of the bower component are not needed.
|
324
|
+
The `rake bower:clean` task removes every file that isn't listed in the `main` directive,
|
305
325
|
if the component specifies a `main` directive. Remember that you can extend the `main` directive
|
306
|
-
in [ruby DSL configuration](#ruby-dsl-configuration). Otherwise, the library will remain as bower installed it. It supports wildcards
|
326
|
+
in [ruby DSL configuration](#ruby-dsl-configuration). Otherwise, the library will remain as bower installed it. It supports wildcards
|
307
327
|
in files listed in `main` directive.
|
data/lib/bower-rails.rb
CHANGED
@@ -22,14 +22,26 @@ module BowerRails
|
|
22
22
|
# are invoked before assets precompilation
|
23
23
|
attr_accessor :clean_before_precompile
|
24
24
|
|
25
|
+
# If containing a list of bower component names, those components
|
26
|
+
# will be excluded from the bower:clean
|
27
|
+
attr_accessor :exclude_from_clean
|
28
|
+
|
25
29
|
# If set to true then rake bower:install:deployment will be invoked
|
26
30
|
# instead of rake bower:install before assets precompilation
|
27
31
|
attr_accessor :use_bower_install_deployment
|
28
32
|
|
33
|
+
# If set to true then rake bower:install will search for gem dependencies
|
34
|
+
# and in each gem it will search for Bowerfile and then concatenate all Bowerfile
|
35
|
+
# for evaluation
|
36
|
+
attr_accessor :use_gem_deps_for_bowerfile
|
37
|
+
|
29
38
|
# If set to true then rake bower:install[-f] will be invoked
|
30
39
|
# instead of rake bower:install before assets precompilation
|
31
40
|
attr_accessor :force_install
|
32
41
|
|
42
|
+
# Where to store the bower components
|
43
|
+
attr_accessor :bower_components_directory
|
44
|
+
|
33
45
|
def configure &block
|
34
46
|
yield self if block_given?
|
35
47
|
collect_tasks
|
@@ -58,5 +70,7 @@ module BowerRails
|
|
58
70
|
@resolve_before_precompile = false
|
59
71
|
@clean_before_precompile = false
|
60
72
|
@use_bower_install_deployment = false
|
73
|
+
@use_gem_deps_for_bowerfile = false
|
61
74
|
@force_install = false
|
75
|
+
@bower_components_directory = "bower_components"
|
62
76
|
end
|
data/lib/bower-rails/dsl.rb
CHANGED
@@ -7,7 +7,13 @@ module BowerRails
|
|
7
7
|
DEFAULT_DEPENDENCY_GROUP = :dependencies
|
8
8
|
|
9
9
|
def self.evalute(root_path, filename)
|
10
|
-
new(root_path).tap
|
10
|
+
new(root_path).tap do |dsl|
|
11
|
+
dsl.send(eval_file_method, File.join(root_path, filename))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.eval_file_method
|
16
|
+
BowerRails.use_gem_deps_for_bowerfile ? :eval_file_with_deps : :eval_file
|
11
17
|
end
|
12
18
|
|
13
19
|
attr_reader :dependencies, :root_path
|
@@ -20,6 +26,7 @@ module BowerRails
|
|
20
26
|
@resolutions = {}
|
21
27
|
@assets_path ||= "assets"
|
22
28
|
@main_files = {}
|
29
|
+
@current_group = nil
|
23
30
|
end
|
24
31
|
|
25
32
|
def asset(name, *args, &block)
|
@@ -67,7 +74,15 @@ module BowerRails
|
|
67
74
|
end
|
68
75
|
|
69
76
|
def eval_file(file)
|
70
|
-
instance_eval(File.open(file,
|
77
|
+
instance_eval(File.open(file, 'rb') { |f| f.read }, file.to_s)
|
78
|
+
end
|
79
|
+
|
80
|
+
def eval_file_with_deps(file)
|
81
|
+
Gem::Specification.map do |dep|
|
82
|
+
bowerfile_in_dep = File.join(dep.gem_dir, 'Bowerfile')
|
83
|
+
eval_file(bowerfile_in_dep) if bowerfile_in_dep != file && File.exist?(bowerfile_in_dep)
|
84
|
+
end
|
85
|
+
eval_file(file)
|
71
86
|
end
|
72
87
|
|
73
88
|
def final_assets_path
|
@@ -120,6 +135,7 @@ module BowerRails
|
|
120
135
|
normalized_group_path = normalize_location_path(group.first, group_assets_path(group))
|
121
136
|
File.open(File.join(normalized_group_path, ".bowerrc"), "w") do |f|
|
122
137
|
f.write(generate_dotbowerrc)
|
138
|
+
f.write("\n")
|
123
139
|
end
|
124
140
|
end
|
125
141
|
end
|
@@ -187,7 +203,7 @@ module BowerRails
|
|
187
203
|
#
|
188
204
|
def dependencies_to_json(data)
|
189
205
|
JSON.pretty_generate({
|
190
|
-
:name => "dsl-generated
|
206
|
+
:name => "dsl-generated-dependencies"
|
191
207
|
}.merge(data))
|
192
208
|
end
|
193
209
|
|
@@ -15,8 +15,6 @@ module BowerRails
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def perform(remove_components = true, &block)
|
18
|
-
entries = Dir.entries(root_path)
|
19
|
-
|
20
18
|
npm_path = File.join(root_path, 'node_modules', '.bin')
|
21
19
|
bower = find_command('bower', [npm_path])
|
22
20
|
|
@@ -24,7 +22,7 @@ module BowerRails
|
|
24
22
|
$stderr.puts ["Bower not found! You can install Bower using Node and npm:",
|
25
23
|
"$ npm install bower -g",
|
26
24
|
"For more info see http://bower.io/"].join("\n")
|
27
|
-
|
25
|
+
exit 127
|
28
26
|
end
|
29
27
|
|
30
28
|
if entries.include?('Bowerfile')
|
@@ -69,9 +67,9 @@ module BowerRails
|
|
69
67
|
|
70
68
|
# Load and merge root .bowerrc
|
71
69
|
dot_bowerrc = JSON.parse(File.read(File.join(root_path, '.bowerrc'))) rescue {}
|
72
|
-
dot_bowerrc["directory"] =
|
70
|
+
dot_bowerrc["directory"] = components_directory
|
73
71
|
|
74
|
-
if json.
|
72
|
+
if json.reject{ |key| ['lib', 'vendor'].include? key }.empty?
|
75
73
|
folders = json.keys
|
76
74
|
else
|
77
75
|
raise "Assuming a standard bower package but cannot find the required 'name' key" unless !!json['name']
|
@@ -91,7 +89,7 @@ module BowerRails
|
|
91
89
|
Dir.chdir(dir) do
|
92
90
|
|
93
91
|
# Remove old components
|
94
|
-
FileUtils.rm_rf("
|
92
|
+
FileUtils.rm_rf("#{components_directory}/*") if remove_components
|
95
93
|
|
96
94
|
# Create bower.json
|
97
95
|
File.open("bower.json", "w") do |f|
|
@@ -115,25 +113,26 @@ module BowerRails
|
|
115
113
|
end
|
116
114
|
end
|
117
115
|
|
118
|
-
def resolve_asset_paths
|
116
|
+
def resolve_asset_paths(root_directory = components_directory)
|
119
117
|
# Resolve relative paths in CSS
|
120
|
-
Dir[
|
118
|
+
Dir["#{components_directory}/**/*.css"].each do |filename|
|
121
119
|
contents = File.read(filename) if FileTest.file?(filename)
|
122
120
|
# http://www.w3.org/TR/CSS2/syndata.html#uri
|
123
|
-
url_regex = /url\((?!\#)\s*['"]?(?![a-z]+:)([^'"\)]*)['"]?\s*\)/
|
121
|
+
url_regex = /url\((?!\#)\s*['"]?((?![a-z]+:)([^'"\)]*?)([?#][^'"\)]*)?)['"]?\s*\)/
|
124
122
|
|
125
123
|
# Resolve paths in CSS file if it contains a url
|
126
124
|
if contents =~ url_regex
|
127
125
|
directory_path = Pathname.new(File.dirname(filename))
|
128
|
-
.relative_path_from(Pathname.new(
|
126
|
+
.relative_path_from(Pathname.new(root_directory))
|
129
127
|
|
130
128
|
# Replace relative paths in URLs with Rails asset_path helper
|
131
129
|
new_contents = contents.gsub(url_regex) do |match|
|
132
|
-
relative_path = $
|
130
|
+
relative_path = $2
|
131
|
+
params = $3
|
133
132
|
image_path = directory_path.join(relative_path).cleanpath
|
134
|
-
puts "#{match} => #{image_path}"
|
133
|
+
puts "#{match} => #{image_path} #{params}"
|
135
134
|
|
136
|
-
"url(<%= asset_path '#{image_path}'
|
135
|
+
"url(<%= asset_path '#{image_path}' %>#{params})"
|
137
136
|
end
|
138
137
|
|
139
138
|
# Replace CSS with ERB CSS file with resolved asset paths
|
@@ -146,7 +145,10 @@ module BowerRails
|
|
146
145
|
def remove_extra_files
|
147
146
|
puts "\nAttempting to remove all but main files as specified by bower\n"
|
148
147
|
|
149
|
-
Dir[
|
148
|
+
Dir["#{components_directory}/*"].each do |component_dir|
|
149
|
+
component_name = component_dir.split('/').last
|
150
|
+
next if clean_should_skip_component? component_name
|
151
|
+
|
150
152
|
if File.exists?(File.join(component_dir, 'bower.json'))
|
151
153
|
bower_file = File.read(File.join(component_dir, 'bower.json'))
|
152
154
|
elsif File.exists?(File.join(component_dir, '.bower.json'))
|
@@ -157,7 +159,6 @@ module BowerRails
|
|
157
159
|
|
158
160
|
# Parse bower.json
|
159
161
|
bower_json = JSON.parse(bower_file)
|
160
|
-
component_name = component_dir.split('/').last
|
161
162
|
main_files = Array(bower_json['main']) + main_files_for_component(component_name)
|
162
163
|
next if main_files.empty?
|
163
164
|
|
@@ -186,7 +187,9 @@ module BowerRails
|
|
186
187
|
paths.each do |path|
|
187
188
|
exts.each do |ext|
|
188
189
|
exe = File.join(path, "#{cmd}#{ext}")
|
189
|
-
|
190
|
+
if (File.executable?(exe) && File.file?(exe))
|
191
|
+
return Shellwords.escape exe
|
192
|
+
end
|
190
193
|
end
|
191
194
|
end
|
192
195
|
nil
|
@@ -195,7 +198,21 @@ module BowerRails
|
|
195
198
|
private
|
196
199
|
|
197
200
|
def main_files_for_component(name)
|
201
|
+
return [] unless entries.include?('Bowerfile')
|
198
202
|
Array(dsl.main_files[name])
|
199
203
|
end
|
204
|
+
|
205
|
+
def entries
|
206
|
+
@entries ||= Dir.entries(root_path)
|
207
|
+
end
|
208
|
+
|
209
|
+
def clean_should_skip_component?(name)
|
210
|
+
BowerRails.exclude_from_clean.respond_to?(:include?) &&
|
211
|
+
BowerRails.exclude_from_clean.include?(name)
|
212
|
+
end
|
213
|
+
|
214
|
+
def components_directory
|
215
|
+
BowerRails.bower_components_directory
|
216
|
+
end
|
200
217
|
end
|
201
218
|
end
|
data/lib/bower-rails/railtie.rb
CHANGED
@@ -1,6 +1,4 @@
|
|
1
|
-
require 'bower-rails'
|
2
1
|
require 'bower-rails/dsl'
|
3
|
-
require 'rails'
|
4
2
|
|
5
3
|
module BowerRails
|
6
4
|
class Railtie < Rails::Railtie
|
@@ -11,13 +9,15 @@ module BowerRails
|
|
11
9
|
config.before_initialize do |app|
|
12
10
|
@dsl = BowerRails::Dsl.evalute(BowerRails.root_path, @@bowerfile)
|
13
11
|
@dsl.final_assets_path.map do |assets_root, assets_path|
|
14
|
-
app.config.assets.paths <<
|
12
|
+
app.config.assets.paths <<
|
13
|
+
Rails.root.join(assets_root, assets_path, BowerRails.bower_components_directory)
|
15
14
|
end
|
16
15
|
end
|
17
16
|
else
|
18
17
|
config.before_initialize do |app|
|
19
18
|
["lib", "vendor"].each do |dir|
|
20
|
-
app.config.assets.paths <<
|
19
|
+
app.config.assets.paths <<
|
20
|
+
Rails.root.join(dir, 'assets', BowerRails.bower_components_directory)
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
data/lib/bower-rails/version.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
module BowerRails
|
2
2
|
module Generators
|
3
3
|
class InitializeGenerator < Rails::Generators::Base
|
4
|
+
INITIALIZE_FILE_PATH = 'config/initializers/bower_rails.rb'
|
5
|
+
|
4
6
|
desc 'Adds a boilerplate bower.json or Bowerfile to the root of Rails project and an empty initializer'
|
5
7
|
source_root File.expand_path('../templates', __FILE__)
|
6
8
|
argument :config_file, :type => :string, :default => 'bowerfile'
|
@@ -16,14 +18,14 @@ module BowerRails
|
|
16
18
|
end
|
17
19
|
|
18
20
|
def copy_initializer_file
|
19
|
-
copy_file 'bower_rails.rb',
|
21
|
+
copy_file 'bower_rails.rb', INITIALIZE_FILE_PATH
|
20
22
|
end
|
21
23
|
|
22
24
|
def require_initializer_in_application_rb
|
23
25
|
if Rails.version < "4.0.0"
|
24
|
-
environment { "require \"#{
|
26
|
+
environment { "require Rails.root.join(\"#{INITIALIZE_FILE_PATH}\").to_s" }
|
25
27
|
end
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
29
|
-
end
|
31
|
+
end
|
File without changes
|
File without changes
|
@@ -11,9 +11,12 @@ BowerRails.configure do |bower_rails|
|
|
11
11
|
# Invokes rake bower:clean before precompilation. Defaults to false
|
12
12
|
# bower_rails.clean_before_precompile = true
|
13
13
|
|
14
|
-
# Invokes rake bower:install:deployment instead rake bower:install. Defaults to false
|
14
|
+
# Invokes rake bower:install:deployment instead of rake bower:install. Defaults to false
|
15
15
|
# bower_rails.use_bower_install_deployment = true
|
16
16
|
#
|
17
17
|
# Invokes rake bower:install and rake bower:install:deployment with -F (force) flag. Defaults to false
|
18
18
|
# bower_rails.force_install = true
|
19
|
+
|
20
|
+
# Change the default directory name
|
21
|
+
# bower_rails.bower_components_directory = 'bower_components'
|
19
22
|
end
|
data/lib/tasks/bower.rake
CHANGED
@@ -62,9 +62,10 @@ namespace :bower do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
desc "Resolve assets paths in bower components"
|
65
|
-
task :resolve do
|
65
|
+
task :resolve, :relative_directory do |_, args|
|
66
66
|
BowerRails::Performer.perform false do
|
67
|
-
resolve_asset_paths
|
67
|
+
resolve_asset_paths(
|
68
|
+
args[:relative_directory] || BowerRails.bower_components_directory)
|
68
69
|
end
|
69
70
|
end
|
70
71
|
|
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
|
+
version: 0.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ross Harrison
|
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
requirements: []
|
92
92
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.4.
|
93
|
+
rubygems_version: 2.4.8
|
94
94
|
signing_key:
|
95
95
|
specification_version: 4
|
96
96
|
summary: Bower for Rails
|