agilib 0.1.2.beta1 → 0.1.2.beta2
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/controllers/agilib/devices_controller.rb +5 -1
- data/app/controllers/agilib/tokens_controller.rb +10 -4
- data/app/controllers/agilib/welcome_controller.rb +14 -0
- data/app/views/agilib/devices/_form.html.erb +22 -0
- data/app/views/agilib/devices/edit.html.erb +6 -0
- data/app/views/agilib/devices/index.html.erb +0 -0
- data/app/views/agilib/devices/new.html.erb +5 -0
- data/app/views/agilib/devices/show.html.erb +25 -0
- data/app/views/agilib/welcome/index.html +42 -0
- data/app/views/agilib/welcome/index.html.erb +47 -0
- data/lib/.DS_Store +0 -0
- data/lib/agilib/composer/command.rb +8 -3
- data/lib/agilib/composer/composer.rb +8 -0
- data/lib/agilib/composer/templater.rb +7 -30
- data/lib/agilib/composer/templates/recipes/better_errors.rb +8 -0
- data/lib/agilib/composer/templates/recipes/cancan.rb +6 -0
- data/lib/agilib/composer/templates/recipes/default.rb +6 -0
- data/lib/agilib/composer/templates/recipes/devise.rb +35 -0
- data/lib/agilib/composer/templates/recipes/gems.rb +7 -1
- data/lib/agilib/composer/templates/recipes/push.rb +46 -0
- data/lib/agilib/composer/templates/recipes/responders.rb +6 -0
- data/lib/agilib/composer/templates/recipes/rspec.rb +125 -0
- data/lib/agilib/composer/templates/recipes/simple_form.rb +6 -0
- data/lib/agilib/composer/templates/recipes/token.rb +5 -6
- data/lib/agilib/composer/templates/runner.rb +3 -2
- data/lib/agilib/composer/templates/snippets/rspec/user_model_spec.rb +103 -0
- data/lib/agilib/push_notification/push_notification.rb +0 -1
- data/lib/agilib/routing.rb +39 -0
- data/lib/agilib/token_authenticatable/token_authentication.rb +0 -1
- data/lib/agilib/version.rb +1 -1
- data/lib/agilib.rb +1 -0
- data/lib/generators/agilib/install/install_generator.rb +4 -0
- data/lib/generators/agilib/install/templates/config/initializers/agilib.rb +0 -53
- data/lib/generators/agilib/push/push_generator.rb +3 -1
- data/lib/generators/agilib/token/token_generator.rb +4 -1
- data/spec/agilib-rails_spec.rb +3 -2
- metadata +18 -4
- data/lib/agilib/push_notification/routing.rb +0 -15
- data/lib/agilib/token_authenticatable/routing.rb +0 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 453f80e7bcf6135ec21713190c439c6fbafe010e
|
4
|
+
data.tar.gz: 3d6e0e5c0cdc63fe3b4078733f202e7bc23d9e58
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d38ac3f38cbdaf2bfc6b0fc3142bb7d9c64356b6aa256aa55a91d5c180a46b4e51297f5dfb4c9521b0431935d80b3ae19c73f891b398c7e35bc26b1df28a64a9
|
7
|
+
data.tar.gz: 2addc32eb908cd682a0233faa2e24c928d48b30fdb59eca060de6f7cb5549c5fcf13da9d6fc0fef49826b56cd7d0f07a01c6448307614b8ebd7e7f36e9ee55a2
|
data/.DS_Store
CHANGED
Binary file
|
data/app/.DS_Store
CHANGED
Binary file
|
@@ -1,6 +1,11 @@
|
|
1
1
|
module Agilib
|
2
2
|
class TokensController < Devise::SessionsController
|
3
|
-
|
3
|
+
if Agilib.rails4?
|
4
|
+
skip_before_action :verify_authenticity_token
|
5
|
+
else
|
6
|
+
skip_before_filter :verify_authenticity_token
|
7
|
+
end
|
8
|
+
|
4
9
|
respond_to :json
|
5
10
|
|
6
11
|
def create
|
@@ -40,11 +45,12 @@ module Agilib
|
|
40
45
|
end
|
41
46
|
|
42
47
|
def destroy
|
48
|
+
token = params[Agilib::TokenAuthenticatable.auth_params[:user_token]]
|
43
49
|
|
44
50
|
if User.respond_to? "find_by"
|
45
|
-
@user = User.find_by(authentication_token:
|
51
|
+
@user = User.find_by(authentication_token: token)
|
46
52
|
elsif User.respond_to? "find_by_authentication_token"
|
47
|
-
@user = User.find_by_authentication_token(
|
53
|
+
@user = User.find_by_authentication_token(token)
|
48
54
|
end
|
49
55
|
|
50
56
|
if @user.nil?
|
@@ -55,7 +61,7 @@ module Agilib
|
|
55
61
|
|
56
62
|
sign_out @user
|
57
63
|
|
58
|
-
render :status => 200, :json=>{:user=> @user, :token=>params[:
|
64
|
+
render :status => 200, :json=>{:user=> @user, :token=>params[:token]}
|
59
65
|
|
60
66
|
end
|
61
67
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<ul class="nav nav-tabs clear-nav-tab steps">
|
2
|
+
<li class="active"><a href="#coreData"><aside>Dados Principais</aside></a></li>
|
3
|
+
</ul>
|
4
|
+
|
5
|
+
<%= simple_form_for @device, :remote => true, :validate => false, :html => { :id => 'form_devices', :class => 'form-horizontal', 'data-type'=>'json' } do |f| %>
|
6
|
+
<div id="tab-content-device" class="tab-content">
|
7
|
+
|
8
|
+
<!-- TAB DADOS PRINCIPAIS -->
|
9
|
+
<div class="tab-pane active" id="coreData">
|
10
|
+
<%= f.association :user %>
|
11
|
+
<%= f.input :platform %>
|
12
|
+
<%= f.input :register %>
|
13
|
+
<%= f.input :deleted_at %>
|
14
|
+
</div>
|
15
|
+
|
16
|
+
</div>
|
17
|
+
|
18
|
+
</div>
|
19
|
+
<div class="modal-footer">
|
20
|
+
<%= f.button :submit, :class => 'btn btn-primary' %>
|
21
|
+
</div>
|
22
|
+
<% end %>
|
File without changes
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<p id="notice"><%= notice %></p>
|
2
|
+
|
3
|
+
<p>
|
4
|
+
<b>User:</b>
|
5
|
+
<%= @device.user %>
|
6
|
+
</p>
|
7
|
+
|
8
|
+
<p>
|
9
|
+
<b>Platform:</b>
|
10
|
+
<%= @device.platform %>
|
11
|
+
</p>
|
12
|
+
|
13
|
+
<p>
|
14
|
+
<b>Register:</b>
|
15
|
+
<%= @device.register %>
|
16
|
+
</p>
|
17
|
+
|
18
|
+
<p>
|
19
|
+
<b>Deleted at:</b>
|
20
|
+
<%= @device.deleted_at %>
|
21
|
+
</p>
|
22
|
+
|
23
|
+
|
24
|
+
<%= link_to 'Edit', edit_device_path(@device) %> |
|
25
|
+
<%= link_to 'Back', devices_path %>
|
@@ -0,0 +1,42 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<title>Agilib</title>
|
7
|
+
|
8
|
+
<style>
|
9
|
+
body {
|
10
|
+
background-color: #ffffff
|
11
|
+
}
|
12
|
+
|
13
|
+
#logo {
|
14
|
+
position: absolute;
|
15
|
+
width: 161px;
|
16
|
+
height: 64px;
|
17
|
+
left: 50%;
|
18
|
+
top: 30%;
|
19
|
+
margin-left: -80.5px;
|
20
|
+
margin-top: 32px;
|
21
|
+
}
|
22
|
+
|
23
|
+
.content {
|
24
|
+
font-family: helvetica;
|
25
|
+
position: absolute;
|
26
|
+
width: 161px;
|
27
|
+
height: 64px;
|
28
|
+
left: 50%;
|
29
|
+
top: 39%;
|
30
|
+
margin-left: -80.5px;
|
31
|
+
margin-top: 32px;
|
32
|
+
text-align: center;
|
33
|
+
color: #0085a6;
|
34
|
+
font-size: 10px;
|
35
|
+
}
|
36
|
+
</style>
|
37
|
+
</head>
|
38
|
+
<body>
|
39
|
+
<img id="logo" src="http://agivis.com.br/assets/logo_agivis-af5e30b64fe8cc778c0b0010b613e88c.jpg" alt="Agivis">
|
40
|
+
<div class="content"><span><strong>agilib-rails v1.1.1</strong></span></div>
|
41
|
+
</body>
|
42
|
+
</html>
|
@@ -0,0 +1,47 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
6
|
+
<title>Agilib</title>
|
7
|
+
|
8
|
+
<style>
|
9
|
+
body {
|
10
|
+
background-color: #ffffff
|
11
|
+
}
|
12
|
+
|
13
|
+
#logo {
|
14
|
+
position: absolute;
|
15
|
+
width: 161px;
|
16
|
+
height: 64px;
|
17
|
+
left: 50%;
|
18
|
+
top: 30%;
|
19
|
+
margin-left: -80.5px;
|
20
|
+
margin-top: 32px;
|
21
|
+
}
|
22
|
+
|
23
|
+
.content {
|
24
|
+
font-family: helvetica;
|
25
|
+
position: absolute;
|
26
|
+
width: 161px;
|
27
|
+
height: 64px;
|
28
|
+
left: 50%;
|
29
|
+
top: 39%;
|
30
|
+
margin-left: -80.5px;
|
31
|
+
margin-top: 32px;
|
32
|
+
text-align: center;
|
33
|
+
color: #0085a6;
|
34
|
+
font-size: 10px;
|
35
|
+
}
|
36
|
+
|
37
|
+
.logout{
|
38
|
+
color: red;
|
39
|
+
}
|
40
|
+
</style>
|
41
|
+
</head>
|
42
|
+
<body>
|
43
|
+
<img id="logo" src="http://agivis.com.br/assets/logo_agivis-af5e30b64fe8cc778c0b0010b613e88c.jpg" alt="Agivis">
|
44
|
+
<div class="content"><span><strong>agilib-rails v<%= Agilib::Version::STRING %></strong></span><% if current_user %>
|
45
|
+
<br/>Logado como: <%= current_user.name %> (<%= link_to "sair", destroy_user_session_path, :method => :delete, :class => "logout" %>)<% end %></div>
|
46
|
+
</body>
|
47
|
+
</html>
|
data/lib/.DS_Store
CHANGED
Binary file
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
1
3
|
require 'agilib'
|
2
4
|
require 'thor'
|
3
5
|
|
@@ -6,11 +8,14 @@ module Agilib
|
|
6
8
|
class Command < Thor
|
7
9
|
include Thor::Actions
|
8
10
|
|
9
|
-
desc "
|
11
|
+
desc "composer APP_NAME", "Cria uma nova aplicação Rails nos padrões da Agivis"
|
12
|
+
|
13
|
+
method_option :all, :type => :boolean, :aliases => "-a", :default => false
|
14
|
+
def composer(name)
|
15
|
+
Agilib::Composer.options = options
|
10
16
|
|
11
|
-
def new(name)
|
12
17
|
# Instala uma aplicação Rails
|
13
|
-
system("rails new #{name} --skip-bundle -d mysql -m #{Agilib::Composer.template_runner}")
|
18
|
+
system("rails new #{name} --skip-bundle --skip-test-unit -d mysql -m #{Agilib::Composer.template_runner}")
|
14
19
|
end
|
15
20
|
end
|
16
21
|
end
|
@@ -9,22 +9,6 @@ module Agilib
|
|
9
9
|
@template_framework_path = File.join(File.dirname(__FILE__), 'templates')
|
10
10
|
end
|
11
11
|
|
12
|
-
# def fixture_replacement
|
13
|
-
# @fixture_replacement ||= FixtureReplacement.new
|
14
|
-
# end
|
15
|
-
|
16
|
-
# def orm
|
17
|
-
# @orm ||= Orm.new
|
18
|
-
# end
|
19
|
-
|
20
|
-
# def javascript_framework
|
21
|
-
# @javascript_framework ||= JavaScriptFramework.new
|
22
|
-
# end
|
23
|
-
|
24
|
-
# def template_engine
|
25
|
-
# @template_engine ||= TemplateEngine.new
|
26
|
-
# end
|
27
|
-
|
28
12
|
def post_bundler(&block)
|
29
13
|
@post_bundler_strategies << block
|
30
14
|
end
|
@@ -33,22 +17,15 @@ module Agilib
|
|
33
17
|
File.expand_path("recipes/#{name}.rb", @template_framework_path)
|
34
18
|
end
|
35
19
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
# File.expand_path("#{type}s/#{group}", @template_framework_path)
|
40
|
-
# end
|
41
|
-
|
42
|
-
# define_method "load_#{type}" do |name, group|
|
43
|
-
# group_path = send("#{type}_path".to_sym, group)
|
44
|
-
# File.read File.expand_path(name, group_path)
|
45
|
-
# end
|
20
|
+
def snippet_path(group)
|
21
|
+
File.expand_path("snippets/#{group}", @template_framework_path)
|
22
|
+
end
|
46
23
|
|
47
|
-
|
24
|
+
def load_snippet(name, group)
|
25
|
+
group_path = snippet_path(group)
|
26
|
+
File.read File.expand_path("#{name}.rb", group_path)
|
27
|
+
end
|
48
28
|
|
49
|
-
# def testing_framework
|
50
|
-
# @testing_framework ||= TestingFramework.new
|
51
|
-
# end
|
52
29
|
end
|
53
30
|
|
54
31
|
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
gem 'meta_request', :group => [:development]
|
2
|
+
gem 'better_errors', :group => [:development]
|
3
|
+
gem 'binding_of_caller', :group => [:development]
|
4
|
+
gem 'sprockets_better_errors', :group => [:development]
|
5
|
+
|
6
|
+
templater.post_bundler do
|
7
|
+
inject_into_file "config/environments/development.rb", "\n\nconfig.assets.raise_production_errors = true", :after => "Dna::Application.configure do"
|
8
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
gem 'devise'
|
3
|
+
|
4
|
+
templater.post_bundler do
|
5
|
+
generate 'devise:install'
|
6
|
+
generate 'devise', "user name"
|
7
|
+
rake 'db:migrate'
|
8
|
+
generate 'devise:views'
|
9
|
+
|
10
|
+
|
11
|
+
devise_form_config = <<-TEXT
|
12
|
+
<%= f.input :name, :required => true, :autofocus => true %>
|
13
|
+
TEXT
|
14
|
+
|
15
|
+
inject_into_file "app/views/devise/registrations/new.html.erb", devise_form_config, :before => "<%= f.input :email, :required => true, :autofocus => true %>"
|
16
|
+
gsub_file "app/views/devise/registrations/new.html.erb", '<%= f.input :email, :required => true, :autofocus => true %>', '<%= f.input :email, :required => true %>'
|
17
|
+
|
18
|
+
inject_into_file "app/views/devise/registrations/edit.html.erb", devise_form_config, :before => "<%= f.input :email, :required => true, :autofocus => true %>"
|
19
|
+
gsub_file "app/views/devise/registrations/edit.html.erb", '<%= f.input :email, :required => true, :autofocus => true %>', '<%= f.input :email, :required => true %>'
|
20
|
+
|
21
|
+
|
22
|
+
devise_filter_config = <<-TEXT
|
23
|
+
|
24
|
+
|
25
|
+
protected
|
26
|
+
def configure_permitted_parameters
|
27
|
+
devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:name, :email, :password, :password_confirmation, :full_name, :phone) }
|
28
|
+
end
|
29
|
+
|
30
|
+
TEXT
|
31
|
+
|
32
|
+
inject_into_file "app/controllers/application_controller.rb", devise_filter_config, :after => "protect_from_forgery with: :exception"
|
33
|
+
inject_into_file "app/controllers/application_controller.rb", "\n\nbefore_filter :configure_permitted_parameters, if: :devise_controller?", :after => "class ApplicationController < ActionController::Base"
|
34
|
+
|
35
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
templater.post_bundler do
|
3
|
+
|
4
|
+
if Agilib::Composer.options[:all] || yes?("\nO projeto deverá ter Notificação por Push? [yes,no]", :green)
|
5
|
+
|
6
|
+
do_configure = yes?("\nDeseja configurar agora? [yes,no]", :green)
|
7
|
+
|
8
|
+
generate 'agilib:push'
|
9
|
+
rake 'db:migrate'
|
10
|
+
|
11
|
+
if do_configure
|
12
|
+
say("\nIniciando configuração do módulo Push Notification... ", :yellow)
|
13
|
+
|
14
|
+
google_api = ask("\nInforme o Google API_KEY:") || ""
|
15
|
+
apple_pem = ask("\nInforme o caminho do Apple Certificate ( .pem )") || ""
|
16
|
+
|
17
|
+
agilib_config_path = 'config/initializers/agilib.rb'
|
18
|
+
|
19
|
+
|
20
|
+
agilib_push_config_text = <<-RUBY
|
21
|
+
|
22
|
+
|
23
|
+
config.use :push_notification do |options|
|
24
|
+
|
25
|
+
options.device_route = "/devices"
|
26
|
+
|
27
|
+
options.platform :ios do |ios|
|
28
|
+
ios.pem = "#{google_api}"
|
29
|
+
end
|
30
|
+
|
31
|
+
options.platform :android do |android|
|
32
|
+
android.api_key = "#{apple_pem}"
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
RUBY
|
38
|
+
|
39
|
+
inject_into_file agilib_config_path, agilib_push_config_text, :after => "Agilib.setup do |config|"
|
40
|
+
|
41
|
+
say("\nConfiguração finalizada... ", :green)
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
gem 'rspec-rails', :group => [:development, :test]
|
2
|
+
gem 'factory_girl_rails', :group => [:development, :test]
|
3
|
+
gem "database_cleaner", :group => :test
|
4
|
+
gem "email_spec", :group => :test
|
5
|
+
gem 'simplecov', :require => false, :group => :test
|
6
|
+
|
7
|
+
templater.post_bundler do
|
8
|
+
|
9
|
+
spec_helper_path = 'spec/spec_helper.rb'
|
10
|
+
|
11
|
+
## ===============================================================
|
12
|
+
## RSPEC
|
13
|
+
## ===============================================================
|
14
|
+
|
15
|
+
say("\nIniciando configuração da Suíte de Testes... \n", :yellow)
|
16
|
+
|
17
|
+
say("\nConfigurando RSpec...\n", :green)
|
18
|
+
|
19
|
+
generate 'rspec:install'
|
20
|
+
|
21
|
+
generators_config = <<-RUBY
|
22
|
+
|
23
|
+
|
24
|
+
config.generators do |g|
|
25
|
+
g.test_framework :rspec, fixture: true
|
26
|
+
g.fixture_replacement :factory_girl, dir: 'spec/factories'
|
27
|
+
g.view_specs false
|
28
|
+
g.helper_specs false
|
29
|
+
g.controller_specs false
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
RUBY
|
34
|
+
|
35
|
+
|
36
|
+
gsub_file spec_helper_path, 'config.fixture_path = "#{::Rails.root}/spec/fixtures"', ''
|
37
|
+
|
38
|
+
inject_into_file "config/application.rb", generators_config, :after => "class Application < Rails::Application"
|
39
|
+
|
40
|
+
## ===============================================================
|
41
|
+
## DATABASE CLEANER
|
42
|
+
## ===============================================================
|
43
|
+
|
44
|
+
say("\nConfigurando Database Cleaner...\n", :green)
|
45
|
+
|
46
|
+
database_cleaner_config = <<-RUBY
|
47
|
+
|
48
|
+
config.before(:suite) do
|
49
|
+
DatabaseCleaner.strategy = :truncation
|
50
|
+
end
|
51
|
+
|
52
|
+
config.before(:each) do
|
53
|
+
DatabaseCleaner.start
|
54
|
+
end
|
55
|
+
|
56
|
+
config.after(:each) do
|
57
|
+
DatabaseCleaner.clean
|
58
|
+
end
|
59
|
+
|
60
|
+
RUBY
|
61
|
+
|
62
|
+
|
63
|
+
inject_into_file spec_helper_path, database_cleaner_config, :after => 'config.order = "random"'
|
64
|
+
|
65
|
+
|
66
|
+
## ===============================================================
|
67
|
+
## FACTORY GIRLS
|
68
|
+
## ===============================================================
|
69
|
+
|
70
|
+
say("\nConfigurando FactoryGirl...\n", :green)
|
71
|
+
|
72
|
+
inject_into_file spec_helper_path, "\n\n config.include FactoryGirl::Syntax::Methods", :after => 'RSpec.configure do |config|'
|
73
|
+
|
74
|
+
|
75
|
+
## ===============================================================
|
76
|
+
## Email Spec
|
77
|
+
## ===============================================================
|
78
|
+
|
79
|
+
say("\nConfigurando EmailSpec...\n", :green)
|
80
|
+
|
81
|
+
inject_into_file spec_helper_path, "\nrequire 'email_spec'", :after => "require 'rspec/rails'"
|
82
|
+
|
83
|
+
## ===============================================================
|
84
|
+
## SimpleCov
|
85
|
+
## ===============================================================
|
86
|
+
|
87
|
+
say("\nConfigurando SimpleCov...\n", :green)
|
88
|
+
|
89
|
+
simple_cov_config = <<-TEXT
|
90
|
+
require 'simplecov'
|
91
|
+
SimpleCov.start
|
92
|
+
TEXT
|
93
|
+
|
94
|
+
inject_into_file spec_helper_path, simple_cov_config, :before => "ENV[\"RAILS_ENV\"] ||= 'test'"
|
95
|
+
|
96
|
+
## ===============================================================
|
97
|
+
## Paperclip
|
98
|
+
## ===============================================================
|
99
|
+
|
100
|
+
say("\nConfigurando Paperclip...\n", :green)
|
101
|
+
|
102
|
+
inject_into_file spec_helper_path, "\nrequire 'paperclip/matchers'", :after => "require 'rspec/autorun'"
|
103
|
+
|
104
|
+
|
105
|
+
## ===============================================================
|
106
|
+
## Cancan
|
107
|
+
## ===============================================================
|
108
|
+
|
109
|
+
say("\nConfigurando Cancan...\n", :green)
|
110
|
+
|
111
|
+
inject_into_file spec_helper_path, "\nrequire 'cancan/matchers'", :after => "require 'rspec/autorun'"
|
112
|
+
|
113
|
+
|
114
|
+
|
115
|
+
## ===============================================================
|
116
|
+
## USER SPECS
|
117
|
+
## ===============================================================
|
118
|
+
|
119
|
+
say("\nConfigurando Testes para User...\n", :green)
|
120
|
+
|
121
|
+
remove_file "spec/models/user_spec.rb"
|
122
|
+
create_file "spec/models/user_spec.rb", templater.load_snippet('user_model_spec','rspec')
|
123
|
+
|
124
|
+
|
125
|
+
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
templater.post_bundler do
|
2
|
+
templater.post_bundler do
|
3
|
+
|
4
|
+
if Agilib::Composer.options[:all] || yes?("\nO projeto deverá ter Autenticação por Token? [yes,no]\n", :green)
|
5
|
+
say("\nConfigurando o módulo Token Authenticatable... \n\n", :green)
|
8
6
|
generate 'agilib:token'
|
7
|
+
rake 'db:migrate'
|
9
8
|
end
|
10
9
|
|
11
10
|
end
|
@@ -1,9 +1,10 @@
|
|
1
1
|
$LOAD_PATH.unshift(File.expand_path('./../../', __FILE__))
|
2
|
-
|
2
|
+
|
3
|
+
require File.join(File.expand_path('./../../../../', __FILE__), 'agilib.rb')
|
3
4
|
require 'composer'
|
4
5
|
require File.join(File.dirname(__FILE__), 'core_ext.rb')
|
5
6
|
|
6
|
-
%w(default gems token).each do |recipe|
|
7
|
+
%w(default gems responders simple_form devise token push rspec cancan better_errors).each do |recipe|
|
7
8
|
apply templater.recipe(recipe)
|
8
9
|
end
|
9
10
|
|
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe User do
|
4
|
+
|
5
|
+
before(:each) do
|
6
|
+
@attr = {
|
7
|
+
:name => "Example User",
|
8
|
+
:email => "user@example.com",
|
9
|
+
:password => "changeme",
|
10
|
+
:password_confirmation => "changeme"
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should create a new instance given a valid attribute" do
|
15
|
+
User.create!(@attr)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should require an email address" do
|
19
|
+
no_email_user = User.new(@attr.merge(:email => ""))
|
20
|
+
no_email_user.should_not be_valid
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should accept valid email addresses" do
|
24
|
+
addresses = %w[user@foo.com THE_USER@foo.bar.org first.last@foo.jp]
|
25
|
+
addresses.each do |address|
|
26
|
+
valid_email_user = User.new(@attr.merge(:email => address))
|
27
|
+
valid_email_user.should be_valid
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should reject invalid email addresses" do
|
32
|
+
addresses = %w[user@foo,com user_at_foo.org example.user@foo.]
|
33
|
+
addresses.each do |address|
|
34
|
+
invalid_email_user = User.new(@attr.merge(:email => address))
|
35
|
+
invalid_email_user.should_not be_valid
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
it "should reject duplicate email addresses" do
|
40
|
+
User.create!(@attr)
|
41
|
+
user_with_duplicate_email = User.new(@attr)
|
42
|
+
user_with_duplicate_email.should_not be_valid
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should reject email addresses identical up to case" do
|
46
|
+
upcased_email = @attr[:email].upcase
|
47
|
+
User.create!(@attr.merge(:email => upcased_email))
|
48
|
+
user_with_duplicate_email = User.new(@attr)
|
49
|
+
user_with_duplicate_email.should_not be_valid
|
50
|
+
end
|
51
|
+
|
52
|
+
describe "passwords" do
|
53
|
+
|
54
|
+
before(:each) do
|
55
|
+
@user = User.new(@attr)
|
56
|
+
end
|
57
|
+
|
58
|
+
it "should have a password attribute" do
|
59
|
+
@user.should respond_to(:password)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "should have a password confirmation attribute" do
|
63
|
+
@user.should respond_to(:password_confirmation)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe "password validations" do
|
68
|
+
|
69
|
+
it "should require a password" do
|
70
|
+
User.new(@attr.merge(:password => "", :password_confirmation => "")).
|
71
|
+
should_not be_valid
|
72
|
+
end
|
73
|
+
|
74
|
+
it "should require a matching password confirmation" do
|
75
|
+
User.new(@attr.merge(:password_confirmation => "invalid")).
|
76
|
+
should_not be_valid
|
77
|
+
end
|
78
|
+
|
79
|
+
it "should reject short passwords" do
|
80
|
+
short = "a" * 5
|
81
|
+
hash = @attr.merge(:password => short, :password_confirmation => short)
|
82
|
+
User.new(hash).should_not be_valid
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
describe "password encryption" do
|
88
|
+
|
89
|
+
before(:each) do
|
90
|
+
@user = User.create!(@attr)
|
91
|
+
end
|
92
|
+
|
93
|
+
it "should have an encrypted password attribute" do
|
94
|
+
@user.should respond_to(:encrypted_password)
|
95
|
+
end
|
96
|
+
|
97
|
+
it "should set the encrypted password attribute" do
|
98
|
+
@user.encrypted_password.should_not be_blank
|
99
|
+
end
|
100
|
+
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
@@ -2,7 +2,6 @@ require 'active_support/dependencies'
|
|
2
2
|
require 'agilib/push_notification/platforms/ios'
|
3
3
|
require 'agilib/push_notification/platforms/android'
|
4
4
|
require 'agilib/push_notification/model'
|
5
|
-
require 'agilib/push_notification/routing'
|
6
5
|
|
7
6
|
module Agilib
|
8
7
|
module PushNotification
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module Agilib
|
2
|
+
module Routing
|
3
|
+
module MapperExtensions
|
4
|
+
|
5
|
+
def agilib
|
6
|
+
|
7
|
+
if Agilib.rails4? && Rails.env.development?
|
8
|
+
get "/" => "agilib/welcome#index"
|
9
|
+
end
|
10
|
+
|
11
|
+
if Agilib.use_modules[:token_authenticatable].present?
|
12
|
+
agilib_token_authenticatable
|
13
|
+
end
|
14
|
+
|
15
|
+
if Agilib.use_modules[:push_notification].present?
|
16
|
+
agilib_push_notification
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def agilib_token_authenticatable
|
22
|
+
route = Agilib::TokenAuthenticatable.route
|
23
|
+
devise_scope :user do
|
24
|
+
post "#{route}" => "agilib/tokens#create"
|
25
|
+
delete "#{route}" => "agilib/tokens#destroy"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def agilib_push_notification
|
30
|
+
path = Agilib::PushNotification.device_route
|
31
|
+
resources :devices, :path => path, :controller => "agilib/devices"
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
if defined? ActionDispatch
|
38
|
+
ActionDispatch::Routing::Mapper.send :include, Agilib::Routing::MapperExtensions
|
39
|
+
end
|
data/lib/agilib/version.rb
CHANGED
data/lib/agilib.rb
CHANGED
@@ -57,59 +57,6 @@ Agilib.setup do |config|
|
|
57
57
|
|
58
58
|
end
|
59
59
|
|
60
|
-
# Define se a aplicação vai usar notificação por push
|
61
|
-
# Caso esteja habilitado, será preciso adicionar o helper da agilib para que sejam criadas
|
62
|
-
# as rotas para o Agilib::DevicesController
|
63
|
-
#
|
64
|
-
# Exemplo:
|
65
|
-
#
|
66
|
-
# config/routes.rb
|
67
|
-
#
|
68
|
-
# agilib_push_notification
|
69
|
-
#
|
70
|
-
# Este procedimento é necessário para que a rota /devices.json esteja disponível
|
71
|
-
config.use :push_notification do |options|
|
72
60
|
|
73
|
-
# ===============================================================================
|
74
|
-
# Define qual será a rota para cadastrar/alterar/apagar os Devices
|
75
|
-
#
|
76
|
-
# Exemplo: /devices.json
|
77
|
-
# Se alterar para: options.device_route = "/celulares"
|
78
|
-
# A rota será: /celulares.json
|
79
|
-
#
|
80
|
-
#
|
81
|
-
# Default: "/devices"
|
82
|
-
options.device_route = "/devices"
|
83
|
-
|
84
|
-
# ===============================================================================
|
85
|
-
# Habilita o envio de notificação por push para dispositivos IOS
|
86
|
-
#
|
87
|
-
options.platform :ios do |ios|
|
88
|
-
|
89
|
-
# =========================================
|
90
|
-
# Caminho do arquivo de certificado .pem
|
91
|
-
#
|
92
|
-
ios.pem = ""
|
93
|
-
|
94
|
-
# =========================================
|
95
|
-
# Porta de conexão com o servidor da Apple
|
96
|
-
#
|
97
|
-
ios.port = 2195
|
98
|
-
|
99
|
-
end
|
100
|
-
|
101
|
-
# ===============================================================================
|
102
|
-
# Habilita o envio de notificação por push para dispositivos ANDROID
|
103
|
-
#
|
104
|
-
options.platform :android do |android|
|
105
|
-
|
106
|
-
# =========================================
|
107
|
-
# Chave API do Google
|
108
|
-
#
|
109
|
-
android.api_key = "Insert here you api key"
|
110
|
-
|
111
|
-
end
|
112
|
-
|
113
|
-
end
|
114
61
|
|
115
62
|
end
|
@@ -2,6 +2,7 @@
|
|
2
2
|
module Agilib
|
3
3
|
module Generators
|
4
4
|
class TokenGenerator < ::Rails::Generators::Base
|
5
|
+
|
5
6
|
desc "Instalação do módulo Token Authenticatable da Agilib"
|
6
7
|
class_option :"skip-migration", type: :boolean, desc: 'Caso não queira que seja criado o arquivo de migração'
|
7
8
|
|
@@ -16,7 +17,9 @@ module Agilib
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def add_route
|
19
|
-
|
20
|
+
unless File.exists?(File.join("config/initializers/agilib.rb"))
|
21
|
+
route("agilib_token_authenticatable")
|
22
|
+
end
|
20
23
|
end
|
21
24
|
|
22
25
|
def update_application_controller_and_model
|
data/spec/agilib-rails_spec.rb
CHANGED
@@ -3,8 +3,9 @@ require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
|
3
3
|
describe "AgilibRails" do
|
4
4
|
it "test agilib" do
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
templater = Agilib::Composer::Templater.new
|
7
|
+
puts templater.snippet_path('rspec')
|
8
|
+
puts templater.load_snippet('user_model_spec','rspec')
|
8
9
|
end
|
9
10
|
|
10
11
|
it "is rails 4" do
|
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.2.
|
4
|
+
version: 0.1.2.beta2
|
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-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: executable-hooks
|
@@ -173,7 +173,15 @@ files:
|
|
173
173
|
- app/controllers/.DS_Store
|
174
174
|
- app/controllers/agilib/devices_controller.rb
|
175
175
|
- app/controllers/agilib/tokens_controller.rb
|
176
|
+
- app/controllers/agilib/welcome_controller.rb
|
176
177
|
- app/models/agilib/device.rb
|
178
|
+
- app/views/agilib/devices/_form.html.erb
|
179
|
+
- app/views/agilib/devices/edit.html.erb
|
180
|
+
- app/views/agilib/devices/index.html.erb
|
181
|
+
- app/views/agilib/devices/new.html.erb
|
182
|
+
- app/views/agilib/devices/show.html.erb
|
183
|
+
- app/views/agilib/welcome/index.html
|
184
|
+
- app/views/agilib/welcome/index.html.erb
|
177
185
|
- bin/agilib
|
178
186
|
- lib/.DS_Store
|
179
187
|
- lib/agilib.rb
|
@@ -182,18 +190,24 @@ files:
|
|
182
190
|
- lib/agilib/composer/composer.rb
|
183
191
|
- lib/agilib/composer/templater.rb
|
184
192
|
- lib/agilib/composer/templates/core_ext.rb
|
193
|
+
- lib/agilib/composer/templates/recipes/better_errors.rb
|
194
|
+
- lib/agilib/composer/templates/recipes/cancan.rb
|
185
195
|
- lib/agilib/composer/templates/recipes/default.rb
|
186
196
|
- lib/agilib/composer/templates/recipes/devise.rb
|
187
197
|
- lib/agilib/composer/templates/recipes/gems.rb
|
198
|
+
- lib/agilib/composer/templates/recipes/push.rb
|
199
|
+
- lib/agilib/composer/templates/recipes/responders.rb
|
200
|
+
- lib/agilib/composer/templates/recipes/rspec.rb
|
201
|
+
- lib/agilib/composer/templates/recipes/simple_form.rb
|
188
202
|
- lib/agilib/composer/templates/recipes/token.rb
|
189
203
|
- lib/agilib/composer/templates/runner.rb
|
204
|
+
- lib/agilib/composer/templates/snippets/rspec/user_model_spec.rb
|
190
205
|
- lib/agilib/engine.rb
|
191
206
|
- lib/agilib/push_notification/model.rb
|
192
207
|
- lib/agilib/push_notification/platforms/android.rb
|
193
208
|
- lib/agilib/push_notification/platforms/ios.rb
|
194
209
|
- lib/agilib/push_notification/push_notification.rb
|
195
|
-
- lib/agilib/
|
196
|
-
- lib/agilib/token_authenticatable/routing.rb
|
210
|
+
- lib/agilib/routing.rb
|
197
211
|
- lib/agilib/token_authenticatable/token_authentication.rb
|
198
212
|
- lib/agilib/token_authenticatable/token_authentication_handler.rb
|
199
213
|
- lib/agilib/version.rb
|
@@ -1,15 +0,0 @@
|
|
1
|
-
module Agilib
|
2
|
-
module Routing
|
3
|
-
module MapperExtensions
|
4
|
-
def agilib_push_notification
|
5
|
-
if Agilib.use_modules[:push_notification].present?
|
6
|
-
path = Agilib::PushNotification.device_route
|
7
|
-
resources :devices, :path => path, :controller => "agilib/devices"
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
if defined? ActionDispatch
|
14
|
-
ActionDispatch::Routing::Mapper.send :include, Agilib::Routing::MapperExtensions
|
15
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Agilib
|
2
|
-
module Routing
|
3
|
-
module MapperExtensions
|
4
|
-
def agilib_token_authenticatable
|
5
|
-
if Agilib.use_modules[:token_authenticatable].present?
|
6
|
-
route = Agilib::TokenAuthenticatable.route
|
7
|
-
devise_scope :user do
|
8
|
-
post "#{route}" => "agilib/tokens#create"
|
9
|
-
delete "#{route}/:token" => "agilib/tokens#destroy"
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
if defined? ActionDispatch
|
17
|
-
ActionDispatch::Routing::Mapper.send :include, Agilib::Routing::MapperExtensions
|
18
|
-
end
|