O Framework
Introdução
● David Heinemeier Hansson (DHH) ● 2004
● MVC ● Restful
● Meta-Framework
● Convention over configuration ● Rails 3.1
Ferramentas
● Rake
● Bundler
● Capistrano ● Rspec
Instalação
Criação do Projeto
[diego@bahamut ]~ $ rails new snippets #criacao projeto
[diego@bahamut ]~ $ gem install bundler
[diego@bahamut ]~ $ bundle install # instala dependencias
Estrutura da Aplicação
● app/ ● config/ ● config.ru ● db/ ● doc/ ● Gemfile ● lib/ ● log/ ● public/ ● Rakefile ● README ● script/ ● test/ ● tmp/ ● vendor/Ambientes
● Padrões ● Development ● Test ● Production ● config/environments/ ● RAILS_ENVYet Another Markup Language
● Usado para arquivos de configuração
● Identação utilizado para delimitar estruturas ● Suporta lista e arrays associativos
config – database.yml
● Arquivo de configuração do banco de dados ● rake db:create ● Exemplo: development: adapter: mysql database: cm_development timeout: 5000 host: localhost username: root password: root
Gemfile
● Arquivo onde especificamos as gems que
serão utilizadas no projeto.
● Comando `bundle install` instala as gems e
suas dependências. ● Exemplo: source 'http://rubygems.org' gem 'rails', '3.0.6' gem 'sqlite3' gem 'capistrano-ext'
group :development, :test do gem 'ruby-debug'
gem 'rspec-rails' end
Model (ActiveRecord::Base)
● app/models
● rails generate model snippet title:string
code:text language:string
● Alguns métodos
● find
● save
Migrations
● Contém informações da criação da tabela
● Nome da tabela é o plural do nome do model ● Ficam em db/migrations
● Executadas com o comando `rake db:migrate` ● rake db:rollback
Exemplo de Migrate
class CreateSnippets < ActiveRecord::Migration def self.up create_table :snippets do |t| t.string :title t.text :code t.string :language t.timestamps end end def self.down
Rspec
● Framework para Behaviour Development
Driven
● Muito utilizado no mundo Rails
● Tenta trazer a linguagem natural para criação
dos testes
Model - validações
● validates_presence_of ● validates_format_of
● validates_uniqueness_of ● ...
Rest
● Protocolo cliente/servidor sem estado ● Conjunto de operações bem definidas ● Identificadores únicos para os recursos
● Uso de hipermídia para representação de
Routes (ActionController)
● Config/routes.rb
● Comando `rake routes` lista rotas ● resources :<nome_da_tabela>
Controllers - ActionController
● app/controllers
● ApplicationController
● Cada action é um método da classe ● Fat models, skinny controllers
● render
Views - ActionView
● app/views
● app/views/layout
● Por padrão cada template recebe o nome da
action
● Partials
● Nome do aquivo começa com “_”
ERB - ActionView
● <% codigo %> ● <%= codigo %>
Helpers
● app/helpers
● Manter código limpo nas views ● Exemplos
● link_to
● image_tag
DRY
● Don't Repeat Yourself
● Uso de partials para reuso de template ● before_filter e after_filter nos controllers
Apache - Passenger
● Ruby Enterprise Edition (REE)
● passenger-install-apache2-module ● http.conf
LoadModule passenger_module
/opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/passenger-3.0.8/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise-1.8.7-2011.03/lib/ruby/gems/1.8/gems/passenger-3.0.8
Apache - Aplicação
● RailsEnv
● DocumentRoot
● Seu valor deve apontar para o diretório public da
Deploy - Capistrano
● capify
● cap deploy
● config/deploy.rb ● capistrano-ext
Deploy - Heroku
● heroku create
● heroku keys:add path/to/key.pub ● Git push heroku master