Académique Documents
Professionnel Documents
Culture Documents
com
LU: 30-01-12
RubyonRails
@marvinlemos | @zerokol
MiniCurso:
SOBREOPROFESSOR
MarcusVinciusdeSousaLemos
SOBREOPROFESSOR
AntonioJosdeOliveiraAlves
OBJETIVOS
OqueRubye oqueRails?
OqueoRuby
#mais_poderosa_que_PERL_e_mais_orientada_a_objeto_que_PYTHON
Yukihiro"Matz"Matsumoto 12
10 @yukihiro_matz 8 6 4 2 0
#1995
Row 1 Row 2 Row 3 Row 4
#Japo
#script
#12_ling_de prog_+_pop_do_mundo
OqueoRuby
Interpretada Multiparadigma
#programao_funcional#orientada_a_objetos#imperativa#reflexiva
Tipagemdinmicaeforte
OqueoRuby
OqueoRails
#meta-framework
@dhh
DavidHeinemeierHansson
#open_source
#2004 #MVC
#framework
OqueoRails
Pginaoficial:rubyonrails.org
Mas,MVC?!
OqueoMVC
TrygveReenskaug
#smalltalk #1979
OqueoMVC
Modelviewcontroller(MVC)
Eagora, oquefalta?
ConfigurarandooAmbiente
http://www.zerokol.com/2012/01/configurando-ambiente-ruby-on-rails-32.html http://www.geeksbr.com/2010/03/instalando-o-ruby-on-rails-no-windows.html
Enfim, RubyonRail!!!
RubyonRails
MinhaprimeiraAPP
Provadeconceito(Aula)Escola
Sistema Web para gerenciar os professores cursos e alunos de uma determinada escola, cada curso deve ter um professor e pode aceitar at 20 alunos por curso. Todos os cursos pertencem auma categoria.Osistemadevepossuirumareainterna onde o administrador cadastrar os cursos e professores.
RubyonRails
MinhaprimeiraAPP
Provadeconceito(Casa)Locadora
Sistema Web para gerenciar uma locadora de jogos de videogame. Os consoles dividemse em categorias, cada console pode ter varios jogos, a vriosjogosdecadajogo,osistemadevecontrolara disponibilidadedelocao.Htambmumcadastro deusuriosassociados,quedeveminformarsempre um estado e cidadade, exite a possibilidade de ver um histrico de locao de cada usurio. Um administrador deve cadastrar os consoles, games, estadosecidades.
RubyonRails
MinhaprimeiraAPP >railsnewminha_app
Estruturadepastas
>railsserver
ServidordeTeste
webrick
RubyonRails
MinhaprimeiraAPP
Estruturadepastas
app
RubyonRails
MinhaprimeiraAPP
Estruturadepastas
config
Arquivos
RubyonRails
MinhaprimeiraAPP
Estruturadepastas
db
migrate
Arquivos
seeds.rb
PastaPUBLIC
Eulhesapresento,
GIT!
OqueoGIT
#Linus_Torvalds
OqueoGIT
InstalandoeconfigurandooGIT
OqueoGIT
CadastrandoseaoGITHUB.com
Cadastrarseemhttps://github.com/
RubyonRails
CRUD
QuatrooperaesbsicasCRUD
RubyonRails
GENERATORSGeradoresdeCdigo >railsgenerateou>railsdestroy assets controller generator helper integration_test mailer migration model observer performance_test resource scaffold scaffold_controller session_migration task
RubyonRails
GeradorSCAFFOLD CriandoModels,ViewseControllers >railsgeneratescaffold
ModelTipossuportados
RubyonRails
GeradorSCAFFOLD
CriandoModelos,ViseseControladores
ArquivodeControle
ArquivodeViso
ArquivodeModelo
Arquivoconfig/routes.rb
RubyonRails
Migrates
MigrateMetodosdeMigrao
http://guides.rubyonrails.org/migrations.html
Operaedemigrao
RubyonRails
Migrates Tiposespeciais
MigrandoobancocomRake
Impedindoacriaodecreated_ateupdated_at
Adicionaraconfig/application.rb config.active_record.timestamped_migrations=false
RubyonRails
Routes
resourcesRoteamentoPadro
Criarotasparaindex,show,new,edit,create,updateedestroy UsaosmetodosGET,POST,PUTeDELETE
7requestsdiferentes
Caminhos
resources!=resource
RubyonRails
Routes Namespaces
namespace:admindo resources:posts end
NestedResources
resources:magazinesdo resources:ads end
Seguimentos
post,puts,get,delete match
RubyonRails
Routes Seguimentosestticos
matchcurso_especial=>courses#special
Seguimentosdinmicos
matchaluno/:id=>students#get_aluno
Nomeandorotasparagerarcaminhos
matchaluno/:id=>students#get_aluno,:as=>:aluno
Root
root:to=>'pages#main'
ExplorandocomRake >rakeroutes
RubyonRails
ModelAssociaes
Tiposdeassociao
belongs_to has_one
has_one:through
has_many
has_many:through
Opesdeassociao
:dependent=>:nullify|:destroy|:update :foreign_key
http://guides.rubyonrails.org/association_basics.html
RubyonRails
ModelValidaes
Tiposdevalidaes
validates_associated validates:email,OPO
http://guides.rubyonrails.org/active_record_validations_callbacks.html
RubyonRails
ModelCallbacks Callbacks
before_create after_create before_updade after_update before_destroy after_destroy before_add after_add before_remove after_remove
http://guides.rubyonrails.org/active_record_validations_callbacks.html
RubyonRails
PopulandocomSEEDGeradoresdeMigrations,Controllers
db/schema.rb GeradordeMigraes
>railsgeneratecontroller
GeradordeControllers
>railsgeneratemigration
RubyonRails
ComandosActiveRecord
SQLPuro
ActiveRecord::Base.connection.execute(full_query)
Transao
Item.transactiondo i=Item.lock.first i.name='Jones' i.save end
MigrardeSGBD
Configurardatabase.yml
http://guides.rubyonrails.org/active_record_querying.html
RubyonRails
Internacionalizao
Intenacionalizaocomi18n
config/application.rb
config.i18n.default_locale="ptBR"
Pastaconfig/locales
https://github.com/svenfuchs/railsi18n/blob/master/rails/locale/ptBR.yml
Ptbr ?locale=en
http://guias.rubyonrails.com.br/i18n.html
RubyonRails
HellperseLayout
Hellpers Layout
RubyonRails
Deploy Deploy==PorsuaaplicaoemProduo
Passo1:CadastrarssenoHeroku
http://heroku.com
Passo2:LeroPassoaPassodaHeroku
http://devcenter.heroku.com/articles/quickstart
Passo3:FazeroPasso4daHerokuparaRails
Continuanoprximoslide
RubyonRails
Deploy
FacilidadesdaHeroku
Noprecisacompilarosassets Noprecisaconfigurarodatabase.yml
RubyonRails
Deploy
ReinstalararquivosGIT
>gitinit >gitadd. >gitcommitm"primeirocommit"
CriarAPPnaHeroku
>herokucreatemy_appstackcedar
DeploynaHerokuAUTOMTICOnogitpush
>gitpushherokumaster
RubyonRails
Deploy
ComandarAPPRemotamente
>sudoherokurunCOMANDOSQUAISQUER Ex:.>sudoherokurunrakedb:migrate
Comandarteis
>sudoherokukeys:add~/.ssh/id_rsa.pub >sudoherokups >herokulogs
MenuHEROKU
MyApps ServidorGit
Trabalhandocom
GEMs.
RubyonRails
GemDeviseControledeAutenticao
ControledeAutenticaoDevise
Addemapp/views/layouts/application.html.erb
<pclass="notice"><%=notice%></p> <pclass="alert"><%=alert%></p>
RubyonRails
GemDeviseControledeAutenticao
Addemconfig/application.rbImportanteparaoHEROKU config.assets.initialize_on_precompile=false
Addlinhaabaixoaoscontrollersparanegaracesso,casooModelsejauser before_filter:authenticate_user!
OquefoiadicionadopeloDEVISE
Mtodosteis
RubyonRails
GemDeclarativeAuthorizationAutorizao
ControledeAutorizaoDeclarativeAuthorization
RubyonRails
GemDeclarativeAuthorizationAutorizao
CriarumModelchamadoRoles >railsgeneratemodelrolename:stringdescription:string
Addrole_idemUSERS >railsgeneratemigrationAddRoleIdToUsers
add_column(:users,:role_id,:integer)
RelacionandoUserseRoles
EmUSERS.rbadd:belongs_to:role EmROLES.rbadd:has_many:users
RubyonRails
GemDeclarativeAuthorizationAutorizao
Addaapp/controllers/applicarion_controller.rb
RubyonRails
GemDeclarativeAuthorizationAutorizao
Addaapp/models/user.rb ##############################CALLBACK before_create:setting_user_default defsetting_user_default self.role=Role.find(:first,:conditions=>{:name=>'admin'}) end ##############################DECLARATIVEAUTHORIZATION defrole_symbols [role.name.underscore.to_sym] end
RubyonRails
GemDeclarativeAuthorizationAutorizao
Mtodosteis
Controllers
filter_resource_access filter_access_to:allPs:.PodemserosnomesdasActions
using_access_control
Obs:.nousarosmetodosdoDAcomosdoDEVISE
REFERNCIAS
http://gitref.org/