O documento descreve a evolução do desenvolvimento de plugins/gems para Rails, desde a versão 2.3 até a versão 3. Na versão 2.3, a abordagem era menos estruturada e dependia mais de "gambiarras", enquanto na versão 3 a API é pública e bem definida, permitindo que frameworks e gems se integrem de forma modular através de hooks.
O documento descreve a evolução do desenvolvimento de plugins/gems para Rails. Começou de forma rudimentar em Rails 2.3, sem uma API pública definida. Em Rails 3, houve uma mudança para uma abordagem mais modular, com uma API pública e bem definida, permitindo maior integração de frameworks.
Carlos Antonio apresenta sobre o framework Rails 3, destacando suas principais vantagens como melhorias de performance e modularidade, além de descrever como o Rails 3 muda a forma de desenvolvimento com a adoção do padrão Rack e do gerenciador de dependências Bundler.
The document discusses the modular architecture of Rails, including Railties, Engines, Applications, and Plugins. It explains how these pieces work together through configuration, initialization, generators, and other mechanisms to provide a flexible and extensible framework. Key components like Railtie, Engine, and Application are described in terms of their responsibilities and how they relate to and extend each other.
The document discusses how to develop plugins/gems for Rails. It explains that Rails plugins can customize generators, add rake tasks, and use initialization hooks. Initialization hooks allow plugins to run code during the Rails initialization process, such as including modules when specific frameworks like ActiveRecord are loaded. An example plugin is shown that uses an initializer to configure flash keys if the app sets the corresponding option.
Você está começando a desenvolver para a Web e não está satisfeito com as tecnologias que lhe foram apresentadas? Acha que não são muito produtivas e que emperram o processo como um todo, sendo que já existem problemas demais no projeto como um todo?
Venha conhecer o framework Rails e o que ele pode te oferecer em termos de produtividade, manutenibilidade de software, testabilidade, dentre outros.
Mini-curso realizado no CESOL 2009 em Fortaleza na UFC campos do PICI, ministrado por mim Targino Silveira.
Nesse mini-curso viso preparar as pessoas para iniciarem a fazer pequenas aplicações e ao terminarem o mini-curso já sabendo com incluir, editar, excluir, pesquisar registros; alterar templates, trabalhar com migrations e uma outra serie de procedimentos.
O documento fornece uma introdução abrangente ao framework Ruby on Rails, cobrindo tópicos como: o que é Ruby e Ruby on Rails, estrutura MVC, estrutura de pastas, por que usar Rails, projetos e sites desenvolvidos com Rails, e preparando o ambiente de desenvolvimento.
O documento discute as etapas para atualizar um aplicativo Rails de versão 2.x para 3.2. Ele fornece instruções sobre como verificar possíveis problemas, fazer backup dos arquivos, atualizar rotas, gems e configurações e aborda algumas mudanças significativas como o método returning e validações. O autor também discute desafios como plugins e gems antigas.
O documento descreve a evolução do desenvolvimento de plugins/gems para Rails. Começou de forma rudimentar em Rails 2.3, sem uma API pública definida. Em Rails 3, houve uma mudança para uma abordagem mais modular, com uma API pública e bem definida, permitindo maior integração de frameworks.
Carlos Antonio apresenta sobre o framework Rails 3, destacando suas principais vantagens como melhorias de performance e modularidade, além de descrever como o Rails 3 muda a forma de desenvolvimento com a adoção do padrão Rack e do gerenciador de dependências Bundler.
The document discusses the modular architecture of Rails, including Railties, Engines, Applications, and Plugins. It explains how these pieces work together through configuration, initialization, generators, and other mechanisms to provide a flexible and extensible framework. Key components like Railtie, Engine, and Application are described in terms of their responsibilities and how they relate to and extend each other.
The document discusses how to develop plugins/gems for Rails. It explains that Rails plugins can customize generators, add rake tasks, and use initialization hooks. Initialization hooks allow plugins to run code during the Rails initialization process, such as including modules when specific frameworks like ActiveRecord are loaded. An example plugin is shown that uses an initializer to configure flash keys if the app sets the corresponding option.
Você está começando a desenvolver para a Web e não está satisfeito com as tecnologias que lhe foram apresentadas? Acha que não são muito produtivas e que emperram o processo como um todo, sendo que já existem problemas demais no projeto como um todo?
Venha conhecer o framework Rails e o que ele pode te oferecer em termos de produtividade, manutenibilidade de software, testabilidade, dentre outros.
Mini-curso realizado no CESOL 2009 em Fortaleza na UFC campos do PICI, ministrado por mim Targino Silveira.
Nesse mini-curso viso preparar as pessoas para iniciarem a fazer pequenas aplicações e ao terminarem o mini-curso já sabendo com incluir, editar, excluir, pesquisar registros; alterar templates, trabalhar com migrations e uma outra serie de procedimentos.
O documento fornece uma introdução abrangente ao framework Ruby on Rails, cobrindo tópicos como: o que é Ruby e Ruby on Rails, estrutura MVC, estrutura de pastas, por que usar Rails, projetos e sites desenvolvidos com Rails, e preparando o ambiente de desenvolvimento.
O documento discute as etapas para atualizar um aplicativo Rails de versão 2.x para 3.2. Ele fornece instruções sobre como verificar possíveis problemas, fazer backup dos arquivos, atualizar rotas, gems e configurações e aborda algumas mudanças significativas como o método returning e validações. O autor também discute desafios como plugins e gems antigas.
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
Este talk propõe mostrar para você como construir um app Rails (não SPA) com uma estrutura organizada de Javascript. Você terá oportunidade de ver conceitos como injeção de dependência, single point entry, dispatcher, promises, IIFE, templates JS, Named Routes JS e muito mais? tudo isso aplicado na prática (e tudo junto). Chega de produzir brown fileds! Faça você também a coisa certa.
Desenvolvimento de sistemas web com php Frameworks - Aula 1Thyago Maia
O documento discute frameworks, definindo-os como conjuntos de classes que encapsulam abstrações para solução de problemas relacionados. Apresenta o framework Laravel, desenvolvido em PHP para aplicações web baseadas em MVC, e o Homestead, ambiente de desenvolvimento oficial do Laravel utilizando Vagrant. Explica também rotas no Laravel, mapeando URLs a controllers via arquivo routes.php.
O Git é uma ferramenta que permite com que uma equipe trabalhe remotamente no mesmo projecto, isto é, não precisam estar no mesmo sítio.
Esta aula é a quarta de um curso de desenvolvimento de aplicações web denominada Web Training organizado pela MozDevz, mais informações visite: www.mozdevz.org.
Este documento fornece uma introdução ao sistema de controle de versão Git. Resume os principais pontos como: (1) Git foi criado por Linus Torvalds para o controle de versão do kernel Linux; (2) Git é um sistema de controle de versão distribuído que oferece maior velocidade e eficiência em comparação com outros sistemas; (3) O documento explica os principais comandos e funcionalidades do Git.
O documento apresenta uma introdução ao framework Ruby on Rails, descrevendo o que é Rails, seus princípios como DRY e convention over configuration, a arquitetura MVC e seus componentes principais como Active Record e Action Controller. O documento também descreve um exemplo de aplicação que será desenvolvida durante o treinamento para demonstrar o uso do Rails.
[Rock'n Rails] Deploying Rails Applications with CapistranoAlmir Mendes
Capistrano facilita o deploy de aplicações Rails nos servidores de produção automatizando tarefas como upload de arquivos estáticos e binários, configuração do banco de dados e execução de migrations. Ele requer a instalação de alguns pré-requisitos como Ruby, OpenSSH e Git e pode ser configurado através de arquivos como Capfile e config/deploy.rb para definir servidores, versões e compartilhamentos. O deploy é feito com um único comando depois da configuração.
O documento resume as principais funcionalidades do framework Rails para desenvolvimento web utilizando a linguagem Ruby, como a arquitetura MVC, convenções sobre configuração e padrão REST. Também apresenta os passos iniciais para criação de uma aplicação Rails para gerenciamento de finanças pessoais.
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Thyago Maia
O documento discute o uso de controllers e rotas no Laravel para mapear URLs para métodos de controller. Inclui exemplos de como criar controllers automaticamente com o comando artisan, mapear rotas para controllers e métodos, e usar controllers de recurso para simplificar rotas CRUD.
Minicurso Ruby on Rails - Wake Up SystemsWakeUpSystems
O documento apresenta um curso sobre Ruby on Rails, incluindo informações sobre a linguagem Ruby, como foi criada e suas características, e sobre o framework Rails, seu criador e principais componentes.
O documento descreve o framework web2py, escrito em Python, que permite o desenvolvimento rápido de aplicações web usando o padrão MVC. O web2py é um framework full stack que roda diretamente no navegador sem necessidade de instalação e oferece recursos como banco de dados integrado, interface administrativa, formulários CRUD e publicação em diversos servidores web.
O documento discute otimizações em aplicações Rails, tanto no lado do cliente quanto do servidor. Ele apresenta vários plugins e bibliotecas que podem ser usados para melhorar o desempenho, como Asset Packager para compactar arquivos CSS e JavaScript, Sprockets para gerenciar dependências de assets, e Memcached para cache distribuído. O documento também discute otimizações internas do Rails como page caching, action caching e fragment caching.
1) O documento apresenta uma introdução à linguagem Ruby e ao framework Ruby on Rails, incluindo suas características, instalação e estrutura básica de projetos.
2) As boas práticas de Rails são descritas, como convenções de nomenclatura e geração de código através de scaffolds e migrations.
3) Ferramentas como form helpers, partials e validações são explicadas para auxiliar no desenvolvimento de aplicações web com Rails.
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
O documento fornece dicas sobre como organizar o JavaScript em aplicações Rails não-SPA. As principais dicas incluem: (1) usar o Bower para gerenciar dependências front-end; (2) modularizar o código JavaScript usando módulos; (3) estabelecer um ponto de entrada único para execução do JavaScript.
O documento apresenta um resumo de um curso sobre Ruby on Rails. O curso aborda tópicos como introdução à linguagem Ruby, estruturas do framework Rails, exercícios práticos de instalação, CRUD e associações com banco de dados.
O RSS é o XML democrata e grande responsável pela revolução dos conteúdos. Está em todo o lado. O SAPO serve já dezenas de feeds de conteúdos e serviços com suporte Opensearch.
Neste workshop iremos partir de uma página web estática, chata e sem côr para criar uma aplicação multimedia e um serviço.
Pelo caminho estará muito RSS e muita transformação de conteúdo.
Para o final guardam-se algumas sugestões para os concorrentes ao Codebits '07.
1) Rails foi lançado em 2004 como um framework para desenvolvimento web extraído do produto Basecamp e se tornou popular rapidamente com sites como 43things e outros;
2) A comunidade Rails ajudou a evoluir o framework até a versão 1.0 em 2005, quando se tornou um projeto de código aberto com mais de 100 colaboradores;
3) Ruby on Rails incorporou conceitos antigos de orientação a objetos, MVC e outros padrões para criar um framework rápido e produtivo para desenvolvimento web.
Ruby on Rails 100% na cloud com heroku e outros serviçosBruno Ghisi
Ruby on Rails pode ser implementado totalmente na nuvem usando serviços como Heroku. Isso permite que os desenvolvedores foquem no produto ao invés de infraestrutura e operações, já que serviços como add-ons cuidam de banco de dados, log e email. Exemplos de aplicações bem-sucedidas incluem Rapportive, que foi adquirida pelo LinkedIn.
Este documento fornece um tutorial sobre como gerar relatórios com JasperReports utilizando o iReport. Ele descreve três métodos: 1) passando uma conexão com o banco de dados, 2) passando um ResultSet, e 3) passando uma lista de objetos. Além disso, discute o uso de sub-relatórios e a passagem de parâmetros.
Do your own hacking evening - RubyConf URPlataformatec
The document announces a "Hacking Evening" event hosted by PlataformaTec to be held on Tuesdays from 7-9pm. It aims to disseminate knowledge between the company's 13 professionals, including 8 developers, through coding sessions, tech talks, workshops, and other technical and non-technical discussions. Employees are encouraged to suggest session topics and invite external participants to attend the weekly habit and have fun learning from each other.
Product Owner - Simples como dizem? - Agile Tour 2011Plataformatec
O documento discute o papel do Product Owner no Scrum, destacando que ele é responsável por definir e priorizar os itens no Product Backlog para garantir a entrega contínua de valor ao cliente, e não deve ser confundido com o próprio cliente. Também ressalta a importância de o Product Owner ter habilidades como visão sistêmica, comunicação e negociação para cumprir bem seu papel.
Mais conteúdo relacionado
Semelhante a Railties - Ruby Masters Conf - 26Feb2011
TDC 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
Este talk propõe mostrar para você como construir um app Rails (não SPA) com uma estrutura organizada de Javascript. Você terá oportunidade de ver conceitos como injeção de dependência, single point entry, dispatcher, promises, IIFE, templates JS, Named Routes JS e muito mais? tudo isso aplicado na prática (e tudo junto). Chega de produzir brown fileds! Faça você também a coisa certa.
Desenvolvimento de sistemas web com php Frameworks - Aula 1Thyago Maia
O documento discute frameworks, definindo-os como conjuntos de classes que encapsulam abstrações para solução de problemas relacionados. Apresenta o framework Laravel, desenvolvido em PHP para aplicações web baseadas em MVC, e o Homestead, ambiente de desenvolvimento oficial do Laravel utilizando Vagrant. Explica também rotas no Laravel, mapeando URLs a controllers via arquivo routes.php.
O Git é uma ferramenta que permite com que uma equipe trabalhe remotamente no mesmo projecto, isto é, não precisam estar no mesmo sítio.
Esta aula é a quarta de um curso de desenvolvimento de aplicações web denominada Web Training organizado pela MozDevz, mais informações visite: www.mozdevz.org.
Este documento fornece uma introdução ao sistema de controle de versão Git. Resume os principais pontos como: (1) Git foi criado por Linus Torvalds para o controle de versão do kernel Linux; (2) Git é um sistema de controle de versão distribuído que oferece maior velocidade e eficiência em comparação com outros sistemas; (3) O documento explica os principais comandos e funcionalidades do Git.
O documento apresenta uma introdução ao framework Ruby on Rails, descrevendo o que é Rails, seus princípios como DRY e convention over configuration, a arquitetura MVC e seus componentes principais como Active Record e Action Controller. O documento também descreve um exemplo de aplicação que será desenvolvida durante o treinamento para demonstrar o uso do Rails.
[Rock'n Rails] Deploying Rails Applications with CapistranoAlmir Mendes
Capistrano facilita o deploy de aplicações Rails nos servidores de produção automatizando tarefas como upload de arquivos estáticos e binários, configuração do banco de dados e execução de migrations. Ele requer a instalação de alguns pré-requisitos como Ruby, OpenSSH e Git e pode ser configurado através de arquivos como Capfile e config/deploy.rb para definir servidores, versões e compartilhamentos. O deploy é feito com um único comando depois da configuração.
O documento resume as principais funcionalidades do framework Rails para desenvolvimento web utilizando a linguagem Ruby, como a arquitetura MVC, convenções sobre configuração e padrão REST. Também apresenta os passos iniciais para criação de uma aplicação Rails para gerenciamento de finanças pessoais.
Desenvolvimento de sistemas web com PHP Frameworks - Aula 2Thyago Maia
O documento discute o uso de controllers e rotas no Laravel para mapear URLs para métodos de controller. Inclui exemplos de como criar controllers automaticamente com o comando artisan, mapear rotas para controllers e métodos, e usar controllers de recurso para simplificar rotas CRUD.
Minicurso Ruby on Rails - Wake Up SystemsWakeUpSystems
O documento apresenta um curso sobre Ruby on Rails, incluindo informações sobre a linguagem Ruby, como foi criada e suas características, e sobre o framework Rails, seu criador e principais componentes.
O documento descreve o framework web2py, escrito em Python, que permite o desenvolvimento rápido de aplicações web usando o padrão MVC. O web2py é um framework full stack que roda diretamente no navegador sem necessidade de instalação e oferece recursos como banco de dados integrado, interface administrativa, formulários CRUD e publicação em diversos servidores web.
O documento discute otimizações em aplicações Rails, tanto no lado do cliente quanto do servidor. Ele apresenta vários plugins e bibliotecas que podem ser usados para melhorar o desempenho, como Asset Packager para compactar arquivos CSS e JavaScript, Sprockets para gerenciar dependências de assets, e Memcached para cache distribuído. O documento também discute otimizações internas do Rails como page caching, action caching e fragment caching.
1) O documento apresenta uma introdução à linguagem Ruby e ao framework Ruby on Rails, incluindo suas características, instalação e estrutura básica de projetos.
2) As boas práticas de Rails são descritas, como convenções de nomenclatura e geração de código através de scaffolds e migrations.
3) Ferramentas como form helpers, partials e validações são explicadas para auxiliar no desenvolvimento de aplicações web com Rails.
O mercado de internet evolui em uma velocidade muito rápida, se não formos capazes de acompanhar as evoluções e apresentar inovações, ficamos para trás. Ruby e Rails vem trazer ao mundo do desenvolvimento web a produtividade e alegria necessária!
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
O documento fornece dicas sobre como organizar o JavaScript em aplicações Rails não-SPA. As principais dicas incluem: (1) usar o Bower para gerenciar dependências front-end; (2) modularizar o código JavaScript usando módulos; (3) estabelecer um ponto de entrada único para execução do JavaScript.
O documento apresenta um resumo de um curso sobre Ruby on Rails. O curso aborda tópicos como introdução à linguagem Ruby, estruturas do framework Rails, exercícios práticos de instalação, CRUD e associações com banco de dados.
O RSS é o XML democrata e grande responsável pela revolução dos conteúdos. Está em todo o lado. O SAPO serve já dezenas de feeds de conteúdos e serviços com suporte Opensearch.
Neste workshop iremos partir de uma página web estática, chata e sem côr para criar uma aplicação multimedia e um serviço.
Pelo caminho estará muito RSS e muita transformação de conteúdo.
Para o final guardam-se algumas sugestões para os concorrentes ao Codebits '07.
1) Rails foi lançado em 2004 como um framework para desenvolvimento web extraído do produto Basecamp e se tornou popular rapidamente com sites como 43things e outros;
2) A comunidade Rails ajudou a evoluir o framework até a versão 1.0 em 2005, quando se tornou um projeto de código aberto com mais de 100 colaboradores;
3) Ruby on Rails incorporou conceitos antigos de orientação a objetos, MVC e outros padrões para criar um framework rápido e produtivo para desenvolvimento web.
Ruby on Rails 100% na cloud com heroku e outros serviçosBruno Ghisi
Ruby on Rails pode ser implementado totalmente na nuvem usando serviços como Heroku. Isso permite que os desenvolvedores foquem no produto ao invés de infraestrutura e operações, já que serviços como add-ons cuidam de banco de dados, log e email. Exemplos de aplicações bem-sucedidas incluem Rapportive, que foi adquirida pelo LinkedIn.
Este documento fornece um tutorial sobre como gerar relatórios com JasperReports utilizando o iReport. Ele descreve três métodos: 1) passando uma conexão com o banco de dados, 2) passando um ResultSet, e 3) passando uma lista de objetos. Além disso, discute o uso de sub-relatórios e a passagem de parâmetros.
Semelhante a Railties - Ruby Masters Conf - 26Feb2011 (20)
Do your own hacking evening - RubyConf URPlataformatec
The document announces a "Hacking Evening" event hosted by PlataformaTec to be held on Tuesdays from 7-9pm. It aims to disseminate knowledge between the company's 13 professionals, including 8 developers, through coding sessions, tech talks, workshops, and other technical and non-technical discussions. Employees are encouraged to suggest session topics and invite external participants to attend the weekly habit and have fun learning from each other.
Product Owner - Simples como dizem? - Agile Tour 2011Plataformatec
O documento discute o papel do Product Owner no Scrum, destacando que ele é responsável por definir e priorizar os itens no Product Backlog para garantir a entrega contínua de valor ao cliente, e não deve ser confundido com o próprio cliente. Também ressalta a importância de o Product Owner ter habilidades como visão sistêmica, comunicação e negociação para cumprir bem seu papel.
As reais razões do porque eu devo ser Ágil - Agile Tour São PauloPlataformatec
The document discusses the evolution of software development approaches over time from the 1970s to present day. It notes that in the 1970s, the waterfall model was used which involved sequential development phases and testing at the end. This led to many failed projects. New lightweight agile approaches emerged in the 1990s like Scrum and XP which emphasized iterative development, rapid delivery of working software, and ability to adapt to changing requirements. As a result, the rate of successful software projects increased from around 30% in the 1990s to over 60% currently. The document contrasts two realities in current projects - one using specialized teams and waterfall approaches still, and one using multi-disciplinary agile teams.
Código Saudável => Programador Feliz - Rs on Rails 2010Plataformatec
Palestra do Rs On Rails, na qual demos algumas dicas de boas práticas para manter seu código mais limpo e ter absoluto controle da sua aplicação em produção.
O que há de novo no Rails 3 - Ruby on Rails no Mundo Real - 23may2010Plataformatec
The document discusses the architecture and advantages of Rails 3. It describes how Rails 3 applications are organized as Rack applications and are more modular than previous versions. Key advantages mentioned include improved performance, being more framework-agnostic, and increased modularity.
The document discusses the pros and cons of using domain-specific languages (DSLs) for tasks like generating emails from web forms. It proposes an alternative approach of using simple Ruby objects that define a contract instead of a DSL. Examples are provided of how this approach could be used for Rack applications, Rake tasks, testing, and basic CRUD operations with Rails scaffolding. The conclusion is that this simpler approach improves code readability and programmer happiness compared to a DSL.
Classificação de textos - Dev in Sampa - 28nov2009Plataformatec
O documento discute classificação de textos, apresentando os principais tópicos do processo: pré-processamento de texto (remoção de stop words, representação em saco de palavras, stemming e pesagem), classificadores como Naive Bayes e medidas de avaliação.
Devise é uma solução de autenticação flexível para Rails que fornece login, logout e recuperação de senha em um módulo. Ele é baseado em Rack e pode ser usado em Rails, Sinatra e outros frameworks, oferecendo uma estrutura completa similar a um engine. Devise permite configurar vários papéis de usuário e é mais modular e flexível do que soluções existentes como Clearance e Authlogic.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
9. THE ROAD SO FAR
RAILS 2.3
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
10. RAILS 2.3
Já possuía a estrutura de Rails Engine.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
11. RAILS 2.3
Já possuía a estrutura de Rails Engine.
Mas...
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
12. RAILS 2.3
Já possuía a estrutura de Rails Engine.
Mas...
podemos dizer que era uma boa “gambiarra”.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
13. RAILS 2.3
http://thereifixedit.files.wordpress.com/2011/02/white-trash-repairs-traveling-for-kludgers.jpg
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
14. RAILS 2.3
module Rails
class Plugin
# Engines are plugins with an app/ directory.
def engine?
has_app_directory?
end
private
def has_app_directory?
File.directory?(File.join(directory, 'app'))
end
end
end
https://github.com/rails/rails/blob/2-3-stable/railties/lib/rails/plugin.rb
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
15. RAILS 2.3
Diretórios como app/[models|controllers|helpers]
e as rotas eram automaticamente carregados.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
16. RAILS 2.3
Diretórios como app/[models|controllers|helpers]
e as rotas eram automaticamente carregados.
Mas eram fixos, não existia a possibilidade de
nenhuma configuração de paths.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
17. RAILS 2.3
module Rails
class Plugin
def view_path
File.join(directory, 'app', 'views')
end
def controller_path
File.join(directory, 'app', 'controllers')
end
def routing_file
File.join(directory, 'config', 'routes.rb')
end
private
def app_paths
[ File.join(directory, 'app', 'models'),
File.join(directory, 'app', 'helpers'), controller_path, metal_path ]
end
end
end
https://github.com/rails/rails/blob/2-3-stable/railties/lib/rails/plugin.rb
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
18. RAILS 2.3
Tínhamos ORMs diferentes “integradas” ao Rails,
como o Datamapper e o MongoMapper...
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
19. RAILS 2.3
Tínhamos ORMs diferentes “integradas” ao Rails,
como o Datamapper e o MongoMapper...
Que poderiam quebrar a cada novo patch release
do Rails.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
20. RAILS 2.3
Não existia uma API pública definida para outros
frameworks se integrarem.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
21. RAILS 2.3
Não existia uma API pública definida para outros
frameworks se integrarem.
A solução: alias method chain / monkey patch.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
23. RAILS 2.3
O Rails sabia da existência do ActiveRecord...
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
24. RAILS 2.3
O Rails sabia da existência do ActiveRecord...
Pois era ele o responsável por inicializar o
ActiveRecord e os demais frameworks.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
25. RAILS 2.3
Isso quer dizer que, por mais que você estivesse
utilizando o DataMapper ou MongoMapper, por
exemplo, o ActiveRecord sempre estaria lá.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
26. RAILS 2.3
module Rails
class Initializer
# Requires all frameworks specified by the Configuration#frameworks
# list. By default, all frameworks (Active Record, Active Support,
# Action Pack, Action Mailer, and Active Resource) are loaded.
def require_frameworks
configuration.frameworks.each { |framework| require(framework.to_s) }
end
def load_observers
if gems_dependencies_loaded && configuration.frameworks.include?(:active_record)
ActiveRecord::Base.instantiate_observers
end
end
def initialize_database
if configuration.frameworks.include?(:active_record)
ActiveRecord::Base.configurations = configuration.database_configuration
ActiveRecord::Base.establish_connection
end
end
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
27. RAILS 2.3
module Rails
class Configuration
private
def default_frameworks
[ :active_record, :action_controller, :action_view, :action_mailer, :active_resource ]
end
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
28. RAILS 2.3
SINGLE
RESPONSIBILITY
PRINCIPLE
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
29. RAILS 2.3
SINGLE
RESPONSIBILITY
PRINCIPLE
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
31. NOW
RAILS 3
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
32. RAILS 3
Modularidade.
API pública e bem definida.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
33. RAILS 3
HOOKS!
http://www.flickr.com/photos/ooh_food/3304708302/
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
34. RAILS 3
O Rails não conhece o ActiveRecord.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
35. RAILS 3
O Rails não conhece o ActiveRecord.
O ActiveRecord é quem conta para o Rails como
ele deve ser inicializado.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
36. RAILS 3
E isso acontece com todos os outros frameworks.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
37. RAILS 3
ActiveRecord ActionView
E isso acontece com todos os outros frameworks.
ActiveResource
ActionController
ActionMailer
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
38. RAILS 3
E isso acontece com todas as demais gems/plugins
que se integram com o Rails.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
39. RAILS 3
DataMapper Mongoid
E isso acontece com todas as demais gems/plugins
que se integram com o Rails.
outros...
RSpec
Devise
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
41. module ActiveRecord
class Railtie < Rails::Railtie
config.active_record = ActiveSupport::OrderedOptions.new
config.generators.orm :active_record, :migration => true,
:timestamps => true
config.app_middleware.insert_after "::ActionDispatch::Callbacks",
"ActiveRecord::QueryCache"
rake_tasks do
load "active_record/railties/databases.rake"
end
console do
ActiveRecord::Base
end
initializer "active_record.logger" do
?
ActiveSupport.on_load(:active_record) { self.logger ||= ::Rails.logger }
end
config.after_initialize do
ActiveSupport.on_load(:active_record) do
instantiate_observers
# ....
end
end
end
end
https://github.com/rails/rails/tree/3-0-stable/activerecord
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
42. RAILS 3
SINGLE
RESPONSIBILITY
PRINCIPLE
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
43. RAILS 3
WIN!!!
http://www.flickr.com/photos/simoncopping/5050597808/
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
44. Railties
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
45. Railties
?
WTF???
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
46. Railties
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
47. Railties Engine
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
48. Application Railties Engine
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
49. Initialization
Application Railties Engine
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
50. Initialization
Application Railties Engine
?
Generators
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
51. Initialization
? HOOKS
Application Railties Engine
Generators
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
52. CONFIGURAÇÃO
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
53. CONFIGURAÇÃO
module Responders
class Railtie < ::Rails::Railtie
config.responders = ActiveSupport::OrderedOptions.new
# Na configuração da app (application.rb):
? # config.responders.flash_keys = [:notice, :failure]
end
end
https://github.com/plataformatec/responders
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
54. GENERATORS
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
55. GENERATORS
module MyGem
class Railtie < ::Rails::Railtie
generators do
require "my_gem/generator"
end
? end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
56. GENERATORS
Preciso realmente adicionar na Railtie?
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
57. GENERATORS
Preciso realmente adicionar na Railtie?
? Não, se você seguir a convenção.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
58. GENERATORS
simple_form
lib
generators
simple_form
install_generator.rb
templates
? simple_form.rb
rails generate simple_form:install
https://github.com/plataformatec/simple_form
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
59. GENERATORS
simple_form
lib Namespace
generators
simple_form
install_generator.rb
Generator templates
? simple_form.rb
rails generate simple_form:install
https://github.com/plataformatec/simple_form
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
60. GENERATORS
module SimpleForm
module Generators
class InstallGenerator < Rails::Generators::Base
desc "Copy SimpleForm default files"
source_root File.expand_path('../templates', __FILE__)
def copy_initializers
copy_file 'simple_form.rb',
'config/initializers/simple_form.rb'
? end
end
end
end
rails generate simple_form:install
http://guides.rubyonrails.org/generators.html
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
61. GENERATORS
Siga as convenções.
?
http://www.flickr.com/photos/jasonteale/1340004498/
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
62. GENERATORS
Siga as convenções.
? E você será mais feliz =).
http://www.flickr.com/photos/jasonteale/1340004498/
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
64. GENERATORS - ORM
module Rails
module Mongoid
class Railtie < Rails::Railtie
config.generators.orm :mongoid, :migration => false
? end
end
end
https://github.com/mongoid/mongoid
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
65. GENERATORS - TEST FRAMEWORK
module Rails
module RSpec
class Railtie < Rails::Railtie
config.generators.test_framework :rspec
? end
end
end
https://github.com/rspec/rspec-rails
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
66. GENERATORS - TEMPLATE ENGINE
module Rails
module Haml
class Railtie < Rails::Railtie
config.generators.template_engine :haml
? end
end
end
https://github.com/nex3/haml
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
68. RAKE TASKS
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
69. RAKE TASKS
module Rails
module RSpec
class Railtie < Rails::Railtie
rake_tasks do
load "rspec/rails/tasks/rspec.rake"
end
? end
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
70. CONSOLE
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
71. CONSOLE
module ActiveRecord
class Railtie < Rails::Railtie
# Forçar o carregamento do
# ActiveRecord com o console.
console do
ActiveRecord::Base
? end
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
72. INITIALIZATION HOOKS
?
http://www.flickr.com/photos/mattbrett/224471090/
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
73. INITIALIZATION HOOKS
module MyGem
class Railtie < Rails::Railtie
config.before_configuration {
# Roda após criar a classe da Aplicação, mas
?
# antes de rodar as configurações do usuário.
}
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
74. INITIALIZATION HOOKS
module MyGem
class Railtie < Rails::Railtie
config.before_initialize {
# Roda depois da configuração do usuário, mas
?
# antes dos initializers.
}
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
75. INITIALIZATION HOOKS
module MyGem
class Railtie < Rails::Railtie
config.to_prepare {
# Roda antes de cada request em development, e
?
# antes da primeira request em production.
}
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
76. INITIALIZATION HOOKS
module MyGem
class Railtie < Rails::Railtie
config.before_eager_load {
# Roda antes do Rails carregar todo o código
# da aplicação. Isso só acontece com a opção
? }
# :cache_classes habilitada (production).
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
77. INITIALIZATION HOOKS
module MyGem
class Railtie < Rails::Railtie
config.after_initialize {
# Roda após a inicialização do Rails,
# configurações do usuário e initializers, e o
?
# próprio bloco to_prepare. É executado apenas
# uma única vez, antes da primeira requisição.
}
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
78. INITIALIZATION HOOKS
Development Production (cache_classes)
before_configuration before_configuration
=> Booting WEBrick => Booting WEBrick
before_initialize before_initialize
to_prepare to_prepare
?
after_initialize before_eager_load
[...] INFO WEBrick 1.3.1 after_initialize
[...] INFO WEBrick 1.3.1
to_prepare
Request... Request...
to_prepare Request...
Request...
to_prepare
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
79. INITIALIZATION HOOKS
Development Production (cache_classes)
before_configuration before_configuration
=> Booting WEBrick => Booting WEBrick
before_initialize before_initialize
to_prepare to_prepare
?
after_initialize before_eager_load
[...] INFO WEBrick 1.3.1 after_initialize
[...] INFO WEBrick 1.3.1
to_prepare
Request... Request...
to_prepare Request...
Request...
to_prepare
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
80. INITIALIZERS
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
81. INITIALIZERS
module CarrierWave
class Railtie < Rails::Railtie
# Initializers “customizados”
initializer "carrierwave.setup_paths" do
CarrierWave.root =
? end
Rails.root.join(Rails.public_path).to_s
end
end
https://github.com/jnicklas/carrierwave
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
82. INITIALIZERS
module MyGem
class Railtie < Rails::Railtie
# Temos acesso ao objeto app para
# obter as configs do usuário.
initializer "my_gem.setup" do |app|
? # app.config
end
end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
83. FRAMEWORK LOADING
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
84. FRAMEWORK LOADING
# Cada módulo avisa através do ActiveSupport
# quando é carregado.
? ActiveSupport.run_load_hooks(
:active_record, ActiveRecord::Base)
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
85. FRAMEWORK LOADING
# E podemos executar código neste exato
# momento, dentro do contexto do que está
# sendo carregado.
ActiveSupport.on_load(:active_record) do
include MyGem::ActiveRecordExtensions
end
? ActiveSupport.on_load(:action_controller) do
include MyGem::ActionControllerExtensions
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
86. E O QUE EU FAÇO COM
ESSE NEGÓCIO DE
FRAMEWORK LOADING?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
87. E O QUE EU FAÇO COM
ESSE NEGÓCIO DE
FRAMEWORK LOADING?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
88. FRAMEWORK LOADING +
INITIALIZERS
module Devise
class Engine < ::Rails::Engine
initializer "devise.url_helpers" do
ActiveSupport.on_load(:action_controller) do
include Devise::Controllers::Helpers
?
include Devise::Controllers::UrlHelpers
end
end
end
end
https://github.com/plataformatec/devise
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
89. FRAMEWORK LOADING
E você pode criar o seu hook.
? ActiveSupport.run_load_hooks(:my_gem, MyGem)
ActiveSupport.on_load(:my_gem) do end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
90. COMO EU CRIO UMA
RAILS::RAILTIE???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
91. RAILS::RAILTIE => COMO?
module MyGem
class Railtie < ::Rails::Railtie
# Acabamos de criar nossa railtie.
? end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
92. E QUANDO EU REALMENTE
PRECISO DE UMA RAILS::RAILTIE???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
93. RAILS::RAILTIE => QUANDO?
• Precisar carregar generators em outro diretório;
• Precisar de rake tasks disponíveis na aplicação;
• Precisar executar código ao carregar o console;
• Precisar rodar código no momento de inicialização de seu
? plugin/gem, como um initializer do Rails;
• Precisar extender as funcionalidades de algum dos frameworks;
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
95. module Responders
class Railtie < ::Rails::Railtie
config.responders = ActiveSupport::OrderedOptions.new
config.generators.scaffold_controller = :responders_controller
# Add load paths straight to I18n, so engines and application can overwrite it
require 'active_support/i18n'
I18n.load_path << File.expand_path('../responders/locales/en.yml', __FILE__)
initializer "responders.flash_responder" do |app|
if app.config.responders.flash_keys
?
Responders::FlashResponder.flash_keys = app.config.responders.flash_keys
end
end
end
end
https://github.com/plataformatec/responders
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
96. Rails::Engine
?
Rails::Railtie + Paths + Autoload
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
97. RAILS::ENGINE
app/controllers
app/helpers
app/mailers
app/models
app/views
config/initializers/*.rb
config/routes.rb
? config/locales/*.{rb,yml}
lib
lib/tasks/*.rake
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
98. RAILS::ENGINE
Carrega automaticamente controllers,
helpers, models, mailers e views dentro do
diretório app/.
? O arquivo de rotas, initializers e locales são
detectados e carregados quando em config/,
seguindo a mesma estrutura da aplicação.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
99. RAILS::ENGINE
O diretório lib é adicionado ao
autoload_path do Rails.
? Os arquivos lib/tasks/*.rake são
automaticamente carregados, basta
seguir esta convenção.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
100. RAILS::ENGINE
O que não é carregado
automaticamente pela Engine:
migrations e assets na pasta public
? (javascripts, stylesheets, etc).
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
101. RAILS::ENGINE
module MyGem
class Engine < ::Rails::Engine
# Você pode alterar os load_paths padrão.
paths.app.controllers << "lib/controllers"
? end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
102. COMO EU CRIO UMA
RAILS::ENGINE???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
103. RAILS::ENGINE => COMO?
module MyGem
class Engine < ::Rails::Engine
# Acabamos de criar nossa engine.
? end
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
104. E QUANDO EU PRECISO DE UMA
RAILS::ENGINE???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
105. RAILS::ENGINE => QUANDO?
• Suas extensões precisarem de: rotas, controllers, views ou
mailers, por exemplo.
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
107. module Devise
class Engine < ::Rails::Engine
config.devise = Devise
# Initialize Warden and copy its configurations.
config.app_middleware.use Warden::Manager do |config|
Devise.warden_config = config
end
# Force routes to be loaded if we are doing any eager load.
config.before_eager_load { |app| app.reload_routes! }
initializer "devise.url_helpers" do
Devise.include_helpers(Devise::Controllers)
end
initializer "devise.omniauth" do |app|
Devise.omniauth_configs.each do |provider, config|
?
app.middleware.use config.strategy_class, *config.args do |strategy|
config.strategy = strategy
end
end
if Devise.omniauth_configs.any?
Devise.include_helpers(Devise::OmniAuth)
end
end
end
end
https://github.com/plataformatec/devise
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
108. Rails::Plugin
?
Rails::Engine + interno ao Rails
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
109. RAILS::PLUGIN
Engine com alguns conhecimentos
extras para carregar os plugins.
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
110. RAILS::PLUGIN
Engine com alguns conhecimentos
extras para carregar os plugins.
? E você ganha de brinde a habilidade
do Rails de carregar o arquivo
“init.rb” no diretório root do plugin.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
111. RAILS::PLUGIN
Cada plugin em vendor/plugins é carregado
pelo Rails como um Rails::Plugin.
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
112. RAILS::PLUGIN
Cada plugin em vendor/plugins é carregado
pelo Rails como um Rails::Plugin.
? Isto quer dizer que não é possível colocar
uma Engine dentro de vendor/plugins, porque
os arquivos seriam carregados duas vezes.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
113. COMO EU CRIO UM
RAILS::PLUGIN???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
114. RAILS::PLUGIN => COMO?
rails plugin install
rails server
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
115. E QUANDO EU PRECISO DE UM
RAILS::PLUGIN???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
116. RAILS::PLUGIN => QUANDO?
Nunca. Lembre-se: é interno ao Rails.
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
117. Rails::Application
?
Rails::Engine + App Bootstrap
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
118. RAILS::APPLICATION
Engine com super powers e a
responsabilidade de coordenar o
processo de inicialização da app.
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
119. RAILS::APPLICATION
Engine com super powers e a
responsabilidade de coordenar o
processo de inicialização da app.
? Inicializa railties, engines e plugins.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
120. RAILS::APPLICATION
Possui as configurações relativas a
aplicação, como o “cache_classes”.
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
121. RAILS::APPLICATION
Possui as configurações relativas a
aplicação, como o “cache_classes”.
Carrega e recarrega as rotas quando
? necessário, e constrói a estrutura de
middlewares da aplicação.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
122. RAILS::APPLICATION
Highlander!
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
123. RAILS::APPLICATION
Highlander!
?
raise "You cannot have more than one Rails::Application" if Rails.application
https://github.com/rails/rails/blob/3-0-stable/railties/lib/rails/application.rb
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
124. COMO EU CRIO UMA
RAILS::APPLICATION???
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
125. RAILS::APPLICATION => COMO?
rails new my_app
cd my_app
rails server
?
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
128. SIMPLE_FORM
Não é uma Rails::Application.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
129. SIMPLE_FORM
Não é uma Rails::Application.
Não é um Rails::Plugin.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
130. SIMPLE_FORM
Não é uma Rails::Application.
Não é um Rails::Plugin.
(a não ser que seja instalado como tal)
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
131. SIMPLE_FORM
Não é uma Rails::Application.
Não é um Rails::Plugin.
(a não ser que seja instalado como tal)
Não é uma Rails::Engine.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
132. SIMPLE_FORM
Não é uma Rails::Application.
Não é um Rails::Plugin.
(a não ser que seja instalado como tal)
Não é uma Rails::Engine.
Não é uma Rails::Railtie.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
133. SIMPLE_FORM
Nenhum hook é necessário,
podemos apenas utilizar a
estratégia de framework loading
sem precisar de uma Rails::Railtie.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
135. RESPONDERS
Não é uma Rails::Application.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
136. RESPONDERS
Não é uma Rails::Application.
Não é um Rails::Plugin.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
137. RESPONDERS
Não é uma Rails::Application.
Não é um Rails::Plugin.
(a não ser que seja instalado como tal)
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
138. RESPONDERS
Não é uma Rails::Application.
Não é um Rails::Plugin.
(a não ser que seja instalado como tal)
Não é uma Rails::Engine.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
139. RESPONDERS
Não é uma Rails::Application.
Não é um Rails::Plugin.
(a não ser que seja instalado como tal)
Não é uma Rails::Engine.
É uma Rails::Railtie.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
140. RESPONDERS
Permite configuração através do objeto :config;
Utiliza alguns hooks de inicialização;
Sobrescreve o :scaffold_generator para utilizar o
seu próprio.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
142. DEVISE
Não é uma Rails::Application.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
143. DEVISE
Não é uma Rails::Application.
Não é um Rails::Plugin.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
144. DEVISE
Não é uma Rails::Application.
Não é um Rails::Plugin.
(e NÃO DEVE ser instalado como tal)
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
145. DEVISE
Não é uma Rails::Application.
Não é um Rails::Plugin.
(e NÃO DEVE ser instalado como tal)
É uma Rails::Engine e por
consequência uma Rails::Railtie.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
146. DEVISE
Permite configuração através do objeto :config;
Utiliza alguns hooks de inicialização;
Adiciona middlewares;
Possui funções similares a uma aplicação, com
controllers, helpers, mailers, views e rotas, mas não
é capaz de rodar isoladamente.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
149. BUNDLER
bundle gem ruby_masters
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
150. BUNDLE GEM
Cria a estrutura de diretórios basica da gem.
Cria um arquivo Rakefile carregando tarefas do
próprio Bundler.
Inicializa um repositório git.
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
151. BUNDLE GEM
~/Projects [ree-1.8.7@rubymasters] $ bundle gem ruby_masters
create ruby_masters/Gemfile
create ruby_masters/Rakefile
create ruby_masters/.gitignore
create ruby_masters/ruby_masters.gemspec
create ruby_masters/lib/ruby_masters.rb
create ruby_masters/lib/ruby_masters/version.rb
Initializating git repo in ~/Projects/ruby_masters
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
152. BUNDLE GEM
Gemfile
source "http://rubygems.org"
# Specify your gem's dependencies in
ruby_masters.gemspec
gemspec
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
153. BUNDLE GEM
Rakefile
require 'bundler'
Bundler::GemHelper.install_tasks
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
154. BUNDLE GEM
ruby_masters.gemspec
# -*- encoding: utf-8 -*-
$:.push File.expand_path("../lib", __FILE__)
require "ruby_masters/version"
Gem::Specification.new do |s|
s.name = "ruby_masters"
s.version = RubyMasters::VERSION
s.platform = Gem::Platform::RUBY
s.authors = ["TODO: Write your name"]
s.email = ["TODO: Write your email address"]
s.homepage = ""
s.summary = %q{TODO: Write a gem summary}
s.description = %q{TODO: Write a gem description}
s.rubyforge_project = "ruby_masters"
# ... continua
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
155. BUNDLE GEM
lib/ruby_masters.rb
module RubyMasters
# Your code goes here...
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
156. BUNDLE GEM
lib/ruby_masters/version.rb
module RubyMasters
VERSION = "0.0.1"
end
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva
157. BUNDLE GEM
rake tasks
~/Projects/ruby_masters [ree-1.8.7@rubymasters] $ rake -T
rake build # Build ruby_masters-0.0.1.gem into the pkg directory
rake install # Build and install ruby_masters-0.0.1.gem into system gems
rake release # Create tag v0.0.1 and build and push ruby_masters-0.0.1.gem to Rubygems
Carlos Antonio blog.plataformatec.com.br @cantoniodasilva