"A libertação do desejo conduz à paz interior"
Aqui faremos um mergulho no Rails e, em um único capítulo, teremos uma pequena aplicação pronta: com banco de dados, interface web, lógica de negócio e todo o necessário para um CRUD, para que nos capítulos posteriores possamos ver cada parte do Rails com detalhes e profundidade, criando uma aplicação bem mais completa.
David Heinemeier Hansson criou o Ruby on Rails para usar em um de seus projetos na 37signals, o Basecamp. Desde então, passou a divulgar o código e incentivar o uso do mesmo, e em 2006 começou a ganhar muita atenção da comunidade de desenvolvimento Web.
O Rails foi criado pensando na praticidade que ele proporcionaria na hora de escrever os aplicativos para Web. No Brasil a Caelum vem utilizando o framework desde 2007, e grandes empresas como Abril e Locaweb adotaram o framework em uma grande quantidade de projetos.
Outro atrativo do framework é que, comparado a outros, ele permite que as funcionalidades de um sistema possam ser implementadas de maneira incremental por conta de alguns padrões e conceitos adotados. Isso tornou o Rails uma das escolhas óbvias para projetos e empresas que adotam metodologias ágeis de desenvolvimento e gerenciamento de projeto.
Para saber mais sobre metodologias ágeis, a Caelum oferece os cursosGerenciamento ágil de projetos de Software com Scrum (PM-83) e Práticas ágeis de desenvolvimento de Software (PM-87).
Como pilares do Rails estão os conceitos de Don't Repeat Yourself (DRY), eConvention over Configuration (CoC).
O primeiro conceito nos incentiva a fazer bom uso da reutilização de código, que é também uma das principais vantagens da orientação a objetos. Além de podermos aproveitar as características de OO do Ruby, o próprio framework nos incentiva a adotar padrões de projeto mais adequados para essa finalidade.
O segundo conceito nos traz o benefício de poder escrever muito menos código para implementar uma determinada funcionalidade em nossa aplicação, desde que respeitemos alguns padrões de nome e localização de arquivos, nome de classes e métodos, entre outras regras simples e fáceis de serem memorizadas e seguidas.
É possível, porém, contornar as exceções com algumas linhas de código a mais. No geral nossas aplicações apresentam um código bem simples e enxuto por conta desse conceito.
A arquitetura principal do Rails é baseada no conceito de separar tudo em três camadas: o MVC (Model, View, Controller). MVC é um padrão arquitetural onde os limites entre seus modelos, suas lógicas e suas visualizações são bem definidos, sendo muito mais simples fazer um reparo, uma mudança ou uma manutenção, já que essas três partes de comunicam de maneira bem desacoplada.
Rails não é baseado num único padrão, mas sim um conjunto de padrões, alguns dos quais discutiremos durante o curso.
Outros frameworks que faziam parte do núcleo do Rails antigamente foram removidos desse núcleo para diminuir o acoplamento com ele e permitir que vocês os substitua sem dificuldade, mas continuam funcionando e sendo usados em conjunto. Aqui estão alguns deles:
Há uma extensa lista de aplicações que usam o Ruby on Rails e, entre elas estão o Twitter, YellowPages, Groupon, Typo (blog open source) e o Spokeo (ferramenta de agrupamento de sites de relacionamentos).
Uma lista de sites usando Ruby on Rails com sucesso pode ser encontrada nesses endereços:
Por ser uma aplicação em Ruby -- contendo arquivos .rb e alguns arquivos de configuração diversos, todos baseados em texto puro -- o Ruby on Rails não requer nenhuma ferramenta avançada para que possamos criar aplicações. Utilizar um editor de textos simples ou uma IDE (Integrated Development Environment) cheia de recursos e atalhos é uma decisão de cada desenvolvedor.
Algumas IDEs podem trazer algumas facilidades como execução automática de testes, syntax highlighting, integração com diversas ferramentas, wizards, servidores, autocomplete, logs, perspectivas do banco de dados etc. Existem diversas IDEs para trabalhar com Rails, sendo as mais famosas:
Segundo enquetes em listas de discussões, a maioria dos desenvolvedores Ruby on Rails não utiliza nenhuma IDE, apenas um bom editor de texto e um pouco de treino para deixá-lo confortável no uso do terminal de comando do sistema operacional é suficiente para ser bem produtivo e ainda por cima não depender de um Software grande e complexo para que você possa desenvolver.
Durante nosso curso iremos utilizar o editor de textos padrão do Ubuntu, o GEdit. Alguns outros editores são bem conhecidos na comunidade:
Você chegou aqui porque a Caelum é referência nacional em cursos de Java, Ruby, Agile, Mobile, Web e .NET.
Faça curso com quem escreveu essa apostila.
Consulte as vantagens do curso Desenv. Ágil para Web com Ruby on Rails.
Quando instalamos a gem rails em nossa máquina, ganhamos o comando que iremos utilizar para gerar os arquivos inciais de nossa aplicação. Como a maioria dos comandos de terminal, podemos passar uma série de informações para que o projeto gerado seja customizado.
Para conhecer mais sobre as opções disponíveis, podemos imprimir a ajuda no console. Para isso basta executar o seguinte comando:
rails --help
Existem algumas opções de ambiente que são muito úteis quando temos diversas versões de Ruby instaladas na mesma máquina e queremos utilizar uma versão específica em nossa aplicação. Também temos uma série de opções para gerar nossa aplicação sem as ferramentas padrão (ou com ferramentas alternativas) para JavaScript, testes, pré-processamento de CSS e etc.
Como o Rails por padrão já traz um set de ferramentas bem pensadas para nossa produtividade, podemos nos ater ao comando básico para criação de uma aplicação:
rails new [caminho-da-app]
Caso a pasta apontada como caminho da aplicação não exista, ela será criada pelo gerador do Rails. Caso a pasta exista e contenha arquivos que possam conflitar com os gerados pelo Rails será necessário informar a ação adequada (sobrescrever, não sobrescrever) para cada um deles durante o processo de geração de arquivos.
rails new meu_projeto
Dentre todas as opções, uma das mais úteis é a que prepara nossa aplicação para conexão com um banco de dados. Como o Rails é compatível com uma grande quantidade de bancos de dados podemos escolher aquele que temos mais familiaridade, ou um que já estiver instalado em nossa máquina. Por padrão o Rails usa o SQLite3 pois é bem simples, as informações podem ser salvas em qualquer local do sistema de arquivos (por padrão dentro da aplicação) e está disponível para Windows, Mac e Linux.
Caso queira utilizar, por exemplo, o MySQL, basta passar a opção:
rails new meu_projeto -d mysql
Inicie o GEdit:
Inicie um novo projeto:
rails new agenda
Cada diretório tem uma função específica e bem clara na aplicação:
Conheça a Casa do Código, uma nova editora, com autores de destaque no mercado, foco em ebooks (PDF, epub, mobi), preçosimbatíveis e assuntos atuais.
Com a curadoria da Caelum e excelentes autores, é uma abordagem diferente para livros de tecnologia no Brasil. Conheça os títulos e a nova proposta, você vai gostar.
Casa do Código, livros para o programador.
Uma das características do Rails é a facilidade de se comunicar com o banco de dados de modo transparente ao programador.
Um exemplo dessa facilidade é que ao gerar a aplicação, ele criou também um arquivo de configuração do banco, pronto para se conectar. O arquivo está localizado em config/database.yml. Como o banco de dados padrão é o SQLite3 -- por ser pequeno, versátil e comportar bem um ambiente de desenvolvimento -- a configuração foi gerada para ele. Nada impede, porém, a alteração manual dessa configuração para outros tipos de bancos.
Nesse arquivo, são configuradas três conexões diferentes: development, test eproduction, associados respectivamente aos bancos agenda_development,agenda_test e agenda_production.
O banco agenda_development é usado na fase de desenvolvimento da aplicação e agenda_production em produção. A configuração para agenda_test se refere ao banco utilizado para os testes que serão executados, e deve ser mantido separado dos outros pois o framework apagará dados e tabelas constantemente.
Apesar de já estarem configuradas as conexões, o gerador da aplicação não cria os bancos de dados automaticamente. Existe um comando para isso:
rake db:create
A geração não é automática pois em alguns casos é possível que algum detalhe ou outro de configuração no arquivo config/database.yml seja necessário.
cd agenda
rake db:create
Esse comando não deve exibir nenhuma saída no console, não se preocupe. Porém, se alguma mensagem for exibida, verifique se o comando foi digitado exatamente como demonstrado acima.
Verifique que as bases de desenvolvimento e teste foram criadas. Pelo explorador de arquivos do GEdit, verifique a pasta db da nossa aplicação. O Railscria arquivos com a extensão .sqlite3 para serem utilizados como base de dados pelo SQLite3, isso permite que você copie o banco de dados para outra máquina sem a necessidade de processos complexos de configuração e importação/exportação de dados.
Pensando no propósito de facilitar a execução de tarefas repetitivas, o Rails traz um comando que é muito útil nos casos em que precisamos de um cadastro básico de alguma entidade em nossa aplicação -- um CRUD -- que se chama scaffold.Scaffold pode ser traduzido para o português como "andaime", ou seja, é uma base, um apoio que facilita a construção de nossa aplicação.
Com esse comando é gerado todo o código necessário para que possamos listar todos os registros, exibir um registro, criar um novo registro, atualizar um registro e excluir um registro de determinada entidade em nossa aplicação.
Se você gosta de estudar essa apostila aberta da Caelum, certamente vai gostar dos novos cursos online que lançamos na plataforma Alura. Você estuda a qualquer momento com aqualidade Caelum.
Conheça a assinatura semestral.
Execute o scaffold do seu modelo "Evento":
rails generate scaffold Evento nome:string local:string inicio:datetime termino:datetime
Juntamente com nossos arquivos foi gerado um arquivo de migração, dentro da pasta db/migrate. No cenário mais comum, para cada entidade que criamos é necessário que exista uma tabela no banco de dados, para garantir esse padrão o Rails gera automaticamente um script em Ruby para que as informações no banco de dados sejam consistentes com o que declaramos na aplicação.
Quando executamos o script de scaffold, implicitamente declaramos que nossa aplicação tem uma entidade Evento, então o Rails gerou o arquivodb/migrate/<timestamp>_create_eventos.rb (<timestamp> corresponde ao momento da criação do arquivo) com a definição da nossa tabela eventos e dos campos necessários.
Agora precisamos executar o script de geração das tabelas. Assim como temos um comando rake que cria o banco de dados, também temos um comando para criar as tabelas necessárias para nossa aplicação:
rake db:migrate
O Rails gera para todas as tabelas por padrão o campo id como chave primária. Toda a lógica de utilização dessa chave primária é tratada automaticamente para que o desenvolvedor possa se preocupar cada vez menos com o banco de dados e mais com os modelos.
Ao executarmos a migração do banco de dados pela primeira vez, será criada uma outra tabela chamada schema_migrations. Essa tabela contém uma única coluna (version), que indica quais foram as migrações executadas até agora, utilizando para isso o timestamp da última migration executada.
O Rails adota uma estratégia de evolução para o banco de dados, dessa maneira é possível a aplicação evolua gradativamente e o esquema do banco de dados seja incrementado com tabelas e campos em tabelas já existentes conforme o necessário.
Essa característica vai de encontro com as necessidades das metodologias ágeis de desenvolvimento de Software.
Vamos executar o script de migração de banco de dados para que a tabela "eventos" seja criada:
rake db:migrate
rails dbconsole
sqlite> .tables
sqlite> PRAGMA table_info(eventos);
sqlite> .quit
A sintaxe do console interativo do banco de dados depende do tipo de banco utilizado. Se você escolher, por exemplo, utilizar o MySQL os comandos para listar as tabelas do banco de dados é show tables;, e para obter detalhes sobre a tabela édescribe eventos;.
Querendo aprender ainda mais sobre a linguagem Ruby e o framework Ruby on Rails? Esclarecer dúvidas dos exercícios? Ouvir explicações detalhadas com um instrutor?
A Caelum oferece o curso RR-71 presencial nas cidades de São Paulo, Rio de Janeiro e Brasília, além de turmas incompany.
Consulte as vantagens do curso Desenv. Ágil para Web com Ruby on Rails.
Agora que já geramos o código necessário em nossa aplicação, criamos o banco de dados e as tabelas necessárias, precisamos colocar nossa aplicação em um servidor de aplicações Web que suporte aplicações feitas com o Ruby on Rails. Só assim os usuários poderão acessar nossa aplicação.
O próprio conjunto de ferramentas embutidas em uma instalação padrão de um ambiente Rails já inclui um servidor simples, suficiente para que o desenvolvedor possa acessar sua aplicação através do browser. Esse servidor, o WEBrick, não é indicado para aplicações em produção por ser muito simples e não contar com recursos mais avançados necessários para colocar uma aplicação "no ar" para um grande número de usuários.
Podemos iniciar o servidor através do comando rails server no terminal:
rails server
Após o processo de inicialização, podemos acessar nossa aplicação no navegador. Por padrão o servidor disponibiliza nossa aplicação na porta 3000, podemos visitar nossa aplicação em http://localhost:3000.
Quando geramos o scaffold de eventos, foram geradas telas simples para listar todos registros de eventos, exibir um evento e os formulários para criar um novo evento e editar um evento existente. As telas são simples, mas são totalmente funcionais.
Ao visitar "http://localhost:3000/eventos", você é redirecionado para a listagem de eventos.
rails server
O Ruby tem uma ferramenta capaz de gerar documentação do nosso código a partir dos comentários que podemos fazer dentro de uma classe ou imediatamente antes das declarações de métodos, essa ferramenta é o RDoc.
A documentação da versão atual do Rails está disponível emhttp://api.rubyonrails.org.
Há diversos outros sites que fornecem outras versões da documentação, ou modos alternativos de exibição e organização.
O RubyGems também oferece a documentação para cada uma das gems que estão instaladas, para isso basta iniciar o servidor de documentação embutido:
gem server
Este comando inicia um servidor WebRick na porta 8808. Basta acessar pelo browser para ver o RDoc de todos os gems instalados.
A última alternativa é gerar a documentação através do rake:
rails docs rake doc:rails
Depois de executar a task doc:rails, a documentação estará disponível no diretório docs/api/. A documentação do Ruby (bem como a biblioteca padrão) pode ser encontrada em http://ruby-doc.org.
Existem ainda excelentes guias e tutoriais oficiais disponíveis. É obrigatóriopara todo desenvolvedor Rails passar por estes guias:http://guides.rubyonrails.org.
Além desses guias, existe um site que lista as principais gems que podem ser usadas para cada tarefa: http://ruby-toolbox.com/.
A comunidade Ruby e Rails também costuma publicar excelentes screencasts(vídeos) com aulas e/ou palestras sobre diversos assuntos relacionados a Ruby e Rails. A lista está sempre crescendo. Aqui estão alguns dos principais:
O GUJ é um dos principais fóruns brasileiros de computação e o maior em português sobre Java. A nova versão do GUJ é baseada em uma ferramenta de perguntas e respostas (QA) e tem uma comunidade muito forte. São mais de 150 mil usuários pra ajudar você a esclarecer suas dúvidas.
Faça sua pergunta.
No formulário de cadastro de eventos podemos verificar que, apesar de já criar os formulários com os componentes adequados para que o usuário possa escolher uma data correta, a lista de anos disponíveis exibe somente alguns anos recentes.
Um dos requisitos possíveis para nossa aplicação é que o ano inicial do evento seja no mínimo o ano atual, para evitar que algum usuário cadastre um evento com uma data de fim no passado.
Para fazer essa alteração na aplicação será preciso editar o código gerado peloRails responsável por exibir a lista de anos, comece a listar a partir do ano atual:
Verifique no arquivo app/views/eventos/_form.html.erb um método chamado datetime_select:
<%= f.datetime_select :termino %>
Encontre a documentação desse método (em ActionViewHelpersDateHelper). Como podemos indicar que queremos exibir anos a partir do ano atual?
<%= f.datetime_select :termino, start_year: 2012 %>
Xo สล็อตออนไลน์ โปรสล็อต XO เกมออนไลน์ทำเงินยอดฮิตเกมสล็อต xopg.net คือเกมทำเงิน reeffutures2018 ผ่านทางออนไลน์อย่างหนึ่ง ที่เล่นง่าย และได้เงินไว แถมยังลงทุนด้วยเงินน้อย mavoixtavoie ทำเงินได้ตลอดเวลา ซึ่งหลายคนอาจได้เคยเห็นรีวิวเรื่องของ สล็อต xo สล็อตออนไลน์ ไว้มากมาย เทคนิคสล็อต ทั้งเรื่องการเล่นแล้วได้เงิน herbalpertpresents และเล่น สล็อต แล้วไม่ได้เงิน นั่นเองค่ะ ซึ่งการที่คุณจะเล่นได้เงินหรือไม่ได้เงินนั้น essentialsforasoul ส่วนหนึ่งก็เป็นในเรื่องของดวงเข้ามาเกี่ยวด้วย northbristol เพราะสล็อตเป็นเกมออนไลน์เสี่ยงโชค ทดลองเล่น xo เกมหนึ่งซึ่งจะมีสูตร หรือเทคนิคเข้ามาช่วย gclub เพื่อโกงดวงอยู่เสมอซึ่งในเว็บของเรา สมัคร xo ก็มีมาแนะนำไว้ให้เห็นกันมากมายหลายสูตร