pah 0.0.12 → 0.0.13
Sign up to get free protection for your applications and to get access to all the features.
- 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.'
|