agilib 0.1.7 → 0.1.8
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/.DS_Store +0 -0
- data/app/.DS_Store +0 -0
- data/app/views/apitome/docs/_all_examples.html.erb +10 -0
- data/app/views/apitome/docs/_body.html.erb +4 -0
- data/app/views/apitome/docs/_curl.html.erb +4 -0
- data/app/views/apitome/docs/_example.html.erb +24 -0
- data/app/views/apitome/docs/_explanation.html.erb +3 -0
- data/app/views/apitome/docs/_header.html.erb +8 -0
- data/app/views/apitome/docs/_headers.html.erb +4 -0
- data/app/views/apitome/docs/_navigation.html.erb +28 -0
- data/app/views/apitome/docs/_params.html.erb +30 -0
- data/app/views/apitome/docs/_query.html.erb +4 -0
- data/app/views/apitome/docs/_route.html.erb +4 -0
- data/app/views/apitome/docs/_status.html.erb +4 -0
- data/app/views/apitome/docs/index.html.erb +6 -0
- data/app/views/apitome/docs/show.html.erb +2 -0
- data/lib/.DS_Store +0 -0
- data/lib/agilib/composer/templates/recipes/apitome.rb +13 -0
- data/lib/agilib/composer/templates/recipes/push.rb +3 -3
- data/lib/agilib/composer/templates/recipes/rspec.rb +1 -4
- data/lib/agilib/composer/templates/recipes/token.rb +2 -2
- data/lib/agilib/composer/templates/runner.rb +1 -1
- data/lib/agilib/composer/templates/snippets/rspec/tokens_acceptance_spec.rb +23 -7
- data/lib/agilib/composer/templates/snippets/rspec/users_acceptance_spec.rb +49 -43
- data/lib/agilib/version.rb +1 -1
- data/lib/generators/agilib/install/templates/config/initializers/agilib.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc9deaf2be5e4a69fc444229b6ba64f9ecf2aef4
|
4
|
+
data.tar.gz: 2ec8ec06863cbbe8231aa8aa024f6a9e71a8a38c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9e34f93cb5b3ce6b062b005abb29a82c95b73461ac8796cf9b3e6e26b383b7035ae66211c52983ea21e7ed5be48aae39813e1854c129b0efb00ed7d0cc403d0b
|
7
|
+
data.tar.gz: ae8a8a786913b14e79471e80f8c82f79f55d3804889a3f831b93afc39f2bf20f42f13be345367ce28343183dcf18b9af0b3b1364810e6a3824cce29fff0de445
|
data/.DS_Store
CHANGED
Binary file
|
data/app/.DS_Store
CHANGED
Binary file
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<% resources.each do |resource| %>
|
2
|
+
<section class="example" id="<%= id_for(resource['name']) %>">
|
3
|
+
<h2 class="resource-name"><%= resource['name'] %></h2>
|
4
|
+
<% resource['examples'].each do |example| %>
|
5
|
+
<article id="<%= id_for(example['link'].gsub('.json', '')) %>">
|
6
|
+
<%= render partial: 'example', locals: { example: set_example(example['link'].gsub('.json', '')) } %>
|
7
|
+
</article>
|
8
|
+
<% end %>
|
9
|
+
</section>
|
10
|
+
<% end %>
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<h3><%= example['description'] %></h3>
|
2
|
+
|
3
|
+
<%= render partial: 'apitome/docs/explanation', locals: {explaination: example['explanation']} if example['explanation'] %>
|
4
|
+
<%= render partial: 'apitome/docs/params', locals: {params: example['parameters']} if example['parameters'].size > 0 %>
|
5
|
+
|
6
|
+
<% example['requests'].each_with_index do |request, index| %>
|
7
|
+
<div id="<%= "request-#{index}" %>">
|
8
|
+
<h3>Request</h3>
|
9
|
+
<div class="request">
|
10
|
+
<%= render partial: 'apitome/docs/route', locals: {request: request, index: index} %>
|
11
|
+
<%= render partial: 'apitome/docs/headers', locals: {request: request, index: index, headers: request['request_headers']} %>
|
12
|
+
<%= render partial: 'apitome/docs/query', locals: {request: request, index: index} unless request['request_query_parameters'].empty? %>
|
13
|
+
<%= render partial: 'apitome/docs/body', locals: {request: request, index: index, body: request['request_body'], type: request['request_content_type']} if request['request_body'] %>
|
14
|
+
<%= render partial: 'apitome/docs/curl', locals: {request: request, index: index} if request['curl'] %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<h3>Response</h3>
|
18
|
+
<div class="response">
|
19
|
+
<%= render partial: 'apitome/docs/status', locals: {request: request, index: index} %>
|
20
|
+
<%= render partial: 'apitome/docs/headers', locals: {request: request, index: index, headers: request['response_headers']} %>
|
21
|
+
<%= render partial: 'apitome/docs/body', locals: {request: request, index: index, body: request['response_body'], type: request['response_content_type']} if request['response_body'] %>
|
22
|
+
</div>
|
23
|
+
</div>
|
24
|
+
<% end %>
|
@@ -0,0 +1,8 @@
|
|
1
|
+
<header class="navbar navbar-fixed-top docs-nav" role="banner">
|
2
|
+
<div class="container">
|
3
|
+
<div class="navbar-header">
|
4
|
+
<h1 class="navbar-brand"><a href="<%= Apitome.configuration.mount_at %>"><%= Apitome.configuration.title %></a></h1>
|
5
|
+
</div>
|
6
|
+
<p class="navbar-text pull-right"><%= link_to '<img src="http://agivis.com.br/assets/logo_agivis-af5e30b64fe8cc778c0b0010b613e88c.jpg" alt="" height="25">'.html_safe, "http://www.agivis.com.br", :target => "_blank" %></hp>
|
7
|
+
</div>
|
8
|
+
</header>
|
@@ -0,0 +1,28 @@
|
|
1
|
+
<ul class="nav sidenav">
|
2
|
+
<li>
|
3
|
+
<% if Apitome.configuration.single_page %>
|
4
|
+
<a href="#readme">README</a>
|
5
|
+
<% else %>
|
6
|
+
<a href="<%= Apitome.configuration.mount_at %>">README</a>
|
7
|
+
<% end %>
|
8
|
+
</li>
|
9
|
+
<% resources.each do |resource| %>
|
10
|
+
<li>
|
11
|
+
<% if Apitome.configuration.single_page %>
|
12
|
+
<a href="#<%= id_for(resource['examples'].first['link']) %>"><%= resource['name'] %></a>
|
13
|
+
<ul class="nav">
|
14
|
+
<% resource['examples'].each do |example| %>
|
15
|
+
<li><%= link_to example['description'], "##{id_for(example['link'])}" %></li>
|
16
|
+
<% end %>
|
17
|
+
</ul>
|
18
|
+
<% else %>
|
19
|
+
<li><%= link_to resource['name'], "#{Apitome.configuration.mount_at}/#{resource['examples'].first['link'].gsub(/\.json$/, '')}" %></li>
|
20
|
+
<ul class="nav">
|
21
|
+
<% resource['examples'].each do |example| %>
|
22
|
+
<li><%= link_to example['description'], "#{Apitome.configuration.mount_at}/#{example['link'].gsub(/\.json$/, '')}" %></li>
|
23
|
+
<% end %>
|
24
|
+
</ul>
|
25
|
+
<% end %>
|
26
|
+
</li>
|
27
|
+
<% end %>
|
28
|
+
</ul>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<section class="params">
|
2
|
+
<h3>Parameters</h3>
|
3
|
+
<div class="table-responsive">
|
4
|
+
<table class="table table-bordered">
|
5
|
+
<tr>
|
6
|
+
<% param_headers(params).each do |title| %>
|
7
|
+
<th><%= title %></th>
|
8
|
+
<% end %>
|
9
|
+
</tr>
|
10
|
+
<% params.each do |param| %>
|
11
|
+
<tr>
|
12
|
+
<td class="name">
|
13
|
+
<% if param['scope'] %>
|
14
|
+
<%= "#{param['scope']}[#{param['name']}]" %>
|
15
|
+
<% else %>
|
16
|
+
<%= param['name'] %>
|
17
|
+
<% end %>
|
18
|
+
<% if param['required'] %>
|
19
|
+
<span class="label label-danger required">required</span>
|
20
|
+
<% end %>
|
21
|
+
</td>
|
22
|
+
<td class="description"><%= param['description'] %></td>
|
23
|
+
<% param_extras(params).each do |extra| %>
|
24
|
+
<td class="extra"><%= param[extra] %></td>
|
25
|
+
<% end %>
|
26
|
+
</tr>
|
27
|
+
<% end %>
|
28
|
+
</table>
|
29
|
+
</div>
|
30
|
+
</section>
|
data/lib/.DS_Store
CHANGED
Binary file
|
@@ -0,0 +1,13 @@
|
|
1
|
+
gem 'apitome'
|
2
|
+
|
3
|
+
if defined? app_name
|
4
|
+
name = app_name
|
5
|
+
elsif defined? application_name
|
6
|
+
name = application_name
|
7
|
+
end
|
8
|
+
|
9
|
+
templater.post_bundler do
|
10
|
+
generate 'apitome:install'
|
11
|
+
|
12
|
+
gsub_file 'config/initializers/apitome.rb', 'Apitome Documentation', "#{name.humanize} Api Documentation"
|
13
|
+
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
templater.post_bundler do
|
3
3
|
|
4
|
-
if Agilib::Composer.options[:all] || yes?("\nO projeto deverá ter Notificação por Push? [yes,no]", :green)
|
4
|
+
# if Agilib::Composer.options[:all] || yes?("\nO projeto deverá ter Notificação por Push? [yes,no]", :green)
|
5
5
|
|
6
|
-
do_configure = yes?("\nDeseja configurar agora? [yes,no]", :green)
|
6
|
+
do_configure = yes?("\nDeseja configurar o módulo Push Notification agora? [yes,no]", :green)
|
7
7
|
|
8
8
|
generate 'agilib:push'
|
9
9
|
rake 'db:migrate'
|
@@ -42,5 +42,5 @@ templater.post_bundler do
|
|
42
42
|
|
43
43
|
end
|
44
44
|
|
45
|
-
end
|
45
|
+
# end
|
46
46
|
end
|
@@ -6,7 +6,6 @@ gem "database_cleaner", :group => :test
|
|
6
6
|
gem "email_spec", :group => :test
|
7
7
|
gem 'simplecov', :require => false, :group => :test
|
8
8
|
gem 'rspec_api_documentation', :group => [:development, :test]
|
9
|
-
gem 'raddocs', :github => "smartlogic/raddocs"
|
10
9
|
gem 'json_spec', :group => [:development, :test]
|
11
10
|
|
12
11
|
templater.post_bundler do
|
@@ -136,13 +135,11 @@ SimpleCov.start
|
|
136
135
|
|
137
136
|
say("\nConfigurando RSpec API Documentation...\n", :green)
|
138
137
|
|
139
|
-
inject_into_file "config/routes.rb", "\n\n get \"/docs\" => Raddocs::App, :anchor => false\n\n", :after => "agilib"
|
140
|
-
|
141
138
|
append_file spec_helper_path do
|
142
139
|
<<-TEXT
|
143
140
|
RspecApiDocumentation.configure do |config|
|
144
141
|
config.format = [:json]
|
145
|
-
config.keep_source_order =
|
142
|
+
config.keep_source_order = false
|
146
143
|
end
|
147
144
|
TEXT
|
148
145
|
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
templater.post_bundler do
|
3
3
|
|
4
|
-
if Agilib::Composer.options[:all] || yes?("\nO projeto deverá ter Autenticação por Token? [yes,no]\n", :green)
|
4
|
+
# if Agilib::Composer.options[:all] || yes?("\nO projeto deverá ter Autenticação por Token? [yes,no]\n", :green)
|
5
5
|
say("\nConfigurando o módulo Token Authenticatable... \n\n", :green)
|
6
6
|
generate 'agilib:token'
|
7
7
|
rake 'db:migrate'
|
8
|
-
end
|
8
|
+
# end
|
9
9
|
|
10
10
|
end
|
@@ -4,7 +4,7 @@ require File.join(File.expand_path('./../../../../', __FILE__), 'agilib.rb')
|
|
4
4
|
require 'composer'
|
5
5
|
require File.join(File.dirname(__FILE__), 'core_ext.rb')
|
6
6
|
|
7
|
-
%w(default gems responders simple_form bootstrap rspec devise token push cancan better_errors layout finalize).each do |recipe|
|
7
|
+
%w(default gems responders simple_form bootstrap rspec apitome devise token push cancan better_errors layout finalize).each do |recipe|
|
8
8
|
apply templater.recipe(recipe)
|
9
9
|
end
|
10
10
|
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'rspec_api_documentation/dsl'
|
3
5
|
|
4
|
-
resource "Tokens" do
|
6
|
+
resource "1 - Tokens de Autenticação" do
|
5
7
|
header "Accept", "application/json"
|
6
8
|
header "Content-Type", "application/json"
|
7
9
|
|
@@ -11,15 +13,29 @@ resource "Tokens" do
|
|
11
13
|
# POST /tokens
|
12
14
|
post "/tokens" do
|
13
15
|
|
14
|
-
parameter :email, "
|
15
|
-
parameter :password, "
|
16
|
+
parameter :email, "Email do Usuário", :required => true
|
17
|
+
parameter :password, "Senha do Usuário", :required => true
|
16
18
|
|
17
19
|
let(:email) { user.email }
|
18
20
|
let(:password) { user.password }
|
19
21
|
|
20
22
|
let(:raw_post) { params.to_json }
|
21
23
|
|
22
|
-
example_request "
|
24
|
+
example_request "1.1 Solicitar Token de Autenticação" do
|
25
|
+
expect(status).to eq(200)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# GET /tokens
|
30
|
+
get "/tokens/check" do
|
31
|
+
|
32
|
+
parameter :user_token, "Token de Autenticação", :required => true
|
33
|
+
|
34
|
+
let(:user_token) { user.authentication_token }
|
35
|
+
|
36
|
+
let(:raw_post) { params.to_json }
|
37
|
+
|
38
|
+
example_request "1.2 Checar validade do Token" do
|
23
39
|
expect(status).to eq(200)
|
24
40
|
end
|
25
41
|
end
|
@@ -27,13 +43,13 @@ resource "Tokens" do
|
|
27
43
|
# DELETE /tokens
|
28
44
|
delete "/tokens" do
|
29
45
|
|
30
|
-
parameter :
|
46
|
+
parameter :user_token, "Token de Autenticação", :required => true
|
31
47
|
|
32
|
-
let(:
|
48
|
+
let(:user_token) { user.authentication_token }
|
33
49
|
|
34
50
|
let(:raw_post) { params.to_json }
|
35
51
|
|
36
|
-
example_request "
|
52
|
+
example_request "1.3 Remover Token de Autenticação" do
|
37
53
|
expect(status).to eq(200)
|
38
54
|
end
|
39
55
|
end
|
@@ -1,23 +1,23 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
require 'rspec_api_documentation/dsl'
|
3
5
|
|
4
|
-
resource "
|
6
|
+
resource "2 - Usuários" do
|
5
7
|
header "Accept", "application/json"
|
6
8
|
header "Content-Type", "application/json"
|
7
9
|
|
8
10
|
let(:current_user) { create(:user) }
|
9
11
|
|
10
|
-
let(:
|
11
|
-
let(:
|
12
|
+
let(:user_token) { current_user.authentication_token if current_user }
|
13
|
+
let(:user_email) { current_user.email if current_user }
|
12
14
|
|
13
15
|
# POST /users
|
14
16
|
post "/users" do
|
15
|
-
parameter :name, "
|
16
|
-
parameter :email, "
|
17
|
-
parameter :password, "
|
18
|
-
parameter :password_confirmation, "
|
19
|
-
parameter :auth_token, "User token", :required => true
|
20
|
-
parameter :auth_email, "User email", :required => true
|
17
|
+
parameter :name, "Nome do usuário", :required => true, :scope => "user"
|
18
|
+
parameter :email, "E-mail do usuário", :required => true, :scope => "user"
|
19
|
+
parameter :password, "Senha do usuário", :required => true, :scope => "user"
|
20
|
+
parameter :password_confirmation, "Confirmação da Senha", :required => true, :scope => "user"
|
21
21
|
|
22
22
|
let(:name) { "User Test" }
|
23
23
|
let(:email) { "usertest@email.com" }
|
@@ -25,61 +25,67 @@ resource "Users" do
|
|
25
25
|
let(:password_confirmation) { "password1234" }
|
26
26
|
|
27
27
|
let(:raw_post) do
|
28
|
-
params.to_json
|
28
|
+
# puts params.to_json
|
29
|
+
params.to_json
|
29
30
|
end
|
30
31
|
|
31
|
-
example_request "
|
32
|
+
example_request "2.1 Criação de um usuário" do
|
33
|
+
# puts response_body
|
32
34
|
expect(status).to eq(201)
|
33
35
|
|
34
36
|
current_user = JSON.parse(response_body)
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
# GET /users/:id
|
39
|
-
get "/users/:id" do
|
40
|
-
parameter :auth_token, "User token", :required => true
|
41
|
-
parameter :auth_email, "User email", :required => true
|
42
|
-
|
43
|
-
let(:id) { current_user.id }
|
44
|
-
|
45
|
-
let(:raw_post) { params.to_json }
|
46
|
-
|
47
|
-
example_request "Getting a specific user" do
|
48
|
-
status.should == 200
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
40
|
# PUT /users/:id
|
53
41
|
put "/users/:id" do
|
54
|
-
parameter :name, "
|
55
|
-
parameter :email, "
|
56
|
-
parameter :password, "
|
57
|
-
parameter :password_confirmation, "
|
58
|
-
parameter :
|
59
|
-
parameter :
|
42
|
+
parameter :name, "Nome do usuário", :required => false, :scope => "user"
|
43
|
+
parameter :email, "E-mail do usuário", :required => false, :scope => "user"
|
44
|
+
parameter :password, "Senha do usuário", :required => false, :scope => "user"
|
45
|
+
parameter :password_confirmation, "Confirmação da Senha", :required => true, :scope => "user"
|
46
|
+
parameter :user_token, "Token de Autenticação", :required => true
|
47
|
+
parameter :user_email, "Email de Autenticação", :required => true
|
60
48
|
|
61
49
|
let(:id) { current_user.id }
|
62
50
|
let(:name) { "Updated Name" }
|
63
51
|
|
64
52
|
let(:raw_post) { params.to_json }
|
65
53
|
|
66
|
-
example_request "
|
54
|
+
example_request "2.2 Alteração do Perfil" do
|
55
|
+
puts response_body
|
67
56
|
expect(status).to eq(204)
|
57
|
+
|
68
58
|
end
|
69
59
|
end
|
70
60
|
|
71
|
-
#
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
parameter :auth_email, "User email", :required => true
|
61
|
+
# # GET /users/:id
|
62
|
+
# get "/users/:id" do
|
63
|
+
# parameter :user_token, "User token", :required => true
|
64
|
+
# parameter :user_email, "User email", :required => true
|
76
65
|
|
77
|
-
|
78
|
-
let(:id) { current_user.id }
|
66
|
+
# let(:id) { current_user.id }
|
79
67
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
68
|
+
# example_request "Getting a specific user" do
|
69
|
+
|
70
|
+
# puts response_body
|
71
|
+
|
72
|
+
# response_body.should == current_user.to_json
|
73
|
+
# status.should == 200
|
74
|
+
# end
|
75
|
+
# end
|
76
|
+
|
77
|
+
# # DELETE /users/:id
|
78
|
+
# delete "/users/:id" do
|
79
|
+
# parameter :id, "Id of user", :required => true, :scope => :user
|
80
|
+
# parameter :user_token, "User token", :required => true
|
81
|
+
# parameter :user_email, "User email", :required => true
|
82
|
+
|
83
|
+
# let(:raw_post) { params.to_json }
|
84
|
+
# let(:id) { user.id }
|
85
|
+
|
86
|
+
# example_request "Deleting an user" do
|
87
|
+
# status.should == 204
|
88
|
+
# end
|
89
|
+
# end
|
84
90
|
|
85
91
|
end
|
data/lib/agilib/version.rb
CHANGED
@@ -42,7 +42,7 @@ Agilib.setup do |config|
|
|
42
42
|
#
|
43
43
|
# Default: {:user_token => :user_token, :user_email => :user_email}
|
44
44
|
#
|
45
|
-
options.auth_params = {:user_token => :
|
45
|
+
options.auth_params = {:user_token => :user_token, :user_email => :user_email}
|
46
46
|
|
47
47
|
# ===============================================================================
|
48
48
|
# Define quais parâmetros serão passados para solicitar o token
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: agilib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Marcos Junior
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: executable-hooks
|
@@ -184,6 +184,20 @@ files:
|
|
184
184
|
- app/views/agilib/devices/show.json.jbuilder
|
185
185
|
- app/views/agilib/welcome/index.html
|
186
186
|
- app/views/agilib/welcome/index.html.erb
|
187
|
+
- app/views/apitome/docs/_all_examples.html.erb
|
188
|
+
- app/views/apitome/docs/_body.html.erb
|
189
|
+
- app/views/apitome/docs/_curl.html.erb
|
190
|
+
- app/views/apitome/docs/_example.html.erb
|
191
|
+
- app/views/apitome/docs/_explanation.html.erb
|
192
|
+
- app/views/apitome/docs/_header.html.erb
|
193
|
+
- app/views/apitome/docs/_headers.html.erb
|
194
|
+
- app/views/apitome/docs/_navigation.html.erb
|
195
|
+
- app/views/apitome/docs/_params.html.erb
|
196
|
+
- app/views/apitome/docs/_query.html.erb
|
197
|
+
- app/views/apitome/docs/_route.html.erb
|
198
|
+
- app/views/apitome/docs/_status.html.erb
|
199
|
+
- app/views/apitome/docs/index.html.erb
|
200
|
+
- app/views/apitome/docs/show.html.erb
|
187
201
|
- bin/agilib
|
188
202
|
- lib/.DS_Store
|
189
203
|
- lib/agilib.rb
|
@@ -192,6 +206,7 @@ files:
|
|
192
206
|
- lib/agilib/composer/composer.rb
|
193
207
|
- lib/agilib/composer/templater.rb
|
194
208
|
- lib/agilib/composer/templates/core_ext.rb
|
209
|
+
- lib/agilib/composer/templates/recipes/apitome.rb
|
195
210
|
- lib/agilib/composer/templates/recipes/better_errors.rb
|
196
211
|
- lib/agilib/composer/templates/recipes/bootstrap.rb
|
197
212
|
- lib/agilib/composer/templates/recipes/cancan.rb
|