Skip to content

Instantly share code, notes, and snippets.

@julioprotzek
Created October 8, 2012 14:39
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save julioprotzek/3852875 to your computer and use it in GitHub Desktop.
Save julioprotzek/3852875 to your computer and use it in GitHub Desktop.
Startaê Bootstrap
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: "&laquo; Primeira"
last: "Última &raquo;"
previous: "&lsaquo; Anterior"
next: "Próxima &rsaquo;"
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'"
@renatocarvalho
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment