rg 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 2b2243ffb907e6ebf5a68178636e7fd29b9c0135
4
+ data.tar.gz: d177c4be42867e7bcae9af1e2ade9775abda21ef
5
+ SHA512:
6
+ metadata.gz: 2ffd7eb0568e088dd9f4ae794dcf36cfd5d46664047bd3f8a101a17b4704f2323c1f4eb759541f8905d8ca417daca3f34ac4befa740a2df08fff72e72fa74345
7
+ data.tar.gz: 64684d74676a0f1025767baa445c24e8f2190a8ffdf23161bb32efe130a0b770db055e4548c88dcc4c911e0c9925924754f1a4b566e48aa167c3bf0f0e1d3f57
@@ -0,0 +1,4 @@
1
+ lib/**/*.rb
2
+ README.rdoc
3
+ ChangeLog.rdoc
4
+ LICENSE.txt
@@ -0,0 +1,2 @@
1
+ Gemfile.lock
2
+ pkg
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --colour --format documentation
@@ -0,0 +1,7 @@
1
+ ## 0.1.1
2
+
3
+ - Re-release to fix errors in 0.1.0 rubygems version
4
+
5
+ ## 0.1.0
6
+
7
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -0,0 +1,20 @@
1
+ Copyright (c) 2013 Jan Lelis
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,70 @@
1
+ # Regular: Rails + Angular
2
+
3
+ Opinionated way to use [AngularJS](http://angularjs.org) in a [Rails](http://rubyonrails.org)/[Rails-API](https://github.com/rails-api/rails-api) app using
4
+
5
+ - [CoffeeScript](http://coffeescript.org/) for code, because it looks good.
6
+ - [Bower](http://bower.io) for managing frontend libraries, because it's simple.
7
+ - [angularjs-rails-resource](https://github.com/FineLinePrototyping/angularjs-rails-resource), because why not use it?
8
+
9
+ By using this gem, you will
10
+ - Be able to use Angular + Rails
11
+ - Adopt a convention about your Angular directory structure and
12
+ - Get some basic, but handy generators!
13
+ - Delegate Angular/frontend library management to Bower
14
+ - Still live in Ruby land (i.e. you can do E2E testing using Capybara)
15
+
16
+ You are invited to read [this blog post](http://ruby.janlelis.de/69-the-carb-stack-coffee-angular-rails-bower) for background information on this mindset (*CARB*).
17
+
18
+ ## Setup
19
+
20
+ Make sure [you have bower installed](http://bower.io/#installing-bower). Then add this to your Gemfile:
21
+
22
+ gem 'rg'
23
+
24
+ Run `bundle` on the command-line and setup your angular project:
25
+
26
+ # Set up a new .bowerrc file and bower.json file
27
+ rails g rg:bower
28
+ # Use bower to install latest angulars
29
+ bower install angular angularjs-rails-resource --save
30
+ # Set up the angular app directory and add to sprocket manifest
31
+ rails g rg:install --manifests=application.js
32
+
33
+ Alternatively, you can run all the previous commands via rake:
34
+
35
+ rake rg:setup
36
+
37
+ ## Views
38
+
39
+ This gem does not mandate how you should organize your views. Don't forget to:
40
+
41
+ - include the JavaScript manifest file (once) in your HTML
42
+ - include the `ng-app` directive in your HTML
43
+ - turn off turbolinks (remove from manifest file, HTML, Gemfile)
44
+
45
+ ## Generators
46
+
47
+ You have the following generators to create new Angular files for you:
48
+
49
+ - rg:service <name>
50
+ - rg:resource <name>
51
+ - rg:controller <name>
52
+ - rg:filter <name>
53
+ - rg:directive <name>
54
+ - rg:app <name>
55
+
56
+ The generators only generate very basic file content. While this is intended, there might be --options for power users in the future.
57
+
58
+ ## Todo
59
+
60
+ This gem is not finished, yet. Feel free to contribute:
61
+
62
+ - Turbolink support
63
+ - Add scaffold generator
64
+ - Add serializer generator + directory
65
+ - Add capabilities to rg:app to optionally create routing
66
+ - Generate JS Tests
67
+
68
+ ## Credits
69
+
70
+ (c) 2013 Jan Lelis <janlelis.de>, MIT LICENSE
@@ -0,0 +1,22 @@
1
+ # encoding: utf-8
2
+
3
+ begin
4
+ require 'bundler'
5
+ rescue LoadError => e
6
+ warn e.message
7
+ warn "Run `gem install bundler` to install Bundler."
8
+ exit -1
9
+ end
10
+
11
+ begin
12
+ Bundler.setup(:development)
13
+ rescue Bundler::BundlerError => e
14
+ warn e.message
15
+ warn "Run `bundle install` to install missing gems."
16
+ exit e.status_code
17
+ end
18
+
19
+ require 'rake'
20
+
21
+ require 'rubygems/tasks'
22
+ Gem::Tasks.new
@@ -0,0 +1,11 @@
1
+ module Rg
2
+ class AppGenerator < ::Rails::Generators::NamedBase
3
+ desc "Creates a new angular app config"
4
+ include Helper
5
+
6
+
7
+ def create_app_config
8
+ template 'app/config.coffee.erb', APP_PATH + "/app/#{file_name}.coffee"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,32 @@
1
+ require 'json'
2
+
3
+ module Rg
4
+ class BowerGenerator < ::Rails::Generators::Base
5
+ desc "Generates a new .bowerrc and an iniatial bower.json"
6
+
7
+
8
+ class_option :name, type: :string, default: Rg::Helper.railsName,
9
+ desc: "Name for the new angular project (will be used as angular app name)"
10
+ class_option :directory, type: :string, default: "vendor/assets/bower",
11
+ desc: 'Directory to install your bower components for your .bowerrc'
12
+ class_option :version, type: :string, default: "0.0.0",
13
+ desc: 'Semantic vesion'
14
+ class_option :license, type: :string,
15
+ desc: "License to use"
16
+ class_option :authors, type: :array,
17
+ desc: "Authors"
18
+
19
+
20
+ def bower_rc(directory = nil)
21
+ create_file '.bowerrc', JSON.pretty_generate(
22
+ directory: options[:directory],
23
+ )
24
+ end
25
+
26
+ def bower_json
27
+ output = options.to_hash
28
+ output.delete "directory"
29
+ create_file 'bower.json', JSON.pretty_generate(output)
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,11 @@
1
+ module Rg
2
+ class ControllerGenerator < ::Rails::Generators::NamedBase
3
+ desc "Creates a new angular controller"
4
+ include Helper
5
+
6
+
7
+ def create_controller
8
+ template 'controller.coffee.erb', APP_PATH + "/controllers/#{file_name}_controller.coffee"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Rg
2
+ class DirectiveGenerator < ::Rails::Generators::NamedBase
3
+ desc "Creates a new angular directive"
4
+ include Helper
5
+
6
+
7
+ def create_directive
8
+ template 'directive.coffee.erb', APP_PATH + "/directives/#{file_name}.coffee"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Rg
2
+ class FilterGenerator < ::Rails::Generators::NamedBase
3
+ desc "Creates a new angular filter"
4
+ include Helper
5
+
6
+
7
+ def create_filter
8
+ template 'filter.coffee.erb', APP_PATH + "/filters/#{file_name}.coffee"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,91 @@
1
+ module Rg
2
+ class InstallGenerator < ::Rails::Generators::Base
3
+ desc "Creates a new angular project structure"
4
+ include Helper
5
+
6
+
7
+ class_option :manifests, type: :array, default: [],
8
+ desc: "List sprocket manifests in which angular should be included"
9
+ class_option :libraries, type: :array, default: %w[
10
+ angular
11
+ angularjs-rails-resource
12
+ ./angular/app/main
13
+ ],
14
+ desc: "JavaScript libraries/files to add to manifests"
15
+ class_option :'csrf-token', type: :boolean, default: true,
16
+ desc: "Create Rails CSRF-Token configuration"
17
+ class_option :'backend-url', type: :string, default: '',
18
+ desc: "Path to your Rails-API backend"
19
+
20
+ def create_directories
21
+ say 'Creating new angular directory structure'
22
+ %w[
23
+ app
24
+ services
25
+ resources
26
+ controllers
27
+ filters
28
+ directives
29
+ ].each{ |directory|
30
+ create_file APP_PATH + '/' + directory + '/.keep'
31
+ }
32
+ end
33
+
34
+ def create_main_coffee
35
+ say "Creating app/main.coffee file"
36
+ template 'app/main.coffee.erb', APP_PATH + '/app/main.coffee'
37
+ end
38
+
39
+ def create_settings_coffee
40
+ say "Creating app/settings.coffee file"
41
+ @backend_url = options[:'backend-url']
42
+ template 'app/settings.coffee.erb', APP_PATH + '/app/settings.coffee'
43
+ end
44
+
45
+ def create_csrf_token_coffee
46
+ return unless options[:"csrf-token"]
47
+ say "Creating app/csrf_token.coffee file"
48
+ template 'app/csrf_token.coffee.erb', APP_PATH + '/app/csrf_token.coffee'
49
+ end
50
+
51
+ def inject_into_sprockets
52
+ options[:manifests].each{ |manifest_file|
53
+ manifest_path = JS_PATH + '/' + manifest_file
54
+ if File.exists?(manifest_path)
55
+ manifest_data = File.read(manifest_path)
56
+ options[:libraries].reverse.each{ |library|
57
+ unless manifest_data =~ /require #{library}( |$)/
58
+ prepend_to_manifest manifest_path, library
59
+ end
60
+ }
61
+ else
62
+ create_manifest manifest_path, options[:libraries]
63
+ end
64
+ }
65
+ end
66
+
67
+ private
68
+
69
+ def manifest_content(config = {})
70
+ Array(config[:libraries]).map{ |library|
71
+ "#{ config[:ext] == '.coffee' ? '#' : '//' }= require #{library}\n"
72
+ }.join
73
+ end
74
+
75
+ def prepend_to_manifest(manifest_path, libraries)
76
+ say "Injecting #{libraries} into manifest at #{manifest_path}"
77
+ prepend_to_file manifest_path, "\n" + manifest_content(
78
+ libraries: libraries,
79
+ ext: File.extname(manifest_path),
80
+ )
81
+ end
82
+
83
+ def create_manifest(manifest_path, libraries)
84
+ say "Creating new manifest at #{manifest_path}"
85
+ create_file manifest_path, manifest_content(
86
+ libraries: libraries,
87
+ ext: File.extname(manifest_path),
88
+ )
89
+ end
90
+ end
91
+ end
@@ -0,0 +1,11 @@
1
+ module Rg
2
+ class ResourceGenerator < ::Rails::Generators::NamedBase
3
+ desc "Creates a new angular rails resource"
4
+ include Helper
5
+
6
+
7
+ def create_resource
8
+ template 'resource.coffee.erb', APP_PATH + "/resources/#{file_name}.coffee"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module Rg
2
+ class ServiceGenerator < ::Rails::Generators::NamedBase
3
+ desc "Creates a new angular service"
4
+ include Helper
5
+
6
+
7
+ def create_service
8
+ template 'service.coffee.erb', APP_PATH + "/services/#{file_name}.coffee"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,2 @@
1
+ @<%= appName %>
2
+
@@ -0,0 +1,6 @@
1
+ if csrfTokenTag = document.querySelector('meta[name=csrf-token]')
2
+ @<%= appName %>.config ["$httpProvider", ($httpProvider) ->
3
+ angular.forEach ['post', 'put', 'patch', 'delete'], (verb)->
4
+ $httpProvider.defaults.headers[verb] ||= {}
5
+ $httpProvider.defaults.headers[verb]['X-CSRF-Token'] = csrfTokenTag.content
6
+ ]
@@ -0,0 +1,19 @@
1
+ # Initialize App w/ Dependencies
2
+ #= require_self
3
+
4
+ # Load Settings
5
+ #= require ./settings
6
+
7
+ # Load Other App Config
8
+ #= require_tree .
9
+
10
+ # Load Complete App
11
+ #= require_tree ../services
12
+ #= require_tree ../resources
13
+ #= require_tree ../controllers
14
+ #= require_tree ../filters
15
+ #= require_tree ../directives
16
+
17
+ @<%= appName %> = angular.module '<%= app_name %>', [
18
+ 'rails'
19
+ ]
@@ -0,0 +1,3 @@
1
+ @<%= appName %>.settings ||= {}
2
+
3
+ @<%= appName %>.settings.backend_url = '<%= @backend_url %>'
@@ -0,0 +1,3 @@
1
+ @<%= appName %>.controller '<%= file_name.pluralize.camelize %>Controller', ['$scope', ($scope) ->
2
+
3
+ ]
@@ -0,0 +1,9 @@
1
+ @<%= appName %>.directive "<%= camelizeLower(file_name) %>", ->
2
+ # restrict: E A C M
3
+ # replace: true false
4
+ # template: ''
5
+ # templateUrl: ''
6
+ # priority: 0
7
+ # scope: true false {}
8
+ link: (scope, element, attrs) ->
9
+
@@ -0,0 +1,2 @@
1
+ @<%= appName %>.filter '<%= file_name %>', ->
2
+
@@ -0,0 +1,6 @@
1
+ @<%= appName %>.factory '<%= file_name.camelize %>',
2
+ ['railsResourceFactory', (railsResourceFactory) ->
3
+ railsResourceFactory
4
+ url: angular.module('<%= app_name %>').settings.backend_url + '/<%= file_name.pluralize %>'
5
+ name: '<%= file_name %>'
6
+ ]
@@ -0,0 +1,3 @@
1
+ @<%= appName %>.factory '<%= camelizeLower(file_name) %>',[ () ->
2
+
3
+ ]
@@ -0,0 +1,6 @@
1
+ require 'rg/version'
2
+ require 'rails'
3
+ require 'coffee-rails'
4
+ require 'sprockets/bower'
5
+ require 'rg/railtie'
6
+ require 'rg/helper'
@@ -0,0 +1,40 @@
1
+ module Rg
2
+ module Helper
3
+ extend self
4
+
5
+
6
+ JS_PATH = 'app/assets/javascripts'
7
+ APP_PATH = JS_PATH + '/angular'
8
+
9
+
10
+ def camelizeLower(name)
11
+ name.camelize.sub(/./){ |c| c.downcase }
12
+ end
13
+
14
+ def app_name
15
+ @app_name ||= appName.underscore
16
+ end
17
+
18
+ def appName
19
+ @appName ||= bowerName || railsName
20
+ end
21
+
22
+ def railsName
23
+ camelizeLower(Rails.application.class.parent_name)
24
+ end
25
+
26
+ def bowerName
27
+ JSON.parse(
28
+ File.read(
29
+ Rails.root + 'bower.json'
30
+ )
31
+ )["name"]
32
+ rescue
33
+ nil
34
+ end
35
+
36
+ def self.included(base)
37
+ base.source_root File.dirname(__FILE__) + '/../generators/rg/templates'
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,7 @@
1
+ module Rg
2
+ class Railtie < ::Rails::Railtie
3
+ rake_tasks do
4
+ load File.dirname(__FILE__) + '/../tasks/rg.rake'
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,3 @@
1
+ module Rg
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,8 @@
1
+ namespace :rg do
2
+ desc 'Setup bower and angular'
3
+ task :setup do
4
+ sh "rails g rg:bower"
5
+ sh "bower install angular angularjs-rails-resource --save"
6
+ sh "rails g rg:install --manifests=application.js"
7
+ end
8
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require File.expand_path('../lib/rg/version', __FILE__)
4
+
5
+ Gem::Specification.new do |gem|
6
+ gem.name = "rg"
7
+ gem.version = Rg::VERSION
8
+ gem.summary = 'rg: rails + angular'
9
+ gem.summary = 'A way to integrate AngularJS into a Rails project using CoffeeScript and Bower.'
10
+ gem.license = "MIT"
11
+ gem.authors = ["Jan Lelis"]
12
+ gem.email = "mail@janlelis.de"
13
+ gem.homepage = "https://github.com/janlelis/rg"
14
+
15
+ gem.files = Dir['{**/}{.*,*}'].select { |path| File.file?(path) }
16
+ gem.require_paths = ['lib']
17
+
18
+ gem.add_development_dependency 'bundler', '~> 1.0'
19
+ gem.add_development_dependency 'rubygems-tasks', '~> 0.2'
20
+
21
+ gem.add_dependency 'rails'
22
+ gem.add_dependency 'coffee-rails'
23
+ gem.add_dependency 'sprockets-bower'
24
+ gem.add_dependency 'rake'
25
+ end
metadata ADDED
@@ -0,0 +1,161 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Jan Lelis
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-12-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubygems-tasks
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: coffee-rails
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sprockets-bower
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description:
98
+ email: mail@janlelis.de
99
+ executables: []
100
+ extensions: []
101
+ extra_rdoc_files: []
102
+ files:
103
+ - .rspec
104
+ - .document
105
+ - .gitignore
106
+ - CHANGELOG.md
107
+ - pkg/rg-0.1.0.gem
108
+ - Gemfile.lock
109
+ - Gemfile
110
+ - lib/rg/version.rb
111
+ - lib/rg/helper.rb
112
+ - lib/rg/railtie.rb
113
+ - lib/rg.rb
114
+ - lib/tasks/rg.rake
115
+ - lib/generators/rg/resource_generator.rb
116
+ - lib/generators/rg/install_generator.rb
117
+ - lib/generators/rg/controller_generator.rb
118
+ - lib/generators/rg/filter_generator.rb
119
+ - lib/generators/rg/directive_generator.rb
120
+ - lib/generators/rg/bower_generator.rb
121
+ - lib/generators/rg/service_generator.rb
122
+ - lib/generators/rg/app_generator.rb
123
+ - lib/generators/rg/templates/service.coffee.erb
124
+ - lib/generators/rg/templates/filter.coffee.erb
125
+ - lib/generators/rg/templates/resource.coffee.erb
126
+ - lib/generators/rg/templates/controller.coffee.erb
127
+ - lib/generators/rg/templates/app/config.coffee.erb
128
+ - lib/generators/rg/templates/app/csrf_token.coffee.erb
129
+ - lib/generators/rg/templates/app/main.coffee.erb
130
+ - lib/generators/rg/templates/app/settings.coffee.erb
131
+ - lib/generators/rg/templates/directive.coffee.erb
132
+ - README.md
133
+ - LICENSE.txt
134
+ - Rakefile
135
+ - rg.gemspec
136
+ homepage: https://github.com/janlelis/rg
137
+ licenses:
138
+ - MIT
139
+ metadata: {}
140
+ post_install_message:
141
+ rdoc_options: []
142
+ require_paths:
143
+ - lib
144
+ required_ruby_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - '>='
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ required_rubygems_version: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - '>='
152
+ - !ruby/object:Gem::Version
153
+ version: '0'
154
+ requirements: []
155
+ rubyforge_project:
156
+ rubygems_version: 2.1.9
157
+ signing_key:
158
+ specification_version: 4
159
+ summary: A way to integrate AngularJS into a Rails project using CoffeeScript and
160
+ Bower.
161
+ test_files: []