pah 0.0.1
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.
- data/.gitignore +17 -0
- data/.rvmrc +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +55 -0
- data/Rakefile +1 -0
- data/bin/pah +4 -0
- data/lib/pah/README.md +53 -0
- data/lib/pah/build +17 -0
- data/lib/pah/files/.gitignore +17 -0
- data/lib/pah/files/.rvmrc +48 -0
- data/lib/pah/files/Gemfile +52 -0
- data/lib/pah/files/Procfile +1 -0
- data/lib/pah/files/app/assets/stylesheets/reset.css +40 -0
- data/lib/pah/files/app/controllers/admin/contents_controller.rb +2 -0
- data/lib/pah/files/app/helpers/typus_helper.rb +32 -0
- data/lib/pah/files/app/models/content.rb +27 -0
- data/lib/pah/files/app/views/admin/dashboard/_sidebar.html.erb +0 -0
- data/lib/pah/files/app/views/layouts/application.html.haml +68 -0
- data/lib/pah/files/config/database.yml +22 -0
- data/lib/pah/files/config/initializers/omniauth.rb +4 -0
- data/lib/pah/files/config/initializers/requires.rb +1 -0
- data/lib/pah/files/config/locales/pt-BR.app.yml +16 -0
- data/lib/pah/files/config/locales/pt-BR.content.yml +12 -0
- data/lib/pah/files/config/locales/pt-BR.typus.yml +15 -0
- data/lib/pah/files/config/locales/pt-BR.yml +207 -0
- data/lib/pah/files/config/typus/content.yml +8 -0
- data/lib/pah/files/config/typus/content_roles.yml +4 -0
- data/lib/pah/files/config/unicorn.rb +27 -0
- data/lib/pah/files/db/migrate/20120605205337_create_contents.rb +11 -0
- data/lib/pah/files/db/seeds.rb +10 -0
- data/lib/pah/files/lib/tasks/integration.rake +14 -0
- data/lib/pah/files/public/index.html +1 -0
- data/lib/pah/files/spec/acceptance/dummy_spec.rb +9 -0
- data/lib/pah/files/spec/controllers/admin/contents_controller_spec.rb +5 -0
- data/lib/pah/files/spec/factories/content.rb +8 -0
- data/lib/pah/files/spec/helpers/typus_helper_spec.rb +71 -0
- data/lib/pah/files/spec/models/content_spec.rb +64 -0
- data/lib/pah/files/spec/spec_helper.rb +47 -0
- data/lib/pah/files/spec/support/README +1 -0
- data/lib/pah/files/spec/support/acceptance_helpers.rb +26 -0
- data/lib/pah/files/spec/support/acceptance_macros.rb +16 -0
- data/lib/pah/files/spec/support/capybara.rb +8 -0
- data/lib/pah/files/spec/support/deferred_garbage_collection.rb +35 -0
- data/lib/pah/files/spec/support/http_basic_auth.rb +26 -0
- data/lib/pah/files/spec/support/matchers.rb +5 -0
- data/lib/pah/files/spec/support/omniauth.rb +27 -0
- data/lib/pah/files/spec/support/paperclip.rb +4 -0
- data/lib/pah/files/spec/support/shared_connection.rb +12 -0
- data/lib/pah/files/spec/support/suppress_log.rb +5 -0
- data/lib/pah/files/spec/support/uploaded_file.rb +19 -0
- data/lib/pah/files/spec/support/vcr.rb +7 -0
- data/lib/pah/partials/_canonical_host.rb +14 -0
- data/lib/pah/partials/_capybara.rb +11 -0
- data/lib/pah/partials/_cleanup.rb +20 -0
- data/lib/pah/partials/_database.rb +6 -0
- data/lib/pah/partials/_default.rb +26 -0
- data/lib/pah/partials/_finish.rb +8 -0
- data/lib/pah/partials/_gems.rb +7 -0
- data/lib/pah/partials/_generators.rb +37 -0
- data/lib/pah/partials/_git.rb +7 -0
- data/lib/pah/partials/_heroku.rb +51 -0
- data/lib/pah/partials/_omniauth.rb +13 -0
- data/lib/pah/partials/_rspec.rb +13 -0
- data/lib/pah/partials/_rvm.rb +43 -0
- data/lib/pah/partials/_secure_headers.rb +12 -0
- data/lib/pah/setup.rb +17 -0
- data/lib/pah/template.rb +91 -0
- data/lib/pah/version.rb +3 -0
- data/pah.gemspec +27 -0
- metadata +205 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
development:
|
2
|
+
adapter: postgresql
|
3
|
+
encoding: unicode
|
4
|
+
database: PROJECT_development
|
5
|
+
pool: 5
|
6
|
+
username: postgres
|
7
|
+
password:
|
8
|
+
host: localhost
|
9
|
+
encoding: utf8
|
10
|
+
template: template0
|
11
|
+
|
12
|
+
test:
|
13
|
+
adapter: postgresql
|
14
|
+
encoding: unicode
|
15
|
+
database: PROJECT_test
|
16
|
+
pool: 5
|
17
|
+
username: postgres
|
18
|
+
password:
|
19
|
+
min_messages: WARNING
|
20
|
+
host: localhost
|
21
|
+
encoding: utf8
|
22
|
+
template: template0
|
@@ -0,0 +1 @@
|
|
1
|
+
# add here requires that your app needs to load
|
@@ -0,0 +1,16 @@
|
|
1
|
+
pt-BR:
|
2
|
+
models_and_attributes: &models_and_attributes
|
3
|
+
models:
|
4
|
+
admin_user: Administrador
|
5
|
+
user: Usuário
|
6
|
+
attributes:
|
7
|
+
admin_user:
|
8
|
+
role: Perfil
|
9
|
+
status: Ativo?
|
10
|
+
locale: Idioma
|
11
|
+
user:
|
12
|
+
name: Nome
|
13
|
+
activerecord:
|
14
|
+
<<: *models_and_attributes
|
15
|
+
activemodel:
|
16
|
+
<<: *models_and_attributes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
pt-BR:
|
2
|
+
#typus
|
3
|
+
Trash: Excluir
|
4
|
+
All: Todos
|
5
|
+
Save: Salvar
|
6
|
+
Models: Cadastros
|
7
|
+
Applications: Menu
|
8
|
+
"Save and add another": Salvar e adicionar outro
|
9
|
+
"Save and continue editing": Salvar e continuar editando
|
10
|
+
"Show by %{attribute}": Mostrar por %{attribute}
|
11
|
+
"Add New %{resource}": "Adicionar %{resource}"
|
12
|
+
"Select an Option": "Selecione uma opção"
|
13
|
+
"All Entries": Todos
|
14
|
+
Top: "Início"
|
15
|
+
Bottom: "Final"
|
@@ -0,0 +1,207 @@
|
|
1
|
+
pt-BR:
|
2
|
+
date:
|
3
|
+
abbr_day_names:
|
4
|
+
- Dom
|
5
|
+
- Seg
|
6
|
+
- Ter
|
7
|
+
- Qua
|
8
|
+
- Qui
|
9
|
+
- Sex
|
10
|
+
- Sáb
|
11
|
+
abbr_month_names:
|
12
|
+
-
|
13
|
+
- Jan
|
14
|
+
- Fev
|
15
|
+
- Mar
|
16
|
+
- Abr
|
17
|
+
- Mai
|
18
|
+
- Jun
|
19
|
+
- Jul
|
20
|
+
- Ago
|
21
|
+
- Set
|
22
|
+
- Out
|
23
|
+
- Nov
|
24
|
+
- Dez
|
25
|
+
day_names:
|
26
|
+
- Domingo
|
27
|
+
- Segunda
|
28
|
+
- Terça
|
29
|
+
- Quarta
|
30
|
+
- Quinta
|
31
|
+
- Sexta
|
32
|
+
- Sábado
|
33
|
+
formats:
|
34
|
+
default: ! '%d/%m/%Y'
|
35
|
+
long: ! '%d de %B de %Y'
|
36
|
+
short: ! '%d de %B'
|
37
|
+
month_names:
|
38
|
+
-
|
39
|
+
- Janeiro
|
40
|
+
- Fevereiro
|
41
|
+
- Março
|
42
|
+
- Abril
|
43
|
+
- Maio
|
44
|
+
- Junho
|
45
|
+
- Julho
|
46
|
+
- Agosto
|
47
|
+
- Setembro
|
48
|
+
- Outubro
|
49
|
+
- Novembro
|
50
|
+
- Dezembro
|
51
|
+
order:
|
52
|
+
- :day
|
53
|
+
- :month
|
54
|
+
- :year
|
55
|
+
datetime:
|
56
|
+
distance_in_words:
|
57
|
+
about_x_hours:
|
58
|
+
one: aproximadamente 1 hora
|
59
|
+
other: aproximadamente %{count} horas
|
60
|
+
about_x_months:
|
61
|
+
one: aproximadamente 1 mês
|
62
|
+
other: aproximadamente %{count} meses
|
63
|
+
about_x_years:
|
64
|
+
one: aproximadamente 1 ano
|
65
|
+
other: aproximadamente %{count} anos
|
66
|
+
almost_x_years:
|
67
|
+
one: quase 1 ano
|
68
|
+
other: quase %{count} anos
|
69
|
+
half_a_minute: meio minuto
|
70
|
+
less_than_x_minutes:
|
71
|
+
one: menos de um minuto
|
72
|
+
other: menos de %{count} minutos
|
73
|
+
less_than_x_seconds:
|
74
|
+
one: menos de 1 segundo
|
75
|
+
other: menos de %{count} segundos
|
76
|
+
over_x_years:
|
77
|
+
one: mais de 1 ano
|
78
|
+
other: mais de %{count} anos
|
79
|
+
x_days:
|
80
|
+
one: 1 dia
|
81
|
+
other: ! '%{count} dias'
|
82
|
+
x_minutes:
|
83
|
+
one: 1 minuto
|
84
|
+
other: ! '%{count} minutos'
|
85
|
+
x_months:
|
86
|
+
one: 1 mês
|
87
|
+
other: ! '%{count} meses'
|
88
|
+
x_seconds:
|
89
|
+
one: 1 segundo
|
90
|
+
other: ! '%{count} segundos'
|
91
|
+
prompts:
|
92
|
+
day: Dia
|
93
|
+
hour: Hora
|
94
|
+
minute: Minuto
|
95
|
+
month: Mês
|
96
|
+
second: Segundo
|
97
|
+
year: Ano
|
98
|
+
errors: &errors
|
99
|
+
format: ! '%{attribute} %{message}'
|
100
|
+
messages:
|
101
|
+
accepted: deve ser aceito
|
102
|
+
blank: não pode ficar em branco
|
103
|
+
confirmation: não está de acordo com a confirmação
|
104
|
+
empty: não pode ficar vazio
|
105
|
+
equal_to: deve ser igual a %{count}
|
106
|
+
even: deve ser par
|
107
|
+
exclusion: não está disponível
|
108
|
+
greater_than: deve ser maior que %{count}
|
109
|
+
greater_than_or_equal_to: deve ser maior ou igual a %{count}
|
110
|
+
inclusion: não está incluído na lista
|
111
|
+
invalid: não é válido
|
112
|
+
less_than: deve ser menor que %{count}
|
113
|
+
less_than_or_equal_to: deve ser menor ou igual a %{count}
|
114
|
+
not_a_number: não é um número
|
115
|
+
not_an_integer: não é um número inteiro
|
116
|
+
odd: deve ser ímpar
|
117
|
+
record_invalid: ! 'A validação falhou: %{errors}'
|
118
|
+
taken: já está em uso
|
119
|
+
too_long: ! 'é muito longo (máximo: %{count} caracteres)'
|
120
|
+
too_short: ! 'é muito curto (mínimo: %{count} caracteres)'
|
121
|
+
wrong_length: não possui o tamanho esperado (%{count} caracteres)
|
122
|
+
template:
|
123
|
+
body: ! 'Por favor, verifique o(s) seguinte(s) campo(s):'
|
124
|
+
header:
|
125
|
+
one: ! 'Não foi possível gravar %{model}: 1 erro'
|
126
|
+
other: ! 'Não foi possível gravar %{model}: %{count} erros.'
|
127
|
+
helpers:
|
128
|
+
select:
|
129
|
+
prompt: Por favor selecione
|
130
|
+
submit:
|
131
|
+
create: Criar %{model}
|
132
|
+
submit: Salvar %{model}
|
133
|
+
update: Atualizar %{model}
|
134
|
+
number:
|
135
|
+
currency:
|
136
|
+
format:
|
137
|
+
delimiter: .
|
138
|
+
format: ! '%u %n'
|
139
|
+
precision: 2
|
140
|
+
separator: ! ','
|
141
|
+
significant: false
|
142
|
+
strip_insignificant_zeros: false
|
143
|
+
unit: R$
|
144
|
+
format:
|
145
|
+
delimiter: .
|
146
|
+
precision: 3
|
147
|
+
separator: ! ','
|
148
|
+
significant: false
|
149
|
+
strip_insignificant_zeros: false
|
150
|
+
human:
|
151
|
+
decimal_units:
|
152
|
+
format: ! '%n %u'
|
153
|
+
units:
|
154
|
+
billion:
|
155
|
+
one: bilhão
|
156
|
+
other: bilhões
|
157
|
+
million:
|
158
|
+
one: milhão
|
159
|
+
other: milhões
|
160
|
+
quadrillion:
|
161
|
+
one: quatrilhão
|
162
|
+
other: quatrilhões
|
163
|
+
thousand: mil
|
164
|
+
trillion:
|
165
|
+
one: trilhão
|
166
|
+
other: trilhões
|
167
|
+
unit: ''
|
168
|
+
format:
|
169
|
+
delimiter: .
|
170
|
+
precision: 2
|
171
|
+
significant: true
|
172
|
+
strip_insignificant_zeros: true
|
173
|
+
storage_units:
|
174
|
+
format: ! '%n %u'
|
175
|
+
units:
|
176
|
+
byte:
|
177
|
+
one: Byte
|
178
|
+
other: Bytes
|
179
|
+
gb: GB
|
180
|
+
kb: KB
|
181
|
+
mb: MB
|
182
|
+
tb: TB
|
183
|
+
percentage:
|
184
|
+
format:
|
185
|
+
delimiter: .
|
186
|
+
precision:
|
187
|
+
format:
|
188
|
+
delimiter: .
|
189
|
+
support:
|
190
|
+
array:
|
191
|
+
last_word_connector: ! ' e '
|
192
|
+
two_words_connector: ! ' e '
|
193
|
+
words_connector: ! ', '
|
194
|
+
time:
|
195
|
+
am: ''
|
196
|
+
formats:
|
197
|
+
default: ! '%A, %d de %B de %Y, %H:%M h'
|
198
|
+
long: ! '%A, %d de %B de %Y, %H:%M h'
|
199
|
+
short: ! '%d/%m, %H:%M h'
|
200
|
+
pm: ''
|
201
|
+
# remove these aliases after 'activemodel' and 'activerecord' namespaces are removed from Rails repository
|
202
|
+
activemodel:
|
203
|
+
errors:
|
204
|
+
<<: *errors
|
205
|
+
activerecord:
|
206
|
+
errors:
|
207
|
+
<<: *errors
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# config/unicorn.rb
|
2
|
+
|
3
|
+
worker_processes Integer(ENV['WEB_CONCURRENCY'] || 3)
|
4
|
+
timeout Integer(ENV['WEB_TIMEOUT'] || 15)
|
5
|
+
preload_app true
|
6
|
+
|
7
|
+
before_fork do |server, worker|
|
8
|
+
|
9
|
+
Signal.trap 'TERM' do
|
10
|
+
puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
|
11
|
+
Process.kill 'QUIT', Process.pid
|
12
|
+
end
|
13
|
+
|
14
|
+
defined?(ActiveRecord::Base) and
|
15
|
+
ActiveRecord::Base.connection.disconnect!
|
16
|
+
end
|
17
|
+
|
18
|
+
after_fork do |server, worker|
|
19
|
+
|
20
|
+
Signal.trap 'TERM' do
|
21
|
+
puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to sent QUIT'
|
22
|
+
end
|
23
|
+
|
24
|
+
defined?(ActiveRecord::Base) and
|
25
|
+
ActiveRecord::Base.establish_connection
|
26
|
+
end
|
27
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
3
|
+
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
4
|
+
#
|
5
|
+
# Examples:
|
6
|
+
#
|
7
|
+
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
|
8
|
+
# Mayor.create(name: 'Emanuel', city: cities.first)
|
9
|
+
|
10
|
+
Content.ensure(:call_to_action, 'Texto do Botão', 'Comprar')
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
INTEGRATION_TASKS = %w(
|
3
|
+
integration:heroku:add_remote
|
4
|
+
integration:heroku:check
|
5
|
+
integration:heroku:lock
|
6
|
+
integration:start
|
7
|
+
integration:bundle_install
|
8
|
+
db:migrate
|
9
|
+
spec
|
10
|
+
integration:coverage_verify
|
11
|
+
integration:finish
|
12
|
+
heroku:deploy:production
|
13
|
+
integration:heroku:unlock
|
14
|
+
)
|
@@ -0,0 +1 @@
|
|
1
|
+
<h1>Profit!!!</h1>
|
@@ -0,0 +1,71 @@
|
|
1
|
+
# -*- encoding : utf-8 -*-
|
2
|
+
require 'spec_helper'
|
3
|
+
class AdminUser < ActiveRecord::Base
|
4
|
+
attr_accessor :first_name, :last_name, :log, :hashed_code, :banner_content_type, :banner_file_name, :banner_file_size
|
5
|
+
has_attached_file :banner,
|
6
|
+
storage: :s3,
|
7
|
+
bucket: ENV['AMAZON_S3_BUCKET'],
|
8
|
+
path: "banners/:id.:extension",
|
9
|
+
s3_permissions: :public_read,
|
10
|
+
s3_credentials: {
|
11
|
+
access_key_id: ENV['AMAZON_ACCESS_KEY_ID'],
|
12
|
+
secret_access_key: ENV['AMAZON_SECRET_ACCESS_KEY']
|
13
|
+
}
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe TypusHelper do
|
18
|
+
let(:admin_user) { AdminUser.new(first_name: 'More or less', banner_file_name: 'banner.png', banner_file_size: 320) }
|
19
|
+
describe "display_text" do
|
20
|
+
context :log do
|
21
|
+
it "should return field" do
|
22
|
+
helper.display_text(admin_user, 'log').should == "<pre></pre>"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
context :other do
|
26
|
+
it "should return field" do
|
27
|
+
helper.display_text(admin_user, 'last_name').should be_nil
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
describe "display_paperclip" do
|
32
|
+
context "image" do
|
33
|
+
it "should return field" do
|
34
|
+
admin_user.banner_content_type = "image/png"
|
35
|
+
helper.display_paperclip(admin_user, 'banner').should == "<img alt=\".png\" src=\"http://s3.amazonaws.com/websimulado-development/banners/.png\" />"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
context "other" do
|
39
|
+
it "should return field" do
|
40
|
+
helper.display_paperclip(admin_user, 'banner').should == "<a href=\"http://s3.amazonaws.com/websimulado-development/banners/.png\">banner.png</a>"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
describe "table_paperclip_field" do
|
45
|
+
it "should return field" do
|
46
|
+
helper.table_paperclip_field('banner', admin_user).should == "<a href=\"http://s3.amazonaws.com/websimulado-development/banners/.png\">banner.png</a>"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
describe "display_string" do
|
50
|
+
context "order hashed_code" do
|
51
|
+
context "finished" do
|
52
|
+
before do
|
53
|
+
admin_user.stub!(:hashed_code).and_return('hashed_code')
|
54
|
+
end
|
55
|
+
it "should return message" do
|
56
|
+
helper.display_string(admin_user, 'hashed_code').should =~ /href/
|
57
|
+
end
|
58
|
+
end
|
59
|
+
context "new" do
|
60
|
+
it "should return message" do
|
61
|
+
helper.display_string(admin_user, 'hashed_code').should == "Ainda não gerado."
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
context "other" do
|
66
|
+
it "should return message" do
|
67
|
+
helper.display_string(admin_user, 'first_name').should == "More or less"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|