LU: Oficinas de Verão UESPI Mini Curso: Ruby

Documentos relacionados
O Framework Rails. Diego Rubin

Desenvolvimento de Aplicações Web com Ruby on Rails

Sequelize. O que é? O que faz? Como se cria?

TUTORIAL GIT Victor Breder Comp-19 Março de 2017

Desenvolvimento de Aplicações Web com Ruby on Rails

Desenvolvimento de Aplicações Web com Ruby on Rails

Git. Leonardo Gresta Paulino Murta

Ruby on Rails Avançado

Ruby on Rails Intermediário

José cria um repositório vazio no Bitbucket ( José cria no seu computador de desenvolvimento um repositório local

Programação Web Aula 8 - Rails (Introdução)

Primeiros passos com no trabalho com Git

CONTEÚDO PROGRAMÁTICO

%w(akita On Rails) * Rolling with Rails O Primeiro...

git git Utilização básica no controle de versão de pacotes João Eriberto Mota Filho Utilização básica no controle de versão de pacotes

Grails. Desenvolvimento Java Açucarado

Entendendo Rails. Fabio Akita Surgeworks Brazil Rails Practice Manager

Avaliação de Frameworks de Produtividade para aplicações CRUD

Entre os VCS s, podemos sitar o Mercurial, Subversion, CVS, Git dentre outros. E é do Git que vamos falar hoje.

Criação de uma aplicação Web ASP.NET MVC 4

Curso de git. Aula de outubro de 2018

Desenvolvimento Web II

Objetivo. Introdução; História; Conceito; SVN; Instalação; Prática através de exercícios.

Oficina de django. 1º Dia - Introdução à ferramenta

Globalcode Open4education. Trilha Ruby. Sergio Lima Ruby Developer

1. Abra o terminal e instale o Git, para que assim você possa obter o código fonte do programa e suas atualizações.

Tutorial Básico. Instalando e testando o Ruby on Rails no Windows

1º passo: Instalando a rvm.

Quem sou eu? Daniel Coelho de Andrade. Graduando em Engenharia de Computação - UEFS. Membro da Empresa Júnior de Engenharia de Computação da UEFS

Luiz Arão Araújo Carvalho Bacharel em Ciência da Computação Desenvolvedor RedeSat-TO

BOPE Game: Um sistema para gamificação de processos de software GEOVANA DA CONCEIÇÃO GONÇALVES

Laravel Framework PHP Carga horária: 40 horas

[IF977] Engenharia de Software. Prof. Vinicius Cardoso Garcia :: assertlab.com

Desenvolvimento de Aplicações Web com Ruby on Rails

Linguagens de Programação

SQL CREATE DATABASE. MySQL, SQL Server, Access, Oracle, Sybase, DB2, e outras base de dados utilizam o SQL.

Integrated Government Resources Planning IGRP Open Source. Como importar e contribuir - GitHub. Núcleo Operacional da Sociedade de Informação

Introdução ao Zend Framework 2

Ruby on Rails. Aprendizado evolutivo do Ruby até o desenvolvimento de aplicações em Rails

Git e Pais

Uma Introdução aos Sistemas de Controle de Versão Distribuídos. Leonardo Gresta Paulino Murta

UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ DEPARTAMENTO ACADÊMICO DE INFORMÁTICA CURSO DE BACHARELADO EM SISTEMAS DE INFORMAÇÃO

Miguel Grinberg. Novatec

DESBRAVANDO O GIT E O GITHUB

Weby - O Gerenciador de Conteúdo Web para IFES

C o m p u t a ç ã o M ó v e l Brayan Neves

modelos, bancos de dados e active record

Esse é um post para mostrar os comandos básicos para administrar containers em docker.

Projeto de Sistemas para Internet

Lidando com Armazenamento de Dados

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Tutorial para Instalação do dotproject

Iniciando Git e GitHub. Univali, 2017 Benjamin Mezger

Laboratório 3 Controllers

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

osticket Aprenda como instalar no Ubuntu

Envio de alertas por utilizando SMTP autenticado

A linguagem SQL

Introdução à Engenharia ENG1000

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS - APLICATIVOS HÍBRIDOS. Prof. Angelo Augusto Frozza, M.Sc.

BANCO DE DADOS GERENCIAL 1 A U L A 2

Aplicação MVC com Class Library

Sophos SafeGuard Enterprise 8.0.1

Laboratório FTP. Francisco Edigleison da Silva Barbosa Professor: Kelvin Lopes Dias

Exemplos e comandos úteis de git

Controle de Versões com o Git

Sistema Gerador de Anúncios para Compra e Venda On-line. Leandro de Oliveira ol.leandro@gmail.com

Tutorial Ambiente, instalação e começando um novo projeto Django

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Controle de Versão com GIT

Git e contribuição para projetos Open Source. Bruno Orlandi

Instalando Apache Solr no Mac OSX

Aula 08 Gerador de Relatórios Squid - SARG

Configuração. Ubuntu Server Sistemas Distribuídos Engenharia da Computação

Para criar um projeto no ambiente eclipse utiliza-se o menu File, New e Project como ilustra a Figura 1.

GLPI Gestão total e gratuita do seu parque informático

Zabbix 3 Instalação INSTALAÇÃO

Administração de Redes Linux

C# (C Sharp) - ASP.NET MVC Avançado

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

Rails Mais Veloz. começando. Quer fazer o seu desenvolvimento de aplicação web alçar voo? Então você precisa conhecer o Rails.

Instalação Wiser. Sistema Operacional Linux Red Hat

Controlo de versões com GIT

Casa do Código Livros para o programador Rua Vergueiro, º andar Vila Mariana São Paulo SP Brasil

Professor Leonardo Larback

O Desenvolvimento de um Gerenciador de Conteúdo Web Livre

Instalando o software de gerencia (ANM2000)

Arquitetura em Camadas

[versão para impressão] Link original: comp=24763 Conhecendo o PL/SQL

A integração da versão de ACS 5.4 com Motorola voa (AP) o exemplo de configuração 5.X

Configurar ISE 2.0: Autenticação TACACS+ e comando authorization IO baseados na membrasia do clube AD

C A P I T U L O 10 F U N Ç Õ E S I N T E R N A S P H P P A R A B A N C O D E D A D O S

Publicar uma aplicação ASP.NET Core com base de dados SqlServer no Azure usando Visual Studio e um perfil para publicação (publish profile)

PySIGEP Documentation

Ruby on Rails aplicado às práticas de Banco de Dados Ágeis

Guia de Instalação TSS TOTVS SERVICE SOA

Transcrição:

http://marvinlemos.net http://zerokol.com LU: 30-01-12 Oficinas de Verão UESPI 2012 Mini Curso: Ruby on Rails @marvinlemos @zerokol

SOBRE O PROFESSOR Marcus Vinícius de Sousa Lemos Mestre em Informática Aplicada pela Univer. de Fortaleza Unifor Professor da Universidade Estadual do Piauí Uespi Professor da Faculdade de Tecnologia de Teresina CET Auditor Fiscal de Controle Externo (Informática) TCE/PI marvinlemos@gmail.com http://www.marvinlemos.net @marvinlemos

SOBRE O PROFESSOR Antonio José de Oliveira Alves Bacharel em Ciências da Computação UESPI Gerente de projetos na Empresa Cajuina Labs cajuinalabs.com.br aj.zerokol@gmail.com aj.alves@cajuinalabs.com.br http://zerokol.com @zerokol

OBJETIVOS Imersão na linguagem de programação Ruby Apresentar o framework Rails Levar os alunos do ZERO/Iniciante ao Básico Intermediário no Ruby on Rails

O que é Ruby e o que é Rails?

O que é o Ruby #mais_poderosa_que_perl_e_mais_orientada_a_objeto_que_python #Japão Yukihiro "Matz" Matsumoto #script 12 10 @yukihiro_matz 8 6 4 2 0 Row 1 Row 2 Row 3 Row 4 #1995 Column 1 Column 2 Column 3 #12º_ling_de prog_+_pop_do_mundo

O que é o Ruby Interpretada Multiparadigma #programação_funcional #orientada_a_objetos #imperativa #reflexiva Tipagem dinâmica e forte

O que é o Ruby gerenciamento de memória automático Última versão: 1.9.2 p290 (15 de julho de 2011) Influenciada por: Ada, CLU, Dylan, Eiffel, Lisp, Perl, Python, Scheme, Smalltalk Influenciou: Falcon, Fantom, Groovy, Ioke, Nu Página oficial www.ruby lang.org

O que é o Rails #meta-framework @dhh David Heinemeier Hansson #MVC #open_source #2004 #framework

O que é o Rails DRY Convention over configuration Escalabilidade Padrão de projeto MVC (Model View Controller) Versão estável: 3.2.1 (20 de janeiro de 2012) Página oficial: rubyonrails.org

Mas, MVC?!

O que é o MVC Trygve Reenskaug #smalltalk #1979

O que é o MVC Model view controller (MVC)

E agora, o que falta?

Configurarando o Ambiente Instalar e Configurar o Ruby Instalar e Configurar o RubyGems Instalar e Configurar o Rails Instalar e Configurar o DB de sua preferência. 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, Ruby on Rail!!!

Minha primeira APP Prova de conceito (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 a uma categoria. O sistema deve possuir uma área interna onde o administrador cadastrará os cursos e professores.

Minha primeira APP Prova de conceito (Casa) Locadora Sistema Web para gerenciar uma locadora de jogos de videogame. Os consoles dividem se em categorias, cada console pode ter varios jogos, a vários jogos de cada jogo, o sistema deve controlar a disponibilidade de locação. Há também um cadastro de usuários associados, que devem informar sempre um estado e cidadade, exite a possibilidade de ver um histórico de locação de cada usuário. Um administrador deve cadastrar os consoles, games, estados e cidades.

Minha primeira APP > rails new minha_app Estrutura de pastas app config db Public > rails server Servidor de Teste webrick

Minha primeira APP Estrutura de pastas app assets controllers helbers maillers models views

Minha primeira APP Estrutura de pastas config environments initializers locales Arquivos application.rb database.yml routes.rb

Minha primeira APP Estrutura de pastas db migrate Arquivos seeds.rb Pasta PUBLIC

Eu lhes apresento, GIT!

O que é o GIT #Linus_Torvalds Semelhante ao SVN, Mercurial... Versionador de Código GitHub Free GIT Server

O que é o GIT Instalando e configurando o GIT Material ótimo em: http://gitref.org/ Instalar o Git no Ubuntu > sudo apt get install git Após instalado, configurar Git > git config global user.name "AJ Alves" > git config global user.email zerokol@ymail.com Obs:. É de grande importância adicionar sua chave pública ao github, Veja como em: http://help.github.com/linux set up git/

O que é o GIT Cadastrando se ao GITHUB.com Cadastrar se em https://github.com/ Criar novo repositório Create new Repository Mover se para a pasta criada à ser versionada > cd escola Inicializar e enviar > git init > git add. > git commit m 'first commit' > git remote add origin git@github.com:... > git push origin master Ps:. Não há a necessidade de Criar o aquivo README touch README, ele já é gerado automaticamente pelo Rails.

CRUD Quatro operações básicas CRUD Create INSERT Read (Retrived) SELECT Update UPDATE Delete (Destroy) DELETE

GENERATORS Geradores de Código > rails generate ou > rails destroy assets controller generator helper integration_test mailer migration model observer performance_test resource scaffold scaffold_controller session_migration task

Gerador SCAFFOLD Criando Models, Views e Controllers > rails generate scaffold Model Tipos suportados :binary :boolean :date :datetime :decimal :float :integer :primary_key :string :text :time :timestamp

Gerador SCAFFOLD Criando Modelos, Visões e Controladores Arquivo de Controle Arquivo de Visão app/controllers ActionController::Base app/helpers app/views app/assets Arquivo de Modelo app/models ActiveRecord::Base db/migrate ActiveRecord::Migration Arquivo config/routes.rb

Migrates Migrate Metodos de Migração up Fazer down Desfazer change Fazer, Desfazer óbvio Operaçõe de migração add_column add_index create_table change_column change_table http://guides.rubyonrails.org/migrations.html remove_column remove_index drop_table rename_column Usar CHANGE Usar UP e DOWN

Migrates Tipos especiais timestamps references Migrando o banco com Rake > rake db:create > rake db:migrate > rake db:drop > rake db:rollback STEP=3 > rake db:reset > rake db:migrate:up VERSION= NUM Impedindo a criação de created_at e updated_at Adicionar a config/application.rb config.active_record.timestamped_migrations = false

Routes resources Roteamento Padrão Cria rotas para index, show, new, edit, create, update e destroy Usa os metodos GET, POST, PUT e DELETE 7 requests diferentes Caminhos photos_path returns /photos new_photo_path returns /photos/new edit_photo_path(:id) returns /photos/:id/edit photo_path(:id) returns /photos/:id resources!= resource http://guides.rubyonrails.org/routing.html

Routes Namespaces namespace :admin do resources :posts end Nested Resources resources :magazines do resources :ads end Seguimentos post, puts, get, delete match

Routes Seguimentos estáticos match curso_especial => courses#special Seguimentos dinâmicos match aluno/:id => students#get_aluno Nomeando rotas para gerar caminhos Root match aluno/:id => students#get_aluno, :as => :aluno root :to => 'pages#main' Explorando com Rake > rake routes

Model Associações Tipos de associação belongs_to has_one has_many has_one :through has_many :through Opções de associação :dependent => :nullify :destroy :update :foreign_key http://guides.rubyonrails.org/association_basics.html

Model Validações Tipos de validações validates_associated validates :email, OPÇÃO :confirmation => true :presence => true :format => { :with => /\A[a za Z]+\z/, :message => "Only letters allowed" } :length => { :minimum => 2, :maximum => 500 } :numericality => { :only_integer => true } :uniqueness => true http://guides.rubyonrails.org/active_record_validations_callbacks.html

Model Callbacks 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

Populando com SEED Geradores de Migrations, Controllers Seeds db/seeds.rb > rake db:seed > rake db:setup db/schema.rb Gerador de Migrações > rails generate controller Gerador de Controllers > rails generate migration

Comandos ActiveRecord Brincar com o IRB SQL Puro > rails console ActiveRecord Model.all() Model.find() ActiveRecord::Base.connection.execute(full_query) Transação Item.transaction do i = Item.lock.first :select => i.name = 'Jones' :conditions => :joins => :limit => :order => :group => i.save end Migrar de SGBD Configurar database.yml http://guides.rubyonrails.org/active_record_querying.html

Internacionalização Intenacionalização com i18n config/application.rb config.i18n.default_locale = "pt BR" Pasta config/locales https://github.com/svenfuchs/rails i18n/blob/master/rails/locale/pt BR.yml Pt br?locale=en http://guias.rubyonrails.com.br/i18n.html

Hellpers e Layout Hellpers Layout

Deploy Deploy == Por sua aplicação em Produção Passo 1: Cadastrars se no Heroku http://heroku.com Passo 2: Ler o Passo a Passo da Heroku http://devcenter.heroku.com/articles/quickstart Passo 3: Fazer o Passo 4 da Heroku para Rails Continua no próximo slide

Deploy Portar do Github para o Heroku > rm rf.git Configurar Gemfile group :development, :test do end gem 'sqlite3' group :production do gem 'thin' gem 'pg' Facilidades da Heroku Não precisa compilar os assets Não precisa configurar o database.yml end gem 'heroku'

Deploy Reinstalar arquivos GIT > git init > git add. > git commit m "primeiro commit" Criar APP na Heroku > heroku create my_app stack cedar Deploy na Heroku é AUTOMÁTICO no git push > git push heroku master

Deploy Comandar APP Remotamente > sudo heroku run COMANDOS QUAISQUER Ex:. > sudo heroku run rake db:migrate Comandar Úteis > sudo heroku keys:add ~/.ssh/id_rsa.pub > sudo heroku ps > heroku logs Menu HEROKU My Apps Servidor Git Minha APP é: http://escola.herokuapp.com

Trabalhando com GEMs.

Gem Devise Controle de Autenticação Controle de Autenticação Devise https://github.com/plataformatec/devise Criar um MODEL para a atividade EX:. users Adicionar ao Gemfile gem 'desvise' Configurar Devise na sua APP rails generate devise:install rails generate devise MODEL Ex:. Se users, aqui é user Obs:. Cuidado com o atributo EMAIL Add em config/envioriments/production.rb config.action_mailer.default_url_options = { :host => 'localhost:3000' } Add em app/views/layouts/application.html.erb <p class="notice"><%= notice %></p> <p class="alert"><%= alert %></p>

Gem Devise Controle de Autenticação Add em config/application.rb Importante para o HEROKU config.assets.initialize_on_precompile = false Add linha abaixo aos controllers para negar acesso, caso o Model seja user before_filter :authenticate_user! O que foi adicionado pelo DEVISE config/initializers/devise.rb app/models/users.rb config/routes.rb Métodos úteis user_signed_in? current_user user_session rails generate devise:views users

Ruby on Rails Gem Declarative Authorization Autorização Controle de Autorização Declarative Authorization https://github.com/stffn/declarative_authorization Adicionar ao Gemfile gem 'declarative_authorization' Criar arquivo de permissões config/authorization_rules.rb authorization do role :admin do has_permission_on [:users], :to => [:manage] end role :guest do end end privileges do privilege :manage, :includes => [:index, :show, :new, :create, :edit, :update, :destroy] privilege :read, :includes => [:index, :show] privilege :create, :includes => [:new] privilege :update, :includes => [:edit] privilege :delete, :includes => [:destroy] end

Gem Declarative Authorization Autorização Criar um Model chamado Roles > rails generate model role name:string description:string Add role_id em USERS > rails generate migration AddRoleIdToUsers add_column(:users, :role_id, :integer) Relacionando Users e Roles Em USERS.rb add: belongs_to :role Em ROLES.rb add: has_many :users

Gem Declarative Authorization Autorização Add a app/controllers/applicarion_controller.rb #Filtro do declarative authorization para todos os controllers before_filter { c Authorization.current_user = c.current_user } #mensagem em caso de usuário não autorizado protected def permission_denied flash[:error] = "Desculpe, você não tem permisão." redirect_to root_url end

Gem Declarative Authorization Autorização Add a app/models/user.rb ############################## CALLBACK before_create :setting_user_default def setting_user_default self.role = Role.find(:first, :conditions => {:name => 'admin'}) end ############################## DECLARATIVE AUTHORIZATION def role_symbols [role.name.underscore.to_sym] end

Gem Declarative Authorization Autorização Métodos úteis Controllers Views filter_resource_access filter_access_to :all Ps:. Podem ser os nomes das Actions <% permitted_to? :create, :courses do %> <%= link_to 'New', new_courses_path %> <% end %> Controllers using_access_control Obs:. não usar os metodos do DA com os do DEVISE

REFERÊNCIAS http://pt.wikipedia.org/wiki/ruby_%28linguagem_de_programa%c3%a7%c3%a3o%29 http://pt.wikipedia.org/wiki/ruby_on_rails http://pt.wikipedia.org/wiki/mvc http://www.zerokol.com/2012/01/configurando-ambiente-ruby-on-rails-32.html http://pt.wikipedia.org/wiki/crud http://guides.rubyonrails.org http://gitref.org/