rg 0.1.1

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.
@@ -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: []