O documento apresenta uma introdução ao framework Ruby on Rails, incluindo sua história, estrutura MVC, convenções REST, instalação, criação de projetos, operações básicas com scaffold e validações.
4. História
Ruby Criada em 1993 por Yukihiro “Matz” Matsumoto
Somente em 1998 Ruby começou a aparecer no ocidente
atraves de Dave Thomas e Andy Hunt
Em 2003, o framework Rails começou a ser escrito pelo
Dinamarques David Hansson
Em 2004 Rails foi publicado
Em 2010 lançamento do Rails 3.0
5. Um pouco de Ruby
5.times { print ‚Blaaa‛ }
> Cinco vezes imprima “Blaaa”
exit unless ‚flisol‛.includes? ‚iso‛
> Termine a menos que “flisol” contenha(ou inclua) a palavra
“iso”
[‘fred’, ‘guilherme’, ‘pedro’].each do |pessoa|
puts pessoa.capitalize
end
> Com as palavras „fred‟, „guilherme‟ e „pedro‟: pegue cada
pessoa e a imprima com a primeira letra maiúscula
7. Convenções - REST
Exibir/Buscar Criar Alterar Remover
REST/HTTP GET POST PUT DELETE
Rails (actions) show create update destroy
SQL select insert update delete
8. Instalação
MAC OSX & UBUNTU
http://github.com/danielvlopes/ruby-unix/
WINDOWS
http://railsinstaller.org/
9. Iniciando um Projeto
# Criando uma aplicação
rails new flisol -d postgresql
cd flisol/
# Inicia o servidor
rails server
# URL local da aplicação
http://localhost:3000/
10. Estrutura de Pastas
Arquivo Função
config/database.yml Contém informações para conexão
com o banco de dados
config/routes.rb Rotas das requisições HTTP
app/controllers Arquivos escritos em Ruby da
camada de controle
app/helpers Classes que facilitam algumas tarefas
da view
app/models Arquivos escritos em Ruby da
camada de modelo
app/views Contém uma pasta pra cada controller
que sua aplicação tiver
db/migrate Arquivos de migração, usados para
atualizar seu Banco de Dados
11. Scaffold
# Gerando modelo, controle e visões
rails generate scaffold user first_name:string
last_name:string
db/migrate/20130426210526_create_users.rb
# Cria Banco de Dados
rake db:create
# Atualiza o Banco para versão mais nova
rake db:migrate
# Criando usuário via console
User.create first_name: “Maria”, last_name: “Silva”
13. Operações Básicas
# Quantidade de registros de usuários
User.count
# Primeiro registro de usuário
u = User.first
# Atributo first_name
u.first_name
# Método full_name
u.full_name
# Atualizar um atributo
u.update_attribute(:last_name, “Ultimo Nome”)
14. Validações
# Validando a presença de :first_name
validates :first_name, :presence => true
# => true
User.create(:first_name => “Jaum”).valid?
# => false
User.create(:first_name => nil).valid?
# Mostrando erros
u = User.create
u.errors # => {:first_name=>[“can’t be blank”]}
u.save # => false
u.save! # => ActiveRecord::RecordInvalid:
Validation failed: First name can’t be blank
- Alguemaquijáprogramaemalgumalinguagem?- Conhece Ruby, conhece Rails?- Praquemconheceessapalestraébemintrodutóriamesmo…- Trabalhona MDL Sistemas, e tambémsouinicianteem Ruby, conheço e trabalho com Ruby a menos de 1 ano
Existe um eventochamadoRubyConfemSãoPauloqueérealizadotodoano e no anopassado a nossaequipefoiaté o evento- Essasloucasaitrabalhamcomigo =)
- O eventoépatrocinadopelaLocaweb…. Maisseilah, tem gentequenãogosta da Locaweb…. Eugosto =)
Então, euvoucontar um pouco da história do Ruby pravocês…Criadaem 1993 por Yukihiro Matsumoto, surgiu no ocidenteem 98 atraves de Dave Thomas e Andy HuntEm 2003 o framework Rails começou a serescritopelodinamarques David Hansson e somenteem 2004 foipublicadasuaprimeiraversãoEm 2010 foi um grandemarcoquandosurgiu o Rails 3.0
# Testarcódigos no consoleA leitura do Ruby émuitoclara, como nesses exemplos:CincovezesimpraBlaaaTermine a menosque “flisol” contenha (ouinclua) a palavra “iso”Com as palavras “fred”,”guilherme” e “pedro”: peguecadapessoa e a imprima com a primeiraletramaiúscula
Um poucosobre o MVC do RailsO Browser fazumarequisiçãopara o WebServerQuebusca no arquivo de rotas o quefazer com a URL requeridaE então o Dispatcher encontra o controller.O controller solicita/ounão, aoumachamada no model, quepodefazerumarequisiçãoaobanco de dados e retornaosvaloressolicitadosO controller renderiza a View e respondeaoWebServerqueentrega a requisiçãofeitapelo Browser
Um pouco de Convenção RESTExistemosmétodos de requisições GET, POST, PUT e DELETEA convenção SUGERE queusemos GET para o método show no rails, POST para create, PUT para update e DELETE para destroyIssonãoquerdizerquevocêé obrigado a obedeceressa “sugestão”A ação show, seria o select do SQL, create seria o insert, update o proprio update e o destroy o delete
Nãoqueroperdermuito tempo ensinandocomoinstalar Ruby ou o Rails, entãodeixeiessesdois links aquiO repositório do danielvlopesestásempreatualizado com um dos maisfáceispasso-a-passosobreinstalação de Ruby emambiente UnixE para windows, vcpodebaixar o instaladoratravés do site railsinstaller.orgÉmuitosimpesl =)
Vamosiniciarcriando um projeto do RailsNo comando RAILS NEW, passamos o nome do projetoquequeremosiniciar o desenvolvimentoOpcionalmenteeupassei a opção “-d postgresql” jáinformando a qualbanco de dados euireiusarAbrimos a basta do projeto e entãopodemosexecutar o nossoservidorpratesteA URL de acessoserialocalhostpassando a porta 3000 (executaroscomandos no terminal)
Vamosfalar um poucosobre a estrutura de pastas queforamgeradasOArquivoconfig/database.yml, contéminformaçõesparaconexão com o banco de dadosConfig/routes.rbguarda as rotas das requisições HTTPApp/controllers arquivosescritosem Ruby da camada de controleApp/helpers classes quefacilitamalgumastarefas da viewApp/models arquivosescritosem Ruby da camade de modeloounegócioApp/views contémuma pasta pracada controller quesuaaplicaçãotiverDb/migrate arquivos de migração, usadospraatualizarseubanco de dados
Falando um poucodessafunçãomágica do rails, o SCAFFOLDNãoé a forma recomendadapra se fazerumaaplicação, maispraajudaragentenessaapresentaçãoireiusarele e explicaroqueelefazNóspassamos a função rails generate scaffolg, logo dizemos o nome do model, no singular e de preferencia ingles, e osatributoscomofirst_name do tipo string e last_name do tipo stringUm dos arquivosgeradopelo scaffold foiumamigraçãopara o banco de dados, Primeiramentenósprecisamoscriar o banco de dados com “rake db:create”E executar a função “rake db:mgirate” paraexecutarnossoarquivo de migraçãocriadopeloscaffolgAgora abrimos o console e vamoscriar um novo usuário de forma manual
O Scaffold adicionou no nossoarquivo de rotas, umachamadapara o controller :usersNousers_controllerencontramososmétodos index, show, new, edit, create, update e destroyNo método index, vemosqueeletentatrazerTodososusuários e atribuir o resultadopraumavariável @users e responder no formato html oujsonEssavariavel @users tem um arroba “@” nafrente, quepermiteseracessivelnacamada de visãoEm views/users/index.html.erbdiz “peguecadausuário” e imprimaseufirst_name e last_name. Tambémémostrado links para “Exibir”, “Editar” e DeletarVamosabrir o model de usuário e vemosque o model estáliberandoacessoaosatributos :first_name e :last_nameVamoscriar um métodoaquichamadofull_nameE vamostestarele no show.html.erb
Voltandoao console, vamosfalar um poucosobreoperaçõesbásicas no ModelA partir do momentoqueseuobjetoherdacaracterísticas do ActiveRecord, elevemcheio de métodosprafacilitarsuavida no desenvolvimentoContando a quantidade de registros de usuários com User.countTrazendo o primeiroregistro de usuário e atribuindoele a variavel “u”Pegandoatributofirst_name de “u”Acessando o métodofull_name de “u”Atualizando um atributo com update_attribute
Vamosvalidar a presença de :first_name,issoquerdizerqueesseatributodeveráterseupreenchimentoobrigatório.Abrindo o model de User vamosadicionar a linha do validatesNo console vamostestar a inclusão do usuárioJãum e verificar se o registroévalidoAgora testaremos um registroinvalidoAinda no console, conseguimosteracessoaoserros da nossaaplicação com o método errorsPodemosanalisar a se o objetopodeser salvo com .saveE podemosretornar um erro com .save! (beng)
Queroapresentartambémoutrasformas de validaratributos no modelValidando a presende de :nome e :ano, vocêpodevalidarmais de um atributonamesmalinhaValidando ANO comonumericoValidandoinclusao de ANO entre 2009 a 2099Validando o tamanho de nome com no mínimo 4 caracteresE validando um format with expressão regular
A comunidade Ruby possuiumacomunidadebastanteativa de programadoresquecompartilhamcódigo. Para facilitaressecompartilhamento, a comunidade Ruby inventou as chamadasRubyBems, ou “GEMs”. Vocêpodeencontra-las no rubygems.orgUm exemplo de gem seria a simple_form, queauxilianacriação de formulários. Seucódigopodeseracessado no githubComo instalaruma GEM, abra o arquivoGemfile, e inclua gem passando o nome da gem entre aspas, opdionalmentevocêpodepassar a versão da gem quequerusarLogo, no terminal digitamos bundle install paraatualizar as gems
Tambémquerolembrarquemantemosumacomunidade no facebook, o ruby on cerradoE deixaralguns links paraestudosobre Ruby e RailsPerguntas?
Esperoqueiniciem um estudosobre rails e quetenhamgostadodessaapresentação.Obrigado!