json_voorhees 0.3.0 → 0.3.5
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 -76
- data/lib/generators/json_voorhees/app_make_admin/app_make_admin_generator.rb +47 -1
- data/lib/generators/json_voorhees/app_make_user/app_make_user_generator.rb +5 -1
- data/lib/generators/json_voorhees/app_make_user/templates/user/user_controller.rb +8 -2
- data/lib/generators/json_voorhees/app_make_user/templates/user/user_routes.rb +2 -0
- data/lib/generators/json_voorhees/massive_scaffold/massive_scaffold_generator.rb +4 -0
- data/lib/generators/json_voorhees/setup_app/setup_app_generator.rb +65 -27
- data/lib/generators/json_voorhees/setup_app/templates/api_controller_with_arcadex.rb +1 -1
- data/lib/generators/json_voorhees/setup_engine/setup_engine_generator.rb +2 -2
- data/lib/json_voorhees/version.rb +1 -1
- 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: bcfe1caaeb6586f4e3e4b4295d4b28b29cd395d9
|
4
|
+
data.tar.gz: 94f373f7621a5e277f1a051429083df3dcf4a24b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 07fe048f2bf236e5c8f52300aa18fc080d2b4d7f10ffef0bbb82875d3ac8bcab8c622bb17f02ab28be5356814f75b37ef5de995f6cb9786fb3f864674fa24733
|
7
|
+
data.tar.gz: 7ba4289ba29db5734968f5c680224069b558f716a927dfcab95cccb39e23a3021e65dd0a922cbafcbbb093dc83fae300be10a8c68b1a222b598503fdef750bca
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# JsonVoorhees
|
1
|
+
# JsonVoorhees 0.3.5
|
2
2
|
|
3
3
|
## Introduction
|
4
4
|
|
@@ -10,12 +10,14 @@ helps build the project if you follow the conventions.
|
|
10
10
|
|
11
11
|
## Scaffold Use
|
12
12
|
|
13
|
-
To install, put this in your main_app
|
13
|
+
To install, put this in your main_app and run bundle install.
|
14
14
|
|
15
15
|
```bash
|
16
16
|
gem "json_voorhees"
|
17
17
|
```
|
18
|
-
To setup your application use
|
18
|
+
To setup your application use the command below. It takes options that allow you
|
19
|
+
to do things like skip active_admin, skip a generic admin page, skip arcadex, and even
|
20
|
+
skip a user class. The default runs with active_admin, a user class and arcadex.
|
19
21
|
|
20
22
|
```bash
|
21
23
|
rails g json_voorhees:setup_app
|
@@ -33,13 +35,15 @@ s.add_development_dependency "json_voorhees"
|
|
33
35
|
rails g json_voorhees:setup_engine [engine name]
|
34
36
|
```
|
35
37
|
Make sure the engine is mounted in your app and it's in the main apps gemfile.
|
36
|
-
Go to the main_app and create your
|
38
|
+
Go to the main_app and run this scaffold to create your resource. It runs on
|
39
|
+
top of rails scaffold and in the process creates the api counterpart. You have
|
40
|
+
the option of skipping the normal rails scaffold.
|
37
41
|
```bash
|
38
42
|
rails g json_voorhees:massive_scaffold [engine name] [resource name] [api_version] [scaffold parameters]
|
39
43
|
```
|
40
|
-
Make sure the resource is in the correct scoping in the Engines routing file.
|
41
|
-
|
42
|
-
|
44
|
+
Make sure the resource is in the correct scoping in the Engines routing file. Then
|
45
|
+
copy over the engines migrations and migrate the main app. Check if everything is fine by
|
46
|
+
running rspec from the main app.
|
43
47
|
|
44
48
|
## Project Flow
|
45
49
|
|
@@ -54,79 +58,31 @@ The factory girl factory may not be setup correction depending on your passed ty
|
|
54
58
|
9. Copy migrations to main app and run db migrations in main app
|
55
59
|
10. (in app) Run rspec to check for errors
|
56
60
|
|
57
|
-
|
58
|
-
|
59
|
-
To install, put this in your main_app
|
60
|
-
|
61
|
-
```bash
|
62
|
-
gem "json_voorhees"
|
63
|
-
```
|
64
|
-
|
65
|
-
To setup your application use
|
66
|
-
|
67
|
-
```bash
|
68
|
-
rails g json_voorhees:setup_app
|
69
|
-
```
|
70
|
-
It will install commonly used gems, enforce a layout for your app and even
|
71
|
-
a user class if you want it.
|
72
|
-
|
73
|
-
My APIs all use a series of engines hooked into the main_app. The main_app is
|
74
|
-
the caretaker for things like specs and the admin page. It's also where the api_controller
|
75
|
-
and application_controller reside. Their counterparts in an engine all inherit from
|
76
|
-
one of these controllers. Since the engines need to be mounted into the route file,
|
77
|
-
engines can version themselves and it helps to increment the project little by litter.
|
78
|
-
This separation of concerns if done by logic can help break a project into smaller bitesized
|
79
|
-
pieces which can then if need be go under their own version control and managed by different
|
80
|
-
teams.
|
81
|
-
|
82
|
-
Go to the engines folder and create an engine like so.
|
83
|
-
|
84
|
-
```bash
|
85
|
-
rails plugin new [engine name] --mountable
|
86
|
-
cd [engine name]
|
87
|
-
```
|
88
|
-
Now add the gem to your gemspec like so and execute the following command
|
61
|
+
Steps 1 through 2 are only done once. You need to run massive_scaffold for each
|
62
|
+
resource.
|
89
63
|
|
90
|
-
|
91
|
-
s.add_development_dependency "json_voorhees"
|
92
|
-
rails g json_voorhees:setup_engine [engine name]
|
93
|
-
```
|
94
|
-
After scaffolding out your resource, generate the necessary api controller
|
95
|
-
and its serializer
|
96
|
-
|
97
|
-
```bash
|
98
|
-
rails g json_voorhees:engine_scaffold [engine name] [resource name] [api_version] [field:type field:type]
|
99
|
-
|
100
|
-
or
|
101
|
-
|
102
|
-
rails g json_voorhees:engine_create_controller [engine name] [resource name] [api_version] [field:type field:type]
|
103
|
-
rails g json_voorhees:engine_create_serializer [engine name] [resource name] [field:type field:type]
|
104
|
-
```
|
105
|
-
|
106
|
-
Authorizations are all handled in a gem called authorization.
|
107
|
-
Specs are also ran through RSpec and FactoryGirl, Go to the main_app and run
|
108
|
-
|
109
|
-
```bash
|
110
|
-
rails g json_voorhees:app_scaffold [engine name] [resource name] [api_version] [field:type field:type]
|
111
|
-
|
112
|
-
or
|
113
|
-
|
114
|
-
rails g json_voorhees:app_make_authorizations [engine name] [resource name] [field:type field:type]
|
115
|
-
rails g json_voorhees:app_make_tests [engine name] [resource name] [api_version] [field:type field:type]
|
116
|
-
```
|
117
|
-
|
118
|
-
For every resource created, those 4 are ran in their respective locations.
|
119
|
-
|
120
|
-
## Notes
|
64
|
+
## Individual Generator Use
|
121
65
|
|
122
|
-
|
123
|
-
|
66
|
+
If massive scaffold is too bulky for you, you have the option of running the
|
67
|
+
generators individually. Use rails g to see the generators that come with
|
68
|
+
the gem and the options. They each have a multitude of arguments and options.
|
69
|
+
|
70
|
+
1. rails g json_voorhees:app_make_admin
|
71
|
+
2. rails g json_voorhees:app_make_authorizations
|
72
|
+
3. rails g json_voorhees:app_make_tests
|
73
|
+
4. rails g json_voorhees:app_make_user
|
74
|
+
5. rails g json_voorhees:app_scaffold
|
75
|
+
6. rails g json_voorhees:engine_create_controller
|
76
|
+
7. rails g json_voorhees:engine_create_model
|
77
|
+
8. rails g json_voorhees:engine_create_serializer
|
78
|
+
9. rails g json_voorhees:engine_scaffold
|
79
|
+
10. rails g json_voorhees:massive_scaffold
|
80
|
+
11. rails g json_voorhees:setup_app
|
81
|
+
12. rails g json_voorhees:setup_engine
|
124
82
|
|
125
83
|
## To Do
|
126
84
|
|
127
85
|
1. Figure out a better way to test this thing
|
128
86
|
2. Use option for namespaced engine or no engine
|
129
|
-
3.
|
130
|
-
4.
|
131
|
-
5. Option for websockets
|
132
|
-
6. Update README
|
87
|
+
3. Maybe give an option to include pagination?
|
88
|
+
4. Option for websockets and paperclip?
|
@@ -3,13 +3,59 @@ module JsonVoorhees
|
|
3
3
|
source_root File.expand_path('../templates', __FILE__)
|
4
4
|
class_option :arcadex, :type => :boolean, :default => true, :description => "Include arcadex gem and authentication in api_controller"
|
5
5
|
class_option :user, :type => :boolean, :default => true, :description => "Create an admin page with user class"
|
6
|
+
class_option :active_admin, :type => :boolean, :default => true, :description => "Setup the active_admin gem, the gem needs to be already added"
|
6
7
|
|
7
8
|
def sprint
|
8
|
-
|
9
|
+
if options.active_admin?
|
10
|
+
make_active_admin
|
11
|
+
else
|
12
|
+
make_admin
|
13
|
+
end
|
9
14
|
end
|
10
15
|
|
11
16
|
private
|
12
17
|
|
18
|
+
def make_active_admin
|
19
|
+
run "rails g active_admin:install --skip-users"
|
20
|
+
inject_into_file 'app/controllers/application_controller.rb', after: "protect_from_forgery with: :exception\n" do <<-'RUBY'
|
21
|
+
|
22
|
+
#This needs to be put inside a config file. but this is good for now
|
23
|
+
#This only requires the password for the admin section of the website
|
24
|
+
protected
|
25
|
+
|
26
|
+
def authenticate
|
27
|
+
authenticate_or_request_with_http_basic do |username, password|
|
28
|
+
username == "admin" && password == "password"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
RUBY
|
33
|
+
end
|
34
|
+
find_and_replace_initializer
|
35
|
+
end
|
36
|
+
|
37
|
+
def find_and_replace_initializer
|
38
|
+
gsub_file 'config/initializers/active_admin.rb',
|
39
|
+
'config.authentication_method = :authenticate_admin_user!',
|
40
|
+
'#config.authentication_method = :authenticate_admin_user!'
|
41
|
+
gsub_file 'config/initializers/active_admin.rb',
|
42
|
+
'config.current_user_method = :current_admin_user',
|
43
|
+
'#config.current_user_method = :current_admin_user'
|
44
|
+
gsub_file 'config/initializers/active_admin.rb',
|
45
|
+
'config.logout_link_path = :destroy_admin_user_session_path',
|
46
|
+
'#config.logout_link_path = :destroy_admin_user_session_path'
|
47
|
+
inject_into_file 'config/initializers/active_admin.rb', after: "ActiveAdmin.setup do |config|\n" do <<-'RUBY'
|
48
|
+
|
49
|
+
# http auth for admin area
|
50
|
+
config.before_filter :authenticate
|
51
|
+
config.authentication_method = false
|
52
|
+
config.current_user_method = false
|
53
|
+
config.allow_comments = false
|
54
|
+
|
55
|
+
RUBY
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
13
59
|
def make_admin
|
14
60
|
if options.user? && options.arcadex?
|
15
61
|
#copy admin page with user engine
|
@@ -2,9 +2,13 @@ module JsonVoorhees
|
|
2
2
|
class AppMakeUserGenerator < Rails::Generators::Base
|
3
3
|
source_root File.expand_path('../templates', __FILE__)
|
4
4
|
class_option :arcadex, :type => :boolean, :default => true, :description => "Include arcadex tokens"
|
5
|
-
|
5
|
+
class_option :active_admin, :type => :boolean, :default => true, :description => "Include admin scoping in routes file"
|
6
|
+
|
6
7
|
def sprint
|
7
8
|
people
|
9
|
+
if options.active_admin?
|
10
|
+
run "rails g active_admin:resource people::user"
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
private
|
@@ -22,7 +22,10 @@ module People
|
|
22
22
|
if user.save
|
23
23
|
#If the user is saved, return a token
|
24
24
|
token = user.tokens[0]
|
25
|
-
|
25
|
+
::Arcadex::Create.set_token(token,360,request)
|
26
|
+
userHash = {id: user.id, username: user.username, email: user.email}
|
27
|
+
tokenHash = {auth_token: token.auth_token}
|
28
|
+
render :json => {user: userHash,token: tokenHash}
|
26
29
|
else
|
27
30
|
#Return an error if not saved
|
28
31
|
render :json => {errors: user.errors}, status: :unprocessable_entity
|
@@ -36,7 +39,10 @@ module People
|
|
36
39
|
user = ::People::V1::User.find_by(email: params[:email])
|
37
40
|
if user && user.authenticate(params[:password])
|
38
41
|
token = user.tokens.create
|
39
|
-
|
42
|
+
::Arcadex::Create.set_token(token,360,request)
|
43
|
+
userHash = {id: user.id, username: user.username, email: user.email}
|
44
|
+
tokenHash = {auth_token: token.auth_token}
|
45
|
+
render :json => {user: userHash,token: tokenHash}
|
40
46
|
else
|
41
47
|
render :json => {errors: "Email and/or Password is incorrect"}, status: :unauthorized
|
42
48
|
end
|
@@ -10,6 +10,7 @@ module JsonVoorhees
|
|
10
10
|
class_option :request, :type => :boolean, :default => true, :description => "Create request stub tests"
|
11
11
|
class_option :routing, :type => :boolean, :default => true, :description => "Create routing stub tests"
|
12
12
|
class_option :arcadex, :type => :boolean, :default => true, :description => "Send requests with an arcadex header"
|
13
|
+
class_option :active_admin, :type => :boolean, :default => true, :description => "Generate the admin resource"
|
13
14
|
|
14
15
|
def sprint
|
15
16
|
inside "engines/#{module_name.underscore}" do
|
@@ -32,6 +33,9 @@ module JsonVoorhees
|
|
32
33
|
else
|
33
34
|
run "rails g json_voorhees:app_scaffold --skip-arcadex #{module_name} #{resource_name} #{api_version} #{attributes.join(" ")}"
|
34
35
|
end
|
36
|
+
if options.active_admin?
|
37
|
+
run "rails generate active_admin:resource #{module_name.underscore.downcase}::#{resource_name.underscore.downcase}"
|
38
|
+
end
|
35
39
|
end
|
36
40
|
|
37
41
|
private
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
|
1
3
|
module JsonVoorhees
|
2
4
|
class SetupAppGenerator < Rails::Generators::Base
|
3
5
|
source_root File.expand_path('../templates', __FILE__)
|
@@ -5,6 +7,7 @@ module JsonVoorhees
|
|
5
7
|
class_option :user, :type => :boolean, :default => true, :description => "Create an engine for the user class"
|
6
8
|
class_option :test, :type => :boolean, :default => false, :description => "Set true if running tests to skip things like bundle update and git"
|
7
9
|
class_option :admin, :type => :boolean, :default => true, :description => "Create an admin page"
|
10
|
+
class_option :active_admin, :type => :boolean, :default => true, :description => "Setup the active_admin gem"
|
8
11
|
|
9
12
|
def sprint
|
10
13
|
create_file_structure
|
@@ -17,39 +20,65 @@ module JsonVoorhees
|
|
17
20
|
make_admin
|
18
21
|
end
|
19
22
|
if options.user?
|
20
|
-
|
23
|
+
make_user
|
21
24
|
end
|
25
|
+
run "rake railties:install:migrations"
|
26
|
+
run_db_migrations
|
22
27
|
routes
|
23
28
|
make_controllers
|
29
|
+
if options.arcadex? && options.active_admin?
|
30
|
+
run "rails generate active_admin:resource arcadex::token"
|
31
|
+
end
|
24
32
|
run_git
|
25
33
|
end
|
26
34
|
|
27
35
|
private
|
28
36
|
|
29
37
|
def make_admin
|
30
|
-
if !options.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
38
|
+
if !options.active_admin?
|
39
|
+
if !options.arcadex? && !options.user?
|
40
|
+
run "rails g json_voorhees:app_make_admin --skip-arcadex --skip-user --skip-active_admin"
|
41
|
+
end
|
42
|
+
if !options.arcadex? && options.user?
|
43
|
+
run "rails g json_voorhees:app_make_admin --skip-arcadex --skip-active_admin"
|
44
|
+
end
|
45
|
+
if !options.user? && options.arcadex?
|
46
|
+
run "rails g json_voorhees:app_make_admin --skip-user --skip-active_admin"
|
47
|
+
end
|
48
|
+
if options.user? && options.arcadex?
|
49
|
+
run "rails g json_voorhees:app_make_admin --skip-active_admin"
|
50
|
+
end
|
51
|
+
else
|
52
|
+
if !options.arcadex? && !options.user?
|
53
|
+
run "rails g json_voorhees:app_make_admin --skip-arcadex --skip-user"
|
54
|
+
end
|
55
|
+
if !options.arcadex? && options.user?
|
56
|
+
run "rails g json_voorhees:app_make_admin --skip-arcadex"
|
57
|
+
end
|
58
|
+
if !options.user? && options.arcadex?
|
59
|
+
run "rails g json_voorhees:app_make_admin --skip-user"
|
60
|
+
end
|
61
|
+
if options.user? && options.arcadex?
|
62
|
+
run "rails g json_voorhees:app_make_admin"
|
63
|
+
end
|
41
64
|
end
|
42
65
|
end
|
43
66
|
|
44
67
|
def make_user
|
45
|
-
if !options.
|
46
|
-
|
68
|
+
if !options.active_admin?
|
69
|
+
if !options.arcadex?
|
70
|
+
run "rails g json_voorhees:app_make_user --skip-arcadex --skip-active_admin"
|
71
|
+
else
|
72
|
+
run "rails g json_voorhees:app_make_user --skip-active_admin"
|
73
|
+
end
|
47
74
|
else
|
48
|
-
|
75
|
+
if !options.arcadex?
|
76
|
+
run "rails g json_voorhees:app_make_user --skip-arcadex"
|
77
|
+
else
|
78
|
+
run "rails g json_voorhees:app_make_user"
|
79
|
+
end
|
49
80
|
end
|
50
81
|
run_bundle
|
51
|
-
run "rake railties:install:migrations"
|
52
|
-
run_db_migrations
|
53
82
|
end
|
54
83
|
|
55
84
|
def include_middleware
|
@@ -64,16 +93,19 @@ module JsonVoorhees
|
|
64
93
|
|
65
94
|
def routes
|
66
95
|
route "root to: \"app_index#app\""
|
67
|
-
|
96
|
+
if !options.active_admin? && options.admin?
|
97
|
+
route "get \'admin\' => \'main#admin\', as: \"admin\" #admin_path"
|
98
|
+
end
|
68
99
|
end
|
69
100
|
|
70
101
|
def make_controllers
|
71
102
|
generate "controller", "app_index app"
|
72
103
|
run "rm -f app/controllers/app_index_controller.rb"
|
73
104
|
copy_file "app_index_controller.rb", "app/controllers/app_index_controller.rb"
|
74
|
-
|
75
|
-
|
76
|
-
|
105
|
+
if !options.active_admin? && options.admin?
|
106
|
+
generate "controller", "main admin"
|
107
|
+
run "rm -f spec/controllers/main_controller_spec.rb"
|
108
|
+
end
|
77
109
|
#Copy the views over
|
78
110
|
copy_file "views/app", "app/views/app_index/app.html.erb"
|
79
111
|
copy_file "views/app_index", "app/views/layouts/app_index.html.erb"
|
@@ -108,15 +140,16 @@ module JsonVoorhees
|
|
108
140
|
#gem 'sqlite3', '~> 1.3.9' # dev & test database
|
109
141
|
gem 'figaro', '~> 0.7.0' # env variables
|
110
142
|
gem 'annotate', ">=2.6.0"
|
111
|
-
gem "better_errors", '~> 1.1.0'
|
112
|
-
gem "binding_of_caller", "~> 0.7.1" # needed by better_errors or variable inspection
|
113
143
|
gem 'rspec-rails', '~> 3.0.0'
|
114
144
|
gem 'byebug', '~> 3.2.0'
|
115
145
|
gem "factory_girl_rails", "~> 4.0"
|
116
146
|
gem "database_cleaner", '~> 1.3.0'
|
117
147
|
end
|
148
|
+
gem_group :development do
|
149
|
+
gem "better_errors", '~> 1.1.0'
|
150
|
+
gem "binding_of_caller", "~> 0.7.1" # needed by better_errors or variable inspection
|
151
|
+
end
|
118
152
|
# Other gems
|
119
|
-
gem 'authorization', :path => "gems/authorization"
|
120
153
|
# This ties in nicely with Ember, 0.8.0 is the stable version
|
121
154
|
gem "active_model_serializers", "~> 0.8.0"
|
122
155
|
# This is the api of choice now
|
@@ -126,12 +159,16 @@ module JsonVoorhees
|
|
126
159
|
gem 'type_cartographer'
|
127
160
|
gem 'devise', "~> 3.2.4"
|
128
161
|
if options.arcadex?
|
129
|
-
gem 'arcadex'
|
162
|
+
gem 'arcadex', '~> 1.1.0'
|
130
163
|
end
|
131
164
|
if options.admin?
|
132
165
|
gem 'autoprefixer-rails'
|
133
166
|
gem 'bootstrap-sass', '~> 3.2.0'
|
134
167
|
end
|
168
|
+
if options.active_admin?
|
169
|
+
gem 'activeadmin', :git => 'https://github.com/activeadmin/activeadmin.git', :branch => "master"
|
170
|
+
end
|
171
|
+
gem 'authorization', :path => "gems/authorization"
|
135
172
|
end
|
136
173
|
|
137
174
|
def create_file_structure
|
@@ -146,8 +183,9 @@ module JsonVoorhees
|
|
146
183
|
|
147
184
|
def run_bundle
|
148
185
|
if !options.test?
|
149
|
-
|
150
|
-
|
186
|
+
Bundler.with_clean_env do
|
187
|
+
run "bundle install"
|
188
|
+
end
|
151
189
|
end
|
152
190
|
end
|
153
191
|
|
@@ -6,7 +6,7 @@ class Api::V1::ApiController < ::ActionController::API
|
|
6
6
|
|
7
7
|
def authenticate_user
|
8
8
|
#["current_user","current_token"] Make this true to check for email also
|
9
|
-
@instance_hash = ::Arcadex.full_authentication(params,request,false)
|
9
|
+
@instance_hash = ::Arcadex::Authentication.full_authentication(params,request,false)
|
10
10
|
if @instance_hash.nil?
|
11
11
|
render :json => {errors: "User is not logged in, register or log in"} , status: :unauthorized
|
12
12
|
end
|
@@ -28,9 +28,9 @@ module JsonVoorhees
|
|
28
28
|
inject_into_file "config/routes.rb", after: "#{module_name.camelize}::Engine.routes.draw do\n" do <<-'RUBY'
|
29
29
|
|
30
30
|
#root to: "controller_name#index"
|
31
|
-
scope 'admin' do
|
31
|
+
#scope 'admin' do
|
32
32
|
|
33
|
-
|
33
|
+
#end
|
34
34
|
|
35
35
|
scope 'api' do
|
36
36
|
scope '1' do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_voorhees
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cleophus Robinson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-09-
|
11
|
+
date: 2014-09-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|