Created
October 8, 2012 14:39
-
-
Save julioprotzek/3852875 to your computer and use it in GitHub Desktop.
Startaê Bootstrap
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
remove_file 'Gemfile' | |
create_file 'Gemfile' | |
add_source "http://rubygems.org" | |
gem 'rails', '~> 3.2.8' | |
gem 'jquery-rails' | |
if yes?('PostgreSQL on development?') | |
gem 'pg' | |
create_file 'config/database.yml', force: true do | |
%Q{development: | |
adapter: postgresql | |
database: #{app_name}_development | |
host: localhost | |
user: postgres | |
password: | |
pool: 5 | |
timeout: 5000 | |
template: template0 | |
test: &test | |
adapter: postgresql | |
database: #{app_name}_test | |
host: localhost | |
user: postgres | |
password: | |
pool: 5 | |
timeout: 5000 | |
template: template0 | |
production: | |
adapter: postgresql | |
database: #{app_name}_production | |
host: localhost | |
user: postgres | |
password: | |
pool: 5 | |
timeout: 5000 | |
template: template0 | |
} | |
end | |
else | |
gem 'pg', group: :production | |
gem 'sqlite3', group: :development | |
end | |
if yes?('Install slim?') | |
gem 'slim' | |
gem 'slim-rails' | |
remove_file 'app/views/layouts/application.html.erb' | |
create_file 'app/views/layouts/application.slim' do | |
%Q{doctype 5 | |
html lang="\#{I18n.locale}" | |
head | |
meta charset="utf-8" | |
title \#{@title} #{app_name} | |
meta name="description" content="\#{@description}" | |
link rel="shortcut icon" href="/favicon.ico" | |
meta name="author" content="Startaê — http://startae.com.br" | |
= csrf_meta_tags | |
= stylesheet_link_tag 'application', media: 'all' | |
body class="\#{@page_class} \#{@item_menu}" | |
= yield | |
= javascript_include_tag 'application' | |
= render 'layouts/development' if Rails.env.development? | |
= render 'layouts/google_analytics' if Rails.env.production? | |
} | |
end | |
create_file 'app/views/layouts/_development.slim' do | |
%Q{ | |
javascript: | |
document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] + ':35729/livereload.js?snipver=1"></' + 'script>') | |
} | |
end | |
create_file 'app/views/layouts/_google_analytics.slim' do | |
%Q{ | |
javascript: | |
var _gaq = _gaq || []; | |
_gaq.push(['_setAccount', "#{ENV['GOOGLE_ANALYTICS_ID']}"]); | |
_gaq.push(['_trackPageview']); | |
(function() { | |
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; | |
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; | |
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); | |
})(); | |
} | |
end | |
end | |
gem 'thin' | |
gem 'mini_magick' | |
gem 'carrierwave' | |
gem 'fog' | |
gem 'devise' | |
gem 'oily_png' | |
gem 'friendly_id' | |
gem 'simple_form' | |
if yes?('Install decorators?') | |
gem 'draper' | |
end | |
gem 'rufus-scheduler' | |
gem_group :assets do | |
gem 'compass', '~> 0.13.alpha.0' | |
gem 'compass-rails', '~> 1.0.3' | |
gem 'sass', '~> 3.2.0.alpha.278' | |
gem 'sass-rails', '~> 3.2.5' | |
gem 'susy', '~> 1.0.rc.4' | |
gem 'coffee-rails', '~> 3.2.2' | |
gem 'uglifier', '~> 1.2.4' | |
end | |
gem_group :development do | |
gem 'foreman' | |
end | |
application do | |
%Q{ | |
config.i18n.default_locale = 'pt-BR' | |
config.time_zone = 'Brasilia' | |
config.generators.stylesheet_engine = :sass | |
config.assets.initialize_on_precompile = false | |
config.generators do |g| | |
g.assets false | |
g.helper false | |
g.view_specs false | |
g.helper_specs false | |
g.controller_specs false | |
end | |
} | |
end | |
insert_into_file 'config/environments/development.rb', "\n$stdout.sync = true", after: 'end' | |
application(nil, env: "development") do | |
%Q{ | |
# Slim::Engine.set_default_options pretty: true | |
# Slim::Engine.set_default_options :format => :html5 | |
config.action_mailer.default_url_options = { host: 'localhost:5000' } | |
} | |
end | |
initializer("heroku_wake_up.rb") do | |
%Q{ | |
require 'rufus/scheduler' | |
scheduler = Rufus::Scheduler.start_new | |
scheduler.every '10m' do | |
require "net/http" | |
require "uri" | |
url = 'http://example.com' | |
Net::HTTP.get_response(URI.parse(url)) | |
end | |
} | |
end | |
create_file 'Procfile', 'web: bundle exec rails server thin -p $PORT' | |
create_file 'config/initializers/carrierwave.rb' do | |
%Q{ | |
CarrierWave.configure do |config| | |
config.cache_dir = Rails.root.join 'tmp', 'uploads' | |
config.fog_credentials = { | |
provider: 'AWS', | |
aws_access_key_id: ENV['S3_KEY'], | |
aws_secret_access_key: ENV['S3_SECRET'], | |
region: ENV['S3_REGION'] | |
} | |
config.fog_directory = ENV['S3_BUCKET'] | |
config.storage = :fog | |
config.enable_processing = false if Rails.env.test? or Rails.env.cucumber? | |
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} | |
end | |
} | |
end | |
create_file '.env' do | |
%Q{ | |
GOOGLE_ANALYTICS_ID=UA-00000000-0 | |
S3_BUCKET=tmp | |
S3_KEY=tmp | |
S3_SECRET=tmp | |
S3_REGION=sa-east-1 | |
} | |
end | |
create_file 'config/locales/pt-br.yml' do | |
%Q{ | |
pt-BR: | |
date: | |
abbr_day_names: | |
- Dom | |
- Seg | |
- Ter | |
- Qua | |
- Qui | |
- Sex | |
- Sáb | |
abbr_month_names: | |
- | |
- Jan | |
- Fev | |
- Mar | |
- Abr | |
- Mai | |
- Jun | |
- Jul | |
- Ago | |
- Set | |
- Out | |
- Nov | |
- Dez | |
day_names: | |
- Domingo | |
- Segunda | |
- Terça | |
- Quarta | |
- Quinta | |
- Sexta | |
- Sábado | |
formats: | |
default: ! '%d/%m/%Y' | |
long: ! '%d de %B de %Y' | |
short: ! '%d de %B' | |
month_names: | |
- | |
- Janeiro | |
- Fevereiro | |
- Março | |
- Abril | |
- Maio | |
- Junho | |
- Julho | |
- Agosto | |
- Setembro | |
- Outubro | |
- Novembro | |
- Dezembro | |
order: | |
- :day | |
- :month | |
- :year | |
datetime: | |
distance_in_words: | |
about_x_hours: | |
one: aproximadamente 1 hora | |
other: aproximadamente %{count} horas | |
about_x_months: | |
one: aproximadamente 1 mês | |
other: aproximadamente %{count} meses | |
about_x_years: | |
one: aproximadamente 1 ano | |
other: aproximadamente %{count} anos | |
almost_x_years: | |
one: quase 1 ano | |
other: quase %{count} anos | |
half_a_minute: meio minuto | |
less_than_x_minutes: | |
one: menos de um minuto | |
other: menos de %{count} minutos | |
less_than_x_seconds: | |
one: menos de 1 segundo | |
other: menos de %{count} segundos | |
over_x_years: | |
one: mais de 1 ano | |
other: mais de %{count} anos | |
x_days: | |
one: 1 dia | |
other: ! '%{count} dias' | |
x_minutes: | |
one: 1 minuto | |
other: ! '%{count} minutos' | |
x_months: | |
one: 1 mês | |
other: ! '%{count} meses' | |
x_seconds: | |
one: 1 segundo | |
other: ! '%{count} segundos' | |
prompts: | |
day: Dia | |
hour: Hora | |
minute: Minuto | |
month: Mês | |
second: Segundo | |
year: Ano | |
errors: &errors | |
format: ! '%{attribute} %{message}' | |
messages: | |
accepted: deve ser aceito | |
blank: não pode ficar em branco | |
confirmation: não está de acordo com a confirmação | |
empty: não pode ficar vazio | |
equal_to: deve ser igual a %{count} | |
even: deve ser par | |
exclusion: não está disponível | |
greater_than: deve ser maior que %{count} | |
greater_than_or_equal_to: deve ser maior ou igual a %{count} | |
inclusion: não está incluído na lista | |
invalid: não é válido | |
less_than: deve ser menor que %{count} | |
less_than_or_equal_to: deve ser menor ou igual a %{count} | |
not_a_number: não é um número | |
not_an_integer: não é um número inteiro | |
odd: deve ser ímpar | |
record_invalid: ! 'A validação falhou: %{errors}' | |
taken: já está em uso | |
too_long: ! 'é muito longo (máximo: %{count} caracteres)' | |
too_short: ! 'é muito curto (mínimo: %{count} caracteres)' | |
wrong_length: não possui o tamanho esperado (%{count} caracteres) | |
template: | |
body: ! 'Por favor, verifique o(s) seguinte(s) campo(s):' | |
header: | |
one: ! 'Não foi possível gravar %{model}: 1 erro' | |
other: ! 'Não foi possível gravar %{model}: %{count} erros.' | |
helpers: | |
select: | |
prompt: Por favor selecione | |
submit: | |
create: Criar %{model} | |
submit: Salvar %{model} | |
update: Atualizar %{model} | |
number: | |
currency: | |
format: | |
delimiter: . | |
format: ! '%u %n' | |
precision: 2 | |
separator: ! ',' | |
significant: false | |
strip_insignificant_zeros: false | |
unit: R$ | |
format: | |
delimiter: . | |
precision: 3 | |
separator: ! ',' | |
significant: false | |
strip_insignificant_zeros: false | |
human: | |
decimal_units: | |
format: ! '%n %u' | |
units: | |
billion: | |
one: bilhão | |
other: bilhões | |
million: | |
one: milhão | |
other: milhões | |
quadrillion: | |
one: quatrilhão | |
other: quatrilhões | |
thousand: mil | |
trillion: | |
one: trilhão | |
other: trilhões | |
unit: '' | |
format: | |
delimiter: . | |
precision: 2 | |
significant: true | |
strip_insignificant_zeros: true | |
storage_units: | |
format: ! '%n %u' | |
units: | |
byte: | |
one: Byte | |
other: Bytes | |
gb: GB | |
kb: KB | |
mb: MB | |
tb: TB | |
percentage: | |
format: | |
delimiter: . | |
precision: | |
format: | |
delimiter: . | |
support: | |
array: | |
last_word_connector: ! ' e ' | |
two_words_connector: ! ' e ' | |
words_connector: ! ', ' | |
time: | |
am: '' | |
formats: | |
default: ! '%A, %d de %B de %Y, %H:%M h' | |
long: ! '%A, %d de %B de %Y, %H:%M h' | |
short: ! '%d/%m, %H:%M h' | |
pm: '' | |
# remove these aliases after 'activemodel' and 'activerecord' namespaces are removed from Rails repository | |
activemodel: | |
errors: | |
<<: *errors | |
activerecord: | |
models: | |
user: Usuário | |
attributes: | |
user: | |
password: Senha | |
errors: | |
<<: *errors | |
views: | |
pagination: | |
first: "« Primeira" | |
last: "Última »" | |
previous: "‹ Anterior" | |
next: "Próxima ›" | |
truncate: "..." | |
} | |
end | |
create_file 'config/locales/devise.pt-br.yml' do | |
%Q{ | |
pt-BR: | |
errors: | |
messages: | |
expired: 'expirou, por favor solicite um novo' | |
not_found: 'não encontrado' | |
already_confirmed: 'já foi confirmado, por favor tente fazer login' | |
not_locked: 'não estava bloqueado' | |
not_saved: | |
one: "1 erro impediu que %{resource} fosse salvo:" | |
other: "%{count} erros impediram que %{resource} fosse salvo:" | |
devise: | |
failure: | |
already_authenticated: 'Você já está logado.' | |
unauthenticated: 'Você precisa registrar-se ou fazer login para continuar.' | |
unconfirmed: 'Você deve confirmar sua conta antes de continuar.' | |
locked: 'Sua conta está bloqueada.' | |
invalid: 'E-mail e senha inválidos' | |
invalid_token: 'Token de autenticação inválido.' | |
timeout: 'A sua sessão expirou, por favor faça login novamente para continuar.' | |
inactive: 'A sua conta não foi ativada ainda.' | |
sessions: | |
signed_in: 'Autenticado com sucesso.' | |
signed_out: 'Logout feito com sucesso.' | |
passwords: | |
send_instructions: 'Você receberá um e-mail com instruções sobre como reinicializar sua senha em poucos minutos.' | |
updated: 'Sua senha foi alterada com sucesso. Você está logado agora.' | |
updated_not_active: 'Sua senha foi alterada com sucesso.' | |
send_paranoid_instructions: 'Caso seu e-mail esteja cadastrado, você receberá um link para recuperação de senha no seu e-mail em poucos minutos.' | |
no_token: 'Você não pode acessar esta página sem que seja a partir de um e-mail de reinicialização de senha. Se você chegou aqui através de um e-mail de reinicialização de senha, por favor verifique se você usou a URL completa que foi informada.' | |
confirmations: | |
send_instructions: 'Dentro de minutos você receberá um e-mail com instruções para confirmar a sua conta.' | |
send_paranoid_instructions: 'Caso seu e-mail exista em nossa base, você receberá um e-mail em poucos minutos com instruções sobre como confirmar sua conta.' | |
confirmed: 'Sua conta foi confirmada com sucesso. Você está logado.' | |
registrations: | |
signed_up: 'Bem-vindo! Você se registrou com sucesso.' | |
signed_up_but_unconfirmed: 'Uma mensagem com um link de confirmação foi enviado para o seu e-mail. Por favor, abra o link para ativar sua conta.' | |
signed_up_but_inactive: 'Você se cadastrou com sucesso. Porém, sua conta ainda não está ativada.' | |
signed_up_but_locked: 'Você se cadastrou com sucesso. Porém, sua conta está bloqueada.' | |
updated: 'Você atualizou sua conta com sucesso.' | |
update_needs_confirmation: 'Você atualizou sua conta com sucesso, mas nós precisamos verificar seu endereço de e-mail. Por favor, verifique seus e-mails e clique no link de confirmação para finalizar a criação da sua conta.' | |
destroyed: 'Até mais! Sua conta foi cancelada com sucesso. Esperamos vê-lo novamente em breve.' | |
unlocks: | |
send_instructions: 'Você receberá um e-mail em poucos minutos com instruções sobre como desbloquear sua conta.' | |
unlocked: 'Sua conta foi desbloqueada com sucesso. Por favor, faça login para continuar.' | |
send_paranoid_instructions: 'Caso sua e-mail exista em nossa base, você receberá um e-mail em poucos minutos com instruções sobre como desbloqueá-la.' | |
omniauth_callbacks: | |
success: "Autorizado com sucesso pela conta %{kind}." | |
failure: 'Não foi possível autorizar você através do %{kind} porque "%{reason}".' | |
mailer: | |
confirmation_instructions: | |
subject: 'Instruções para confirmação de conta' | |
reset_password_instructions: | |
subject: 'Instruções para reinicialização de senha' | |
unlock_instructions: | |
subject: 'Instruções para desbloqueio de conta' | |
} | |
end | |
create_file 'app/helpers/devise_helper.rb' do | |
%q{module DeviseHelper | |
def devise_error_messages!(user=nil) | |
user_resource = user.present? ? user : resource | |
return "" if user_resource.errors.empty? | |
messages = user_resource.errors.full_messages.map { |msg| content_tag(:li, msg) }.join | |
sentence = I18n.t("errors.messages.not_saved", | |
:count => user_resource.errors.count, | |
:resource => user_resource.class.model_name.human.downcase) | |
html = <<-HTML | |
<div id="error_explanation"> | |
<h2>#{sentence}</h2> | |
<ul>#{messages}</ul> | |
</div> | |
HTML | |
html.html_safe | |
end | |
def resource_name | |
:user | |
end | |
def resource | |
@resource ||= User.new | |
end | |
def devise_mapping | |
@devise_mapping ||= Devise.mappings[:user] | |
end | |
end | |
} | |
end | |
remove_file 'public/index.html' | |
remove_file 'app/assets/images/rails.png' | |
remove_file 'app/assets/javascripts/application.js' | |
remove_file 'app/assets/stylesheets/application.css' | |
create_file 'app/assets/javascripts/application.coffee' do | |
%Q{#= require jquery | |
#= require jquery_ujs | |
} | |
end | |
create_file 'app/assets/stylesheets/application.sass' do | |
%Q{@charset "utf-8" | |
@import 'compass' | |
} | |
end | |
run('bundle') | |
generate('controller','home index') | |
route("root to: 'home#index'") | |
generate('controller','frontend index') | |
route("get 'frontend(/index)' => 'frontend#index'") | |
route("get 'frontend/:template' => 'frontend#show'") | |
rake("db:create") | |
git :init | |
git add: "-A" | |
git commit: "-m 'First commit'" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Atualizei o template com várias coisas que já utilizamos por padrão. Atualizei as gems, algumas configs, template e partials.
https://gist.github.com/renatocarvalho/5147512