Skip to content

Instantly share code, notes, and snippets.

@welingtonsampaio
Last active December 16, 2015 12:38
Show Gist options
  • Save welingtonsampaio/5435594 to your computer and use it in GitHub Desktop.
Save welingtonsampaio/5435594 to your computer and use it in GitHub Desktop.
Melhores práticas para criar uma Aplicação Rails (zaez)

Melhores práticas para criar uma Aplicação Rails na ZAEZ

Definindo quais os padroes para se criar uma aplicação Rails na ZAEZ, ja configurando o ambiente para receber o testes de BDD utilizados na empresa.

Criando a aplicação no terminal

rails new app-name --skip-test-unit

Adicionar ao arquivo Gemfile as seguintes gems conforme a necessidade:

Gem para sistema de Login

gem "devise"

Gem para tratamento de níveis de acesso

gem "cancan", ">= 1.6.9"

Gem para trabalhar com strings de visualização no html

gem "RedCloth"

Gem para trabalhar com paginações

gem "will_paginate", "~> 3.0.0"

Gem para automatização de backups

gem "backup" , "3.0.25"

Gem para trabalhar com retorno e views em json

gem "rabl"

Gem para gerenciamento do cron do unix

gem "fog",       "~> 1.4.0"
gem "whenever" , ">= 0.7.3"

Gem para manipulação de arquivos PDFs

gem "prawn"

Gem para trabalhar com recursos da amazon aws

gem "aws-sdk",       ">= 1.8.5"

Gem para envio de email através do SES da amazon

gem "aws-ses"

Para o grupo de assets acrescentar as seguintes gems:

Gem para trabalhar com sass no rails

gem "sass-rails",   "~> 3.2.3"

Gem para trabalhar com coffeescript no rails

gem "coffee-rails",   "~> 3.2.1"

Gem para compactação dos arquivos de javascripts

gem "uglifier", ">= 1.0.3"

Gem para adicionar os recursos do Lol Framework

gem "lol_framework"

Para o grupo de development adicione as seguintes gems:

Gem utilizada para colocar o servidor de produção para rodar e envio do conteudo para deploy

gem "capistrano"

Gem para backup e restauração dos dados do banco

gem "yaml_db"

Gem que modifica a aparência da pagina de erro do rails

gem "better_errors", ">= 0.7.2"

Gem para excluir as linhas de output no console de compilação dos assets e envio dos mesmos, enquanto o servidor de dev esta rodando

gem "quiet_assets",  ">= 1.0.2"

Gem para debug no browser

gem "binding_of_caller"

Para o grupo de development e test adicione as seguintes gems:

Gem de utilização do banco de dados

gem "sqlite3"

Gem para testes de browser

gem "capybara",">= 2.0.3"

Gem para teste automatico

gem "ZenTest",        "~> 4.4.2"
gem "autotest-rails", "~> 4.1.0"

Gem para notificação dos testes executados

gem "autotest-growl",   ">= 0.2.16"
gem "autotest-fsevent", ">= 0.2.8"

Gem para criação de fakes nos testes

gem "factory_girl_rails", ">= 4.2.0"

Para o grupo de production adicione as seguintes gems:

Gem do servidor de produção

gem "unicorn"

Gem do banco de dados

gem "mysql2"

O arquivo final com todas as gems selecionadas ficará assim:

gem "devise"
gem "cancan", ">= 1.6.9"
gem "RedCloth"
gem "will_paginate", "~> 3.0.0"
gem "backup" , "3.0.25"
gem "rabl"
gem "fog",       "~> 1.4.0"
gem "whenever" , ">= 0.7.3"
gem "prawn"
gem "aws-sdk", ">= 1.8.5"
gem "aws-ses"

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier',     '>= 1.0.3'
  gem 'lol-framework'
end


group :development do
  gem 'capistrano'
  gem 'yaml_db'
  gem "better_errors", ">= 0.7.2"
  gem "quiet_assets",  ">= 1.0.2"
  gem "binding_of_caller"
end

group :test, :development do
  gem 'sqlite3'
  gem "capybara",         ">= 2.0.3"
  gem "ZenTest",          "~> 4.9.1"
  gem "autotest-growl",   ">= 0.2.16"
  gem "autotest-fsevent", ">= 0.2.8"
  gem "autotest-rails",   "~> 4.1.0"
  gem "test_notifier",    '>= 1.0.1'
end

group :production do
  gem 'unicorn'
end

Configurando o arquivo de .gitignore

Adicionar ao ".gitignore"

# Excluindo arquivos do RubyMine
/.idea

Configurando o ambiente de testes

No terminal execute dentro da pasta de sua aplicacão

rails g rspec:install

Crie e adicione ao arquivo .autotest o seguinte conteúdo:

require 'autotest/fsevent'
require 'autotest/growl'

Autotest.add_discovery { "rspec2" }

Autotest.add_hook :initialize do |autotest|
  %w{.git .DS_Store ._* vendor tmp}.each { |exception| autotest.add_exception(exception) }
  autotest.add_mapping(%r{^lib/.*\.rb$}) {|f, _|
    Dir['spec/**/*_spec.rb']
  }
  false
end

Troque todo o conteúdo do arquivo .rspec por:

--color
--fail-fast
--format documentation
#--format progress
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment