pah 0.0.12 → 0.0.13
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/.ruby-version +1 -1
- data/CHANGELOG.md +47 -0
- data/CONTRIBUTING.md +6 -31
- data/README.md +17 -2
- data/bin/pah +2 -1
- data/lib/pah/files/.env +1 -0
- data/lib/pah/files/Gemfile +35 -28
- data/lib/pah/files/Procfile +1 -1
- data/lib/pah/files/README.md +15 -9
- data/lib/pah/files/app/assets/javascripts/application.js +6 -6
- data/lib/pah/files/app/assets/stylesheets/application.scss +4 -6
- data/lib/pah/files/app/assets/stylesheets/general.scss +38 -5
- data/lib/pah/files/app/views/layouts/application.html.haml +16 -14
- data/lib/pah/files/config/initializers/bullet.rb +14 -0
- data/lib/pah/files/config/initializers/database_connection.rb +12 -0
- data/lib/pah/files/config/initializers/rack_timeout.rb +1 -0
- data/lib/pah/files/config/locales/app.pt-BR.yml +13 -0
- data/lib/pah/files/config/locales/pt-BR.yml +21 -6
- data/lib/pah/files/config/locales/simple_form.pt-BR.yml +25 -0
- data/lib/pah/files/lib/tasks/jumpup.rake +3 -6
- data/lib/pah/files/public/404.html +69 -0
- data/lib/pah/files/public/500.html +59 -0
- data/lib/pah/files/spec/acceptance/dummy_spec.rb +1 -1
- data/lib/pah/files/spec/support/acceptance_helpers.rb +2 -2
- data/lib/pah/files/spec/support/acceptance_macros.rb +4 -4
- data/lib/pah/files/spec/support/capybara.rb +1 -1
- data/lib/pah/files/spec/support/database_cleaner.rb +18 -0
- data/lib/pah/files/spec/support/factory_girl.rb +10 -0
- data/lib/pah/files/spec/support/vcr.rb +6 -7
- data/lib/pah/partials/_assets.rb +4 -5
- data/lib/pah/partials/_bullet.rb +6 -0
- data/lib/pah/partials/_canonical_host.rb +2 -5
- data/lib/pah/partials/_capybara.rb +2 -5
- data/lib/pah/partials/_cleanup.rb +3 -11
- data/lib/pah/partials/_database.rb +5 -7
- data/lib/pah/partials/_gems.rb +4 -6
- data/lib/pah/partials/_generators.rb +2 -5
- data/lib/pah/partials/_git.rb +2 -6
- data/lib/pah/partials/_heroku.rb +11 -8
- data/lib/pah/partials/_jumpup.rb +3 -7
- data/lib/pah/partials/_layout.rb +4 -5
- data/lib/pah/partials/_letter_opener.rb +2 -5
- data/lib/pah/partials/_locale.rb +6 -7
- data/lib/pah/partials/_public.rb +9 -4
- data/lib/pah/partials/_puma.rb +4 -0
- data/lib/pah/partials/_rack_timeout.rb +4 -0
- data/lib/pah/partials/_readme.rb +2 -6
- data/lib/pah/partials/_rollbar.rb +5 -0
- data/lib/pah/partials/_rspec.rb +12 -8
- data/lib/pah/partials/_ruby_env.rb +6 -10
- data/lib/pah/partials/_secret_token.rb +3 -7
- data/lib/pah/partials/_secure_headers.rb +3 -5
- data/lib/pah/partials/_simple_form.rb +11 -0
- data/lib/pah/template.rb +35 -26
- data/lib/pah/version.rb +2 -1
- data/pah.gemspec +2 -2
- metadata +20 -10
- data/lib/pah/files/config/unicorn.rb +0 -43
- data/lib/pah/files/spec/support/omniauth.rb +0 -27
- data/lib/pah/files/spec/support/paperclip.rb +0 -4
- data/lib/pah/partials/_unicorn.rb +0 -33
@@ -0,0 +1,14 @@
|
|
1
|
+
if defined? Bullet
|
2
|
+
Bullet.enable = true
|
3
|
+
Bullet.rails_logger = true
|
4
|
+
Bullet.console = true
|
5
|
+
Bullet.add_footer = true
|
6
|
+
# Bullet.alert = true
|
7
|
+
# Bullet.bullet_logger = true
|
8
|
+
# Bullet.growl = true
|
9
|
+
# Bullet.xmpp = { :account => 'bullets_account@jabber.org',
|
10
|
+
# :password => 'bullets_password_for_jabber',
|
11
|
+
# :receiver => 'your_account@jabber.org',
|
12
|
+
# :show_online_status => true }
|
13
|
+
# Bullet.airbrake = true
|
14
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Rails.application.config.after_initialize do
|
2
|
+
ActiveRecord::Base.connection_pool.disconnect!
|
3
|
+
|
4
|
+
ActiveSupport.on_load(:active_record) do
|
5
|
+
if Rails.application.config.database_configuration
|
6
|
+
config = Rails.application.config.database_configuration[Rails.env]
|
7
|
+
config['reaping_frequency'] = ENV['DB_REAP_FREQ'] || 10 # seconds
|
8
|
+
config['pool'] = ENV['DB_POOL'] || 5
|
9
|
+
ActiveRecord::Base.establish_connection(config)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Rack::Timeout.timeout = Integer(ENV['RACK_TIMEOUT'] || 10) # seconds
|
@@ -9,7 +9,7 @@ pt-BR:
|
|
9
9
|
- Sex
|
10
10
|
- Sáb
|
11
11
|
abbr_month_names:
|
12
|
-
-
|
12
|
+
-
|
13
13
|
- Jan
|
14
14
|
- Fev
|
15
15
|
- Mar
|
@@ -32,10 +32,10 @@ pt-BR:
|
|
32
32
|
- Sábado
|
33
33
|
formats:
|
34
34
|
default: ! '%d/%m/%Y'
|
35
|
-
long: ! '%d
|
35
|
+
long: ! '%d %B %Y'
|
36
36
|
short: ! '%d de %B'
|
37
37
|
month_names:
|
38
|
-
-
|
38
|
+
-
|
39
39
|
- Janeiro
|
40
40
|
- Fevereiro
|
41
41
|
- Março
|
@@ -100,6 +100,7 @@ pt-BR:
|
|
100
100
|
messages:
|
101
101
|
accepted: deve ser aceito
|
102
102
|
blank: não pode ficar em branco
|
103
|
+
present: deve ficar em branco
|
103
104
|
confirmation: não está de acordo com a confirmação
|
104
105
|
empty: não pode ficar vazio
|
105
106
|
equal_to: deve ser igual a %{count}
|
@@ -115,6 +116,9 @@ pt-BR:
|
|
115
116
|
not_an_integer: não é um número inteiro
|
116
117
|
odd: deve ser ímpar
|
117
118
|
record_invalid: ! 'A validação falhou: %{errors}'
|
119
|
+
restrict_dependent_destroy:
|
120
|
+
one: "Não é possível excluir o registro pois existe um %{record} dependente"
|
121
|
+
many: "Não é possível excluir o registro pois existem %{record} dependentes"
|
118
122
|
taken: já está em uso
|
119
123
|
too_long: ! 'é muito longo (máximo: %{count} caracteres)'
|
120
124
|
too_short: ! 'é muito curto (mínimo: %{count} caracteres)'
|
@@ -194,9 +198,10 @@ pt-BR:
|
|
194
198
|
time:
|
195
199
|
am: ''
|
196
200
|
formats:
|
197
|
-
default: ! '%
|
198
|
-
long: ! '%
|
199
|
-
short: ! '%d
|
201
|
+
default: ! '%a, %d de %B de %Y, %H:%M:%S %z'
|
202
|
+
long: ! '%d de %B de %Y, %H:%M'
|
203
|
+
short: ! '%d de %B, %H:%M'
|
204
|
+
simple: ! '%d/%m/%Y'
|
200
205
|
pm: ''
|
201
206
|
# remove these aliases after 'activemodel' and 'activerecord' namespaces are removed from Rails repository
|
202
207
|
activemodel:
|
@@ -205,3 +210,13 @@ pt-BR:
|
|
205
210
|
activerecord:
|
206
211
|
errors:
|
207
212
|
<<: *errors
|
213
|
+
errors:
|
214
|
+
messages:
|
215
|
+
already_confirmed: já foi confirmado
|
216
|
+
confirmation_period_expired: É necessário ser confirmado detro do periodo %{period}, por favor requisite um novo usuário.
|
217
|
+
expired: expirou, por favor solicite uma nova
|
218
|
+
not_found: não encontrado
|
219
|
+
not_locked: não foi bloqueado
|
220
|
+
not_saved:
|
221
|
+
one: 'Não foi possível salvar %{resource}: 1 erro'
|
222
|
+
other: 'Não foi possível salvar %{resource}: %{count} erros.'
|
@@ -0,0 +1,25 @@
|
|
1
|
+
pt-BR:
|
2
|
+
simple_form:
|
3
|
+
"yes": 'Sim'
|
4
|
+
"no": 'Não'
|
5
|
+
required:
|
6
|
+
text: 'obrigatório'
|
7
|
+
mark: '*'
|
8
|
+
# You can uncomment the line below if you need to overwrite the whole required html.
|
9
|
+
# When using html, text and mark won't be used.
|
10
|
+
# html: '<abbr title="required">*</abbr>'
|
11
|
+
error_notification:
|
12
|
+
default_message: "Por favor, verifique os problemas abaixo:"
|
13
|
+
# Labels and hints examples
|
14
|
+
# labels:
|
15
|
+
# defaults:
|
16
|
+
# password: 'Password'
|
17
|
+
# user:
|
18
|
+
# new:
|
19
|
+
# email: 'E-mail to sign in.'
|
20
|
+
# edit:
|
21
|
+
# email: 'E-mail.'
|
22
|
+
# hints:
|
23
|
+
# defaults:
|
24
|
+
# username: 'User name to sign in.'
|
25
|
+
# password: 'No special characters, please.'
|
@@ -1,13 +1,10 @@
|
|
1
1
|
INTEGRATION_TASKS = %w(
|
2
|
-
jumpup:heroku:
|
3
|
-
jumpup:heroku:check
|
4
|
-
jumpup:heroku:lock
|
2
|
+
jumpup:heroku:start
|
5
3
|
jumpup:start
|
6
4
|
jumpup:bundle_install
|
7
5
|
db:migrate
|
8
6
|
spec
|
9
7
|
jumpup:coverage_verify
|
10
8
|
jumpup:finish
|
11
|
-
jumpup:heroku:
|
12
|
-
|
13
|
-
)
|
9
|
+
jumpup:heroku:finish
|
10
|
+
)
|
@@ -0,0 +1,69 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="UTF-8">
|
5
|
+
<title>Erro 404</title>
|
6
|
+
</head>
|
7
|
+
<body>
|
8
|
+
<style>
|
9
|
+
* {
|
10
|
+
-webkit-box-sizing: border-box;
|
11
|
+
-moz-box-sizing: border-box;
|
12
|
+
box-sizing: border-box;
|
13
|
+
}
|
14
|
+
body,html{
|
15
|
+
background-color: #f4f4f4;
|
16
|
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
17
|
+
position: relative;
|
18
|
+
min-height: 100%;
|
19
|
+
height: 100%;
|
20
|
+
}
|
21
|
+
|
22
|
+
.container{
|
23
|
+
background-color: #fff;
|
24
|
+
border: 1px solid #e5e5e5;
|
25
|
+
left: 50%;
|
26
|
+
padding: 20px;
|
27
|
+
position: absolute;
|
28
|
+
text-align: center;
|
29
|
+
top: 50%;
|
30
|
+
-ms-transform: translateY(-60%) translateX(-50%);
|
31
|
+
-webkit-transform: translateY(-60%) translateX(-50%);
|
32
|
+
transform: translateY(-60%) translateX(-50%);
|
33
|
+
width: 60%;
|
34
|
+
-webkit-border-radius: 4px;
|
35
|
+
-moz-border-radius: 4px;
|
36
|
+
border-radius: 4px;
|
37
|
+
}
|
38
|
+
|
39
|
+
.container h1{
|
40
|
+
color: #a84d4d;
|
41
|
+
font-size: 100px;
|
42
|
+
font-weight: 200;
|
43
|
+
margin: 0;
|
44
|
+
}
|
45
|
+
|
46
|
+
.container a{
|
47
|
+
color: #1c81d7;
|
48
|
+
text-decoration: none;
|
49
|
+
}
|
50
|
+
|
51
|
+
.container p{
|
52
|
+
color: #6c6c6c;
|
53
|
+
font-size: 18px;
|
54
|
+
}
|
55
|
+
|
56
|
+
.container p.text-small{
|
57
|
+
font-size: 14px;
|
58
|
+
opacity: 0.85;
|
59
|
+
}
|
60
|
+
</style>
|
61
|
+
|
62
|
+
<div class="container">
|
63
|
+
<h1>404</h1>
|
64
|
+
<p>Hmmm... Não achamos a página que você está procurando.</p>
|
65
|
+
<p class="text-small">Volte para a <a href="/">home</a>.</p>
|
66
|
+
</div>
|
67
|
+
|
68
|
+
</body>
|
69
|
+
</html>
|
@@ -0,0 +1,59 @@
|
|
1
|
+
<style>
|
2
|
+
* {
|
3
|
+
-webkit-box-sizing: border-box;
|
4
|
+
-moz-box-sizing: border-box;
|
5
|
+
box-sizing: border-box;
|
6
|
+
}
|
7
|
+
body,html{
|
8
|
+
background-color: #f4f4f4;
|
9
|
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
10
|
+
position: relative;
|
11
|
+
min-height: 100%;
|
12
|
+
height: 100%;
|
13
|
+
}
|
14
|
+
|
15
|
+
.container{
|
16
|
+
background-color: #fff;
|
17
|
+
border: 1px solid #e5e5e5;
|
18
|
+
left: 50%;
|
19
|
+
padding: 20px;
|
20
|
+
position: absolute;
|
21
|
+
text-align: center;
|
22
|
+
top: 50%;
|
23
|
+
-ms-transform: translateY(-60%) translateX(-50%);
|
24
|
+
-webkit-transform: translateY(-60%) translateX(-50%);
|
25
|
+
transform: translateY(-60%) translateX(-50%);
|
26
|
+
width: 60%;
|
27
|
+
-webkit-border-radius: 4px;
|
28
|
+
-moz-border-radius: 4px;
|
29
|
+
border-radius: 4px;
|
30
|
+
}
|
31
|
+
|
32
|
+
.container h1{
|
33
|
+
color: #a84d4d;
|
34
|
+
font-size: 100px;
|
35
|
+
font-weight: 200;
|
36
|
+
margin: 0;
|
37
|
+
}
|
38
|
+
|
39
|
+
.container a{
|
40
|
+
color: #1c81d7;
|
41
|
+
text-decoration: none;
|
42
|
+
}
|
43
|
+
|
44
|
+
.container p{
|
45
|
+
color: #6c6c6c;
|
46
|
+
font-size: 18px;
|
47
|
+
}
|
48
|
+
|
49
|
+
.container p.text-small{
|
50
|
+
font-size: 14px;
|
51
|
+
opacity: 0.85;
|
52
|
+
}
|
53
|
+
</style>
|
54
|
+
|
55
|
+
<div class="container">
|
56
|
+
<h1>500</h1>
|
57
|
+
<p>Erro interno no servidor. :,(</p>
|
58
|
+
<p class="text-small">Tente novamente mais tarde!</p>
|
59
|
+
</div>
|
@@ -12,7 +12,7 @@ module AcceptanceHelpers
|
|
12
12
|
page.evaluate_script "window.confirm = window.original_confirm_function"
|
13
13
|
end
|
14
14
|
def fill_in_autocomplete(capybara_selector, jquery_selector, value)
|
15
|
-
fill_in capybara_selector, :
|
15
|
+
fill_in capybara_selector, with: value
|
16
16
|
page.execute_script %Q{$('#{jquery_selector}').keydown()}
|
17
17
|
end
|
18
18
|
def choose_autocomplete(text)
|
@@ -22,5 +22,5 @@ module AcceptanceHelpers
|
|
22
22
|
end
|
23
23
|
|
24
24
|
RSpec.configure do |config|
|
25
|
-
config.include AcceptanceHelpers, :
|
25
|
+
config.include AcceptanceHelpers, type: :request
|
26
26
|
end
|
@@ -2,15 +2,15 @@
|
|
2
2
|
module AcceptanceMacros
|
3
3
|
def login!
|
4
4
|
before(:each) do
|
5
|
-
@current_user = User.make(:
|
5
|
+
@current_user = User.make(email: 'x@example.com', password: 'senha123', password_confirmation: 'senha123')
|
6
6
|
visit new_user_session_path
|
7
|
-
fill_in 'Email', :
|
8
|
-
fill_in 'Senha', :
|
7
|
+
fill_in 'Email', with: 'x@example.com'
|
8
|
+
fill_in 'Senha', with: 'senha123'
|
9
9
|
click_button 'Entrar'
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
14
|
RSpec.configure do |config|
|
15
|
-
config.extend AcceptanceMacros, :
|
15
|
+
config.extend AcceptanceMacros, type: :request
|
16
16
|
end
|
@@ -4,5 +4,5 @@ require 'capybara/poltergeist'
|
|
4
4
|
|
5
5
|
Capybara.javascript_driver = :poltergeist
|
6
6
|
RSpec.configure do |config|
|
7
|
-
config.include Capybara::DSL, :
|
7
|
+
config.include Capybara::DSL, example_group: { file_path: /\bspec\/acceptance\// }
|
8
8
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
RSpec.configure do |config|
|
2
|
+
config.before(:suite) do
|
3
|
+
DatabaseCleaner.strategy = :transaction
|
4
|
+
DatabaseCleaner.clean_with(:truncation)
|
5
|
+
end
|
6
|
+
|
7
|
+
config.before(:each, js: true) do
|
8
|
+
DatabaseCleaner.strategy = :deletion
|
9
|
+
end
|
10
|
+
|
11
|
+
config.before(:each) do
|
12
|
+
DatabaseCleaner.start
|
13
|
+
end
|
14
|
+
|
15
|
+
config.after(:each) do
|
16
|
+
DatabaseCleaner.clean
|
17
|
+
end
|
18
|
+
end
|
@@ -1,8 +1,7 @@
|
|
1
|
-
|
2
|
-
#
|
3
|
-
# VCR.configure do |c|
|
4
|
-
# c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
|
5
|
-
# c.hook_into :webmock
|
6
|
-
# c.configure_rspec_metadata!
|
7
|
-
# end
|
1
|
+
require 'vcr'
|
8
2
|
|
3
|
+
VCR.configure do |c|
|
4
|
+
c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
|
5
|
+
c.hook_into :webmock
|
6
|
+
c.configure_rspec_metadata!
|
7
|
+
end
|
data/lib/pah/partials/_assets.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
puts "Adding asset files ...".magenta
|
2
|
-
|
3
1
|
copy_static_file 'app/assets/javascripts/application.js'
|
4
2
|
copy_static_file 'app/assets/stylesheets/_variables.scss'
|
5
3
|
copy_static_file 'app/assets/stylesheets/application.scss'
|
@@ -7,7 +5,8 @@ copy_static_file 'app/assets/stylesheets/reset.scss'
|
|
7
5
|
copy_static_file 'app/assets/stylesheets/general.scss'
|
8
6
|
copy_static_file 'app/assets/stylesheets/form.scss'
|
9
7
|
copy_static_file 'app/assets/stylesheets/responsive.scss'
|
8
|
+
remove_file 'app/assets/stylesheets/application.css'
|
10
9
|
|
11
|
-
git :
|
12
|
-
git :
|
13
|
-
|
10
|
+
git rm: 'app/assets/stylesheets/application.css'
|
11
|
+
git add: 'app/assets/'
|
12
|
+
git_commit 'Add asset files.'
|
@@ -1,4 +1,3 @@
|
|
1
|
-
puts "Configuring canonical hosts... ".magenta
|
2
1
|
rack_canonical = <<CANONICAL
|
3
2
|
|
4
3
|
#Run heroku config:add CANONICAL_HOST=yourdomain.com
|
@@ -8,7 +7,5 @@ CANONICAL
|
|
8
7
|
in_root do
|
9
8
|
inject_into_file 'config.ru', rack_canonical, {after: "require ::File.expand_path('../config/environment', __FILE__)", verbose: false}
|
10
9
|
end
|
11
|
-
git :
|
12
|
-
|
13
|
-
|
14
|
-
puts "\n"
|
10
|
+
git add: 'config.ru'
|
11
|
+
git_commit 'Add rack-canonical-host.'
|
@@ -1,11 +1,8 @@
|
|
1
|
-
puts "Adding capybara helpers...".magenta
|
2
|
-
|
3
1
|
copy_static_file 'spec/support/acceptance_helpers.rb'
|
4
2
|
copy_static_file 'spec/support/acceptance_macros.rb'
|
5
3
|
copy_static_file 'spec/support/capybara.rb'
|
6
4
|
copy_static_file 'spec/support/shared_connection.rb'
|
7
5
|
copy_static_file 'spec/acceptance/dummy_spec.rb'
|
8
6
|
|
9
|
-
git :
|
10
|
-
|
11
|
-
puts "\n"
|
7
|
+
git add: 'spec/'
|
8
|
+
git_commit 'Add capybara helpers.'
|