bower-rails 0.2.1 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/README.md +54 -8
- data/lib/bower-rails.rb +1 -0
- data/lib/bower-rails/dsl.rb +94 -0
- data/lib/bower-rails/railtie.rb +6 -0
- data/lib/tasks/bower.rake +39 -6
- metadata +8 -9
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 5cb67f76bfaa66d517071c94179c6939875b5444
|
4
|
+
data.tar.gz: 58a066463fb3fb28ae7f4ca70fca264bb7a981f3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: c598443d14f97c2f306f0be54d4c813d3f15d70b38045c5a10800dec0dcbb177e8768866eef2e525d2670c6d39d868edd7d9c9db9cbaef440d8b71093af99b53
|
7
|
+
data.tar.gz: cc57c5802e7fc964f5c589442f76e8f65aa285683b297ca321f32b5a1c69726069be07bd9d86ba625c29e777a0e7ee56d671917f7a3413f3dd93daceee9b1fad
|
data/README.md
CHANGED
@@ -3,17 +3,28 @@ bower-rails
|
|
3
3
|
|
4
4
|
rake tasks for bower on rails. Dependency file is bower.json in Rails root dir.
|
5
5
|
|
6
|
+
**Asset Pipeline**
|
7
|
+
|
8
|
+
As of version 0.3.0 bower-rails installs components in the asset directory, rather than assets/javascripts. This is because some of these packages also include stylesheets, or images. As such you may have to add components to your asset pipeline.
|
9
|
+
|
10
|
+
``` Ruby
|
11
|
+
# config/application.rb
|
12
|
+
|
13
|
+
config.assets.paths << Rails.root.join("lib", "assets", "components")
|
14
|
+
config.assets.paths << Rails.root.join("vendor", "assets", "components")
|
15
|
+
```
|
16
|
+
|
6
17
|
**Requirements**
|
7
18
|
|
8
19
|
* [node](http://nodejs.org) ([on github](https://github.com/joyent/node))
|
9
|
-
* [bower](https://github.com/twitter/bow) installed with npm
|
20
|
+
* [bower](https://github.com/twitter/bow) (>= 0.9) installed with npm
|
10
21
|
|
11
22
|
**Install**
|
12
23
|
|
13
24
|
in Gemfile
|
14
25
|
|
15
26
|
``` Ruby
|
16
|
-
gem
|
27
|
+
gem "bower-rails", "~> 0.3.1"
|
17
28
|
```
|
18
29
|
|
19
30
|
**Initialize**
|
@@ -24,8 +35,7 @@ To add an empty bower.json file to the project root.
|
|
24
35
|
rails g bower_rails:initialize
|
25
36
|
```
|
26
37
|
|
27
|
-
|
28
|
-
**Configuration**
|
38
|
+
##JSON configuration
|
29
39
|
|
30
40
|
The bower.json file is two seperate bower [component.js](https://github.com/twitter/bower#defining-a-package) files. Defining a package in lib and vendor will install those packages to the corresponding directories.
|
31
41
|
|
@@ -36,8 +46,8 @@ The bower.json file is two seperate bower [component.js](https://github.com/twit
|
|
36
46
|
"lib": {
|
37
47
|
"dependencies": {
|
38
48
|
"threex" : "git@github.com:rharriso/threex.git",
|
39
|
-
"gsvpano.js" : "https://github.com/rharriso/GSVPano.js/blob/master/src/GSVPano.js"
|
40
|
-
}
|
49
|
+
"gsvpano.js" : "https://github.com/rharriso/GSVPano.js/blob/master/src/GSVPano.js"
|
50
|
+
}
|
41
51
|
},
|
42
52
|
"vendor": {
|
43
53
|
"dependencies": {
|
@@ -48,9 +58,45 @@ The bower.json file is two seperate bower [component.js](https://github.com/twit
|
|
48
58
|
```
|
49
59
|
|
50
60
|
|
51
|
-
**Available
|
61
|
+
**Available commands**
|
52
62
|
|
53
63
|
``` bash
|
54
64
|
rake bower:install #install js components
|
55
65
|
rake bower:update #update js components
|
56
|
-
```
|
66
|
+
```
|
67
|
+
|
68
|
+
|
69
|
+
##Ruby DSL configuration
|
70
|
+
|
71
|
+
The Ruby DSL configuration is a Jsfile with DSL syntax similar to Bundler
|
72
|
+
|
73
|
+
|
74
|
+
**Example Jsfile**
|
75
|
+
|
76
|
+
``` ruby
|
77
|
+
assets_path "assets/javascript"
|
78
|
+
|
79
|
+
# Puts files under ./vendor/assets/js
|
80
|
+
group :vendor, :assets_path => "assets/js" do
|
81
|
+
js "jquery" # Assummes it's latests
|
82
|
+
js "backbone", "1.2"
|
83
|
+
end
|
84
|
+
|
85
|
+
# Puts files under ./lib/assets/javascript
|
86
|
+
group :lib do
|
87
|
+
js "jquery"
|
88
|
+
js "backbone", "1.2"
|
89
|
+
end
|
90
|
+
```
|
91
|
+
|
92
|
+
**Available commands with a Jsfile**
|
93
|
+
|
94
|
+
``` bash
|
95
|
+
rake bower:dsl:install #install js components
|
96
|
+
rake bower:dsl:update #update js components
|
97
|
+
```
|
98
|
+
|
99
|
+
|
100
|
+
|
101
|
+
|
102
|
+
|
data/lib/bower-rails.rb
CHANGED
@@ -0,0 +1,94 @@
|
|
1
|
+
require "json"
|
2
|
+
require 'fileutils'
|
3
|
+
|
4
|
+
module BowerRails
|
5
|
+
class Dsl
|
6
|
+
|
7
|
+
def self.config=(conf)
|
8
|
+
@config = conf
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.config
|
12
|
+
@config
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.evalute(file)
|
16
|
+
inst = new
|
17
|
+
inst.eval_file(file)
|
18
|
+
inst
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
@dependencies = {}
|
23
|
+
@groups = []
|
24
|
+
@root_path = BowerRails::Dsl.config[:root_path] || File.expand_path("./")
|
25
|
+
@assets_path = BowerRails::Dsl.config[:assets_path] || "/assets/javascripts"
|
26
|
+
end
|
27
|
+
|
28
|
+
def eval_file(file)
|
29
|
+
contents = File.open(file,"r").read
|
30
|
+
instance_eval(contents, file.to_s, 1)
|
31
|
+
end
|
32
|
+
|
33
|
+
def directories
|
34
|
+
@dependencies.keys
|
35
|
+
end
|
36
|
+
|
37
|
+
def dependencies
|
38
|
+
@dependencies
|
39
|
+
end
|
40
|
+
|
41
|
+
def group(*args, &blk)
|
42
|
+
@groups.concat [args]
|
43
|
+
yield
|
44
|
+
ensure
|
45
|
+
args.each { @groups.pop }
|
46
|
+
end
|
47
|
+
|
48
|
+
def js(name, *args)
|
49
|
+
options = Hash === args.last ? args.pop : {}
|
50
|
+
version = args.first || "latest"
|
51
|
+
|
52
|
+
@groups = ["lib"] if @groups.empty?
|
53
|
+
|
54
|
+
@groups.each do |g|
|
55
|
+
g_options = Hash === g.last ? g.pop : {}
|
56
|
+
assets_path = g_options[:assets_path] || @assets_path
|
57
|
+
|
58
|
+
g_norm = normalize_location_path(g.first,assets_path)
|
59
|
+
@dependencies[g_norm] ||= {}
|
60
|
+
@dependencies[g_norm][name] = version
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def to_json(location)
|
65
|
+
dependencies_to_json @dependencies[normalize_location_path(location)]
|
66
|
+
end
|
67
|
+
|
68
|
+
def write_bower_json
|
69
|
+
@dependencies.each do |dir,data|
|
70
|
+
FileUtils.mkdir_p dir unless File.directory? dir
|
71
|
+
File.open(File.join(dir,"bower.json"),"w") do |f|
|
72
|
+
f.write(dependencies_to_json(data))
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
private
|
78
|
+
|
79
|
+
def dependencies_to_json(data)
|
80
|
+
JSON.pretty_generate({
|
81
|
+
:dependencies => data
|
82
|
+
})
|
83
|
+
end
|
84
|
+
|
85
|
+
def assets_path(assets_path)
|
86
|
+
@assets_path = assets_path
|
87
|
+
end
|
88
|
+
|
89
|
+
def normalize_location_path(loc,assets_path)
|
90
|
+
File.join(@root_path,loc.to_s,assets_path)
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
data/lib/bower-rails/railtie.rb
CHANGED
@@ -4,6 +4,12 @@ module BowerRails
|
|
4
4
|
class Railtie < Rails::Railtie
|
5
5
|
railtie_name :bower
|
6
6
|
|
7
|
+
config.after_initialize do |app|
|
8
|
+
["lib", "vendor"].each do |dir|
|
9
|
+
app.config.assets.paths << Rails.root.join(dir, 'assets', 'components')
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
7
13
|
rake_tasks do
|
8
14
|
load "tasks/bower.rake"
|
9
15
|
end
|
data/lib/tasks/bower.rake
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'pp'
|
3
|
-
|
4
3
|
namespace :bower do
|
5
4
|
|
6
5
|
desc "install files from bower"
|
@@ -18,6 +17,40 @@ namespace :bower do
|
|
18
17
|
sh 'bower update'
|
19
18
|
end
|
20
19
|
end
|
20
|
+
|
21
|
+
namespace :dsl do
|
22
|
+
desc "install files from bower"
|
23
|
+
task :install do
|
24
|
+
#install to corresponding directories
|
25
|
+
dsl_perform_command do
|
26
|
+
sh 'bower install'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
desc "update bower packages"
|
31
|
+
task :update do
|
32
|
+
#install to corresponding directories
|
33
|
+
dsl_perform_command false do
|
34
|
+
sh 'bower update'
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def dsl_perform_command remove_components = true
|
41
|
+
BowerRails::Dsl.config = {:root_path => Rails.root}
|
42
|
+
dsl = BowerRails::Dsl.evalute(Rails.root.join("Jsfile"))
|
43
|
+
|
44
|
+
if remove_components
|
45
|
+
dsl.write_bower_json
|
46
|
+
puts "bower.js files generated"
|
47
|
+
end
|
48
|
+
|
49
|
+
dsl.directories.each do |dir|
|
50
|
+
Dir.chdir(dir) do
|
51
|
+
yield
|
52
|
+
end
|
53
|
+
end
|
21
54
|
end
|
22
55
|
|
23
56
|
#run the passed bower block in appropriate folders
|
@@ -31,7 +64,7 @@ def perform_command remove_components = true
|
|
31
64
|
data = json[dir]
|
32
65
|
|
33
66
|
#check folder existence and create?
|
34
|
-
dir = "#{Rails.root}/#{dir}/assets
|
67
|
+
dir = "#{Rails.root}/#{dir}/assets"
|
35
68
|
FileUtils.mkdir_p dir unless File.directory? dir
|
36
69
|
#go in to dir to act
|
37
70
|
Dir.chdir(dir) do
|
@@ -39,16 +72,16 @@ def perform_command remove_components = true
|
|
39
72
|
#remove old components
|
40
73
|
FileUtils.rm_rf("components") if remove_components
|
41
74
|
|
42
|
-
#create
|
43
|
-
File.open("
|
75
|
+
#create bower json
|
76
|
+
File.open("bower.json","w") do |f|
|
44
77
|
f.write(data.to_json)
|
45
78
|
end
|
46
79
|
|
47
80
|
#run command
|
48
81
|
yield
|
49
82
|
|
50
|
-
#remove
|
51
|
-
FileUtils.rm("
|
83
|
+
#remove bower file
|
84
|
+
FileUtils.rm("bower.json")
|
52
85
|
|
53
86
|
end if data
|
54
87
|
|
metadata
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bower-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.3.1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Ross Harrison
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-05-08 00:00:00.000000000 Z
|
13
12
|
dependencies: []
|
14
13
|
description: Bower for Rails
|
15
14
|
email: rtharrison86@gmail.com
|
@@ -17,6 +16,7 @@ executables: []
|
|
17
16
|
extensions: []
|
18
17
|
extra_rdoc_files: []
|
19
18
|
files:
|
19
|
+
- lib/bower-rails/dsl.rb
|
20
20
|
- lib/bower-rails/railtie.rb
|
21
21
|
- lib/bower-rails.rb
|
22
22
|
- lib/generators/bower_rails/initialize/initialize_generator.rb
|
@@ -26,26 +26,25 @@ files:
|
|
26
26
|
- README.md
|
27
27
|
homepage: https://github.com/rharriso/bower-rails
|
28
28
|
licenses: []
|
29
|
+
metadata: {}
|
29
30
|
post_install_message:
|
30
31
|
rdoc_options: []
|
31
32
|
require_paths:
|
32
33
|
- lib
|
33
34
|
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
35
|
requirements:
|
36
|
-
- -
|
36
|
+
- - '>='
|
37
37
|
- !ruby/object:Gem::Version
|
38
38
|
version: '0'
|
39
39
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
40
|
requirements:
|
42
|
-
- -
|
41
|
+
- - '>='
|
43
42
|
- !ruby/object:Gem::Version
|
44
43
|
version: '0'
|
45
44
|
requirements: []
|
46
45
|
rubyforge_project:
|
47
|
-
rubygems_version:
|
46
|
+
rubygems_version: 2.0.3
|
48
47
|
signing_key:
|
49
|
-
specification_version:
|
48
|
+
specification_version: 4
|
50
49
|
summary: Bower for Rails
|
51
50
|
test_files: []
|