SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Bower 
& 
RubyGems 
cada um no seu quadrado! 
@cezinha_anjos 
1
@cezinha_anjos 
• Programo há 25 anos. 
• Passei por diversas linguagens 
e paradigmas de programação. 
• Atualmente focado em Ruby on 
Rails e Javascript. 
• Gosto de OO, Clean Code, 
Design Patterns, BDD e Lean. 
• Diretor da ASSEINFO. 
2
• Estamos localizados em Tijucas - SC 
- 40 km de Florianópolis. 
• Somos em torno de 20 pessoas. 
• Quase nenhum verticalização 
hierárquica. Quem tem chefe é índio! 
• Desde 2001 no mercado de 
automação comercial. 
• Trabalhamos com ERP. 
• Foco em qualidade. 
• Já nascemos agile, mesmo antes de 
conhecer o manifesto ágil. 
3
Pacotes são geniais! 
4
apt-get / homebrew 
5
RubyGems são 
geniais! 
6
É o conceito de pacotes 
empregado em uma linguagem de 
programação. 
7
8 
rubygems
As RubyGems permitem um alto 
reaproveitamento de código ruby. 
9
DRY: don’t repeat yourself! 
• Olhe para seus projetos 
• Procure o que se repete entre eles 
• Extraia para gems 
10
RubyGems & front-end 
11
Você pode encapsular CSS e JS 
em RubyGems. 
12
O core team do Rails usa isso! 
• jquery-rails 
• jquery-ui-rails 
• jquery-ujs 
13
Então… qual é o problema? 
14
Você passa a ser dependente de 
mais um intermediário no 
processo. 
15
Exemplo: Twitter Bootstrap 
16
1 
github.com/twbs lança uma nova versão 
2 
github/seyhunak adapta para o Rails a nova versão do Bootstrap e 
coloca na gem 
3 
Você usa a gem no seu aplicativo 
17
Problemas? 
• Quanto tempo pode demorar para o vendor 
atualizar a gem? 
• Todo o CSS / JS envolvido fica transparente? 
• E se você quiser usar só uma parte do framework? 
18
Sensação de colocar quadrado em buraco redondo. 
19
Solução? 
20
Usar 
RubyGems 
exclusivamente 
para código 
ruby e Bower 
para front-end. 
21
Bower 
• Feito em node.js 
• Ridículo de instalar 
$ npm install -g bower 
22
Arquivos do projeto 
Ficam na raiz da pasta do projeto 
23
.bowerrc 
• Arquivo de configuração do projeto 
• Você pode definir o destino do download 
$ vim .bowerrc 
! 
{ 
"directory": "vendor/assets/bower" 
} 
24
bower.json 
• O arquivo bower.json descreve os pacotes que 
você está usando. 
• O bower.json está para o Bower assim como o 
Gemfile está para o Bundler. 
25
{ 
"name": “meu app", 
"version": "0.0.0", 
"homepage": "https://github.com/asseinfo/meuapp", 
"authors": [ 
"Cezinha <cesar@asseinfo.com.br>" 
], 
"private": true, 
"dependencies": { 
"jquery": "2.0.3", 
"jquery-ujs": "*", 
"jquery-ui": "1.10.3", 
"font-awesome": "4.0.3", 
"bootstrap-sass-official": "3.1.0+2" 
} 
} 
26
Principais comandos 
27
Inicializar um projeto 
$ bower init 
28
cezinha@machine:~/dev/tdc2014$ bower init 
[?] name: tdc2014 
[?] version: 0.0.0 
[?] description: 
[?] main file: 
[?] what types of modules does this package expose? 
[?] keywords: 
[?] authors: Cezinha <cesar@asseinfo.com.br> 
[?] license: MIT 
[?] homepage: 
[?] set currently installed components as 
dependencies? Yes 
[?] add commonly ignored files to ignore list? Yes 
29
30 
{ 
name: 'tdc2014', 
version: '0.0.0', 
authors: [ 
'Cezinha <cesar@asseinfo.com.br>' 
], 
license: 'MIT', 
private: true, 
ignore: [ 
'**/.*', 
'node_modules', 
'bower_components', 
'test', 
'tests' 
] 
} 
! 
[?] Looks good? (Y/n)
Procurar um pacote 
$ bower search bootstrap 
31
cezinha@machine:~/dev/tdc2014$ bower search bootstrap 
Search results: 
! 
bootstrap git://github.com/twbs/bootstrap.git 
angular-bootstrap git://github.com/angular-ui/bootstrap-bower.git 
sass-bootstrap git://github.com/jlong/sass-bootstrap.git 
bootstrap-sass git://github.com/jlong/sass-twitter-bootstrap 
bootstrap-datepicker git://github.com/eternicode/bootstrap-datepicker.git 
bootstrap-select git://github.com/silviomoreto/bootstrap-select.git 
bootstrap-timepicker git://github.com/jdewit/bootstrap-timepicker 
angular-ui-bootstrap git://github.com/angular-ui/bootstrap.git 
angular-ui-bootstrap-bower git://github.com/angular-ui/bootstrap-bower 
bootstrap-sass-official git://github.com/twbs/bootstrap-sass.git 
32
Instalar um pacote 
$ bower install bootstrap --save 
33
cezinha@machine:~/dev/tdc2014$ bower install bootstrap --save 
bower cached git://github.com/twbs/bootstrap.git#3.1.1 
bower validate 3.1.1 against git://github.com/twbs/bootstrap.git#* 
bower cached git://github.com/jquery/jquery.git#2.1.0 
bower validate 2.1.0 against git://github.com/jquery/jquery.git#>= 1.9.0 
bower new version for git://github.com/jquery/jquery.git#>= 1.9.0 
bower resolve git://github.com/jquery/jquery.git#>= 1.9.0 
bower download https://github.com/jquery/jquery/archive/2.1.1.tar.gz 
bower extract jquery#>= 1.9.0 archive.tar.gz 
bower resolved git://github.com/jquery/jquery.git#2.1.1 
bower install bootstrap#3.1.1 
bower install jquery#2.1.1 
! 
bootstrap#3.1.1 bower_components/bootstrap 
└── jquery#2.1.1 
! 
jquery#2.1.1 bower_components/jquery 
34
Checkout do projeto 
35
Checkout do projeto 
$ git clone meu-projeto 
$ cd meu-projeto 
$ bundle install 
$ bower install 
O bower install baixará suas dependências de front-end. 
36
bower + sass = flexibilidade 
37
$ bower install bootstrap-sass- 
official --save 
38
Você pode customizar o 
bootstrap em ambiente 
“development” 
39
$ vim meu-bootstrap-personalizado.css.scss! 
! 
$grid-columns: 36; 
$grid-gutter-width: 10px; 
! 
$navbar-height: 50px; 
$navbar-default-bg: #4D6B82; 
$navbar-default-link-color: #FFF; 
! 
$navbar-default-link-active-color: #FFF; 
$navbar-default-link-active-bg: #E77817; 
$navbar-default-link-hover-bg: #E77817; 
$navbar-default-link-hover-color: #FFF; 
! 
@import "bootstrap-sass-official/vendor/assets/stylesheets/ 
bootstrap/bootstrap.scss"; 
40
CMD + R / CTRL + F5 
mostra as modificações 
em development 
41
Sass é genial! 
42
So long, and thanks for all 
the fish! 
@cezinha_anjos 
cezinha.info 
asseinfo.com.br 
43

Mais conteúdo relacionado

Mais procurados

Framework Próprio: Vale a Pena?
Framework Próprio: Vale a Pena?Framework Próprio: Vale a Pena?
Framework Próprio: Vale a Pena?Hiarison Gigante
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o gruntAlmir Filho
 
Produtividade nas Trincheiras - As armas do desenvolvedor web
Produtividade nas Trincheiras - As armas do desenvolvedor webProdutividade nas Trincheiras - As armas do desenvolvedor web
Produtividade nas Trincheiras - As armas do desenvolvedor webJulio Bitencourt
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureGiovanni Bassi
 
É fácil ser ágil usando .NET
É fácil ser ágil usando .NETÉ fácil ser ágil usando .NET
É fácil ser ágil usando .NETGiovanni Bassi
 
Conhecendo Angular 2
Conhecendo Angular 2Conhecendo Angular 2
Conhecendo Angular 2Lab 1024
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações webJean Carlo Emer
 
Criando infraestrutura de Azure com Fluebn API e C#
Criando infraestrutura de Azure com Fluebn API e C#Criando infraestrutura de Azure com Fluebn API e C#
Criando infraestrutura de Azure com Fluebn API e C#CDS
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactJean Carlo Emer
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terEmerson Macedo
 
Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxJorge Pereira
 

Mais procurados (18)

Framework Próprio: Vale a Pena?
Framework Próprio: Vale a Pena?Framework Próprio: Vale a Pena?
Framework Próprio: Vale a Pena?
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o grunt
 
Bricklayer
BricklayerBricklayer
Bricklayer
 
Esse cara é o grunt
Esse cara é o gruntEsse cara é o grunt
Esse cara é o grunt
 
Produtividade nas Trincheiras - As armas do desenvolvedor web
Produtividade nas Trincheiras - As armas do desenvolvedor webProdutividade nas Trincheiras - As armas do desenvolvedor web
Produtividade nas Trincheiras - As armas do desenvolvedor web
 
ASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e AzureASP.NET Core com Linux, Docker e Azure
ASP.NET Core com Linux, Docker e Azure
 
Introdução a golang
Introdução a golangIntrodução a golang
Introdução a golang
 
É fácil ser ágil usando .NET
É fácil ser ágil usando .NETÉ fácil ser ágil usando .NET
É fácil ser ágil usando .NET
 
Introdução ao kotlin
Introdução ao kotlinIntrodução ao kotlin
Introdução ao kotlin
 
Conhecendo Angular 2
Conhecendo Angular 2Conhecendo Angular 2
Conhecendo Angular 2
 
Cache em aplicações web
Cache em aplicações webCache em aplicações web
Cache em aplicações web
 
Criando infraestrutura de Azure com Fluebn API e C#
Criando infraestrutura de Azure com Fluebn API e C#Criando infraestrutura de Azure com Fluebn API e C#
Criando infraestrutura de Azure com Fluebn API e C#
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Aplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre ReactAplicações Web - um estudo sobre React
Aplicações Web - um estudo sobre React
 
Ionic workshop
Ionic workshopIonic workshop
Ionic workshop
 
Nodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis terNodejs - A performance que eu sempre quis ter
Nodejs - A performance que eu sempre quis ter
 
Dia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no LinuxDia Debian 2007 - Desenvolvendo aplicações no Linux
Dia Debian 2007 - Desenvolvendo aplicações no Linux
 

Destaque

Brochure Willem II Business 11 12
Brochure Willem II Business 11 12Brochure Willem II Business 11 12
Brochure Willem II Business 11 12frankbrugel
 
The New Value Platform
The New Value PlatformThe New Value Platform
The New Value Platformmarmstrong_fiq
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...
Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...
Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...Cezinha Anjos
 
Questionnaire in knowledge management
Questionnaire in knowledge managementQuestionnaire in knowledge management
Questionnaire in knowledge managementgirish_rohra
 

Destaque (8)

Brochure Willem II Business 11 12
Brochure Willem II Business 11 12Brochure Willem II Business 11 12
Brochure Willem II Business 11 12
 
Expo ingles
Expo inglesExpo ingles
Expo ingles
 
The New Value Platform
The New Value PlatformThe New Value Platform
The New Value Platform
 
Ch03
Ch03Ch03
Ch03
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Impresionismo pp
Impresionismo ppImpresionismo pp
Impresionismo pp
 
Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...
Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...
Javascript assíncrono - Um bate-papo sobre event loop, event queue, callbacks...
 
Questionnaire in knowledge management
Questionnaire in knowledge managementQuestionnaire in knowledge management
Questionnaire in knowledge management
 

Semelhante a Bower e RubyGems cada um no seu quadrado

GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas PráticasCDS
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Renato Groff
 
Como colaborar com projetos opensource com o GitHub
Como colaborar com projetos opensource com o GitHubComo colaborar com projetos opensource com o GitHub
Como colaborar com projetos opensource com o GitHubJulio Monteiro
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimentamichel adriano medeiros
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Renato Groff
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Renato Groff
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance RailsVitor Pellegrino
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressTiago Hillebrandt
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo realEvandro Silvestre
 
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
.NET Core + Docker: containers e seus benefícios no deployment de aplicações.NET Core + Docker: containers e seus benefícios no deployment de aplicações
.NET Core + Docker: containers e seus benefícios no deployment de aplicaçõesRenato Groff
 
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ....NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...Renato Groff
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Renato Groff
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Stefan Teixeira
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Renato Groff
 

Semelhante a Bower e RubyGems cada um no seu quadrado (20)

GitHub Boas Práticas
GitHub Boas PráticasGitHub Boas Práticas
GitHub Boas Práticas
 
Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0Ruby on Rails for beginners 2.0
Ruby on Rails for beginners 2.0
 
Mean Stack
Mean StackMean Stack
Mean Stack
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
Tecnologias Microsoft em Linux: .NET Core, SQL Server e Visual Studio Code - ...
 
Como colaborar com projetos opensource com o GitHub
Como colaborar com projetos opensource com o GitHubComo colaborar com projetos opensource com o GitHub
Como colaborar com projetos opensource com o GitHub
 
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando PimentaIniciando com Ruby on Rails - Luiz Fernando Pimenta
Iniciando com Ruby on Rails - Luiz Fernando Pimenta
 
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
Docker: primeiros passos - Semana FCI - Mackenzie - Outubro-2019
 
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
Docker: Conceitos e Primeiros Passos na utilização de Containers - Programand...
 
Workshop Performance Rails
Workshop Performance RailsWorkshop Performance Rails
Workshop Performance Rails
 
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPressFerramentas Essenciais para Desenvolvedores de Plugins WordPress
Ferramentas Essenciais para Desenvolvedores de Plugins WordPress
 
Source-to-container no mundo real
Source-to-container no mundo realSource-to-container no mundo real
Source-to-container no mundo real
 
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
.NET Core + Docker: containers e seus benefícios no deployment de aplicações.NET Core + Docker: containers e seus benefícios no deployment de aplicações
.NET Core + Docker: containers e seus benefícios no deployment de aplicações
 
Curso AngularJS - Parte 1
Curso AngularJS - Parte 1Curso AngularJS - Parte 1
Curso AngularJS - Parte 1
 
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ....NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
.NET Core + Docker: containers e seus benefícios no deployment de aplicações ...
 
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
 
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
Agile Testers Conference 2016 - GoCD + Docker + Docker Compose: uma história ...
 
Web open source
Web open sourceWeb open source
Web open source
 
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
Docker + Bancos de Dados: descomplicando a montagem de ambientes de Desenvolv...
 

Bower e RubyGems cada um no seu quadrado

  • 1. Bower & RubyGems cada um no seu quadrado! @cezinha_anjos 1
  • 2. @cezinha_anjos • Programo há 25 anos. • Passei por diversas linguagens e paradigmas de programação. • Atualmente focado em Ruby on Rails e Javascript. • Gosto de OO, Clean Code, Design Patterns, BDD e Lean. • Diretor da ASSEINFO. 2
  • 3. • Estamos localizados em Tijucas - SC - 40 km de Florianópolis. • Somos em torno de 20 pessoas. • Quase nenhum verticalização hierárquica. Quem tem chefe é índio! • Desde 2001 no mercado de automação comercial. • Trabalhamos com ERP. • Foco em qualidade. • Já nascemos agile, mesmo antes de conhecer o manifesto ágil. 3
  • 7. É o conceito de pacotes empregado em uma linguagem de programação. 7
  • 9. As RubyGems permitem um alto reaproveitamento de código ruby. 9
  • 10. DRY: don’t repeat yourself! • Olhe para seus projetos • Procure o que se repete entre eles • Extraia para gems 10
  • 12. Você pode encapsular CSS e JS em RubyGems. 12
  • 13. O core team do Rails usa isso! • jquery-rails • jquery-ui-rails • jquery-ujs 13
  • 14. Então… qual é o problema? 14
  • 15. Você passa a ser dependente de mais um intermediário no processo. 15
  • 17. 1 github.com/twbs lança uma nova versão 2 github/seyhunak adapta para o Rails a nova versão do Bootstrap e coloca na gem 3 Você usa a gem no seu aplicativo 17
  • 18. Problemas? • Quanto tempo pode demorar para o vendor atualizar a gem? • Todo o CSS / JS envolvido fica transparente? • E se você quiser usar só uma parte do framework? 18
  • 19. Sensação de colocar quadrado em buraco redondo. 19
  • 21. Usar RubyGems exclusivamente para código ruby e Bower para front-end. 21
  • 22. Bower • Feito em node.js • Ridículo de instalar $ npm install -g bower 22
  • 23. Arquivos do projeto Ficam na raiz da pasta do projeto 23
  • 24. .bowerrc • Arquivo de configuração do projeto • Você pode definir o destino do download $ vim .bowerrc ! { "directory": "vendor/assets/bower" } 24
  • 25. bower.json • O arquivo bower.json descreve os pacotes que você está usando. • O bower.json está para o Bower assim como o Gemfile está para o Bundler. 25
  • 26. { "name": “meu app", "version": "0.0.0", "homepage": "https://github.com/asseinfo/meuapp", "authors": [ "Cezinha <cesar@asseinfo.com.br>" ], "private": true, "dependencies": { "jquery": "2.0.3", "jquery-ujs": "*", "jquery-ui": "1.10.3", "font-awesome": "4.0.3", "bootstrap-sass-official": "3.1.0+2" } } 26
  • 28. Inicializar um projeto $ bower init 28
  • 29. cezinha@machine:~/dev/tdc2014$ bower init [?] name: tdc2014 [?] version: 0.0.0 [?] description: [?] main file: [?] what types of modules does this package expose? [?] keywords: [?] authors: Cezinha <cesar@asseinfo.com.br> [?] license: MIT [?] homepage: [?] set currently installed components as dependencies? Yes [?] add commonly ignored files to ignore list? Yes 29
  • 30. 30 { name: 'tdc2014', version: '0.0.0', authors: [ 'Cezinha <cesar@asseinfo.com.br>' ], license: 'MIT', private: true, ignore: [ '**/.*', 'node_modules', 'bower_components', 'test', 'tests' ] } ! [?] Looks good? (Y/n)
  • 31. Procurar um pacote $ bower search bootstrap 31
  • 32. cezinha@machine:~/dev/tdc2014$ bower search bootstrap Search results: ! bootstrap git://github.com/twbs/bootstrap.git angular-bootstrap git://github.com/angular-ui/bootstrap-bower.git sass-bootstrap git://github.com/jlong/sass-bootstrap.git bootstrap-sass git://github.com/jlong/sass-twitter-bootstrap bootstrap-datepicker git://github.com/eternicode/bootstrap-datepicker.git bootstrap-select git://github.com/silviomoreto/bootstrap-select.git bootstrap-timepicker git://github.com/jdewit/bootstrap-timepicker angular-ui-bootstrap git://github.com/angular-ui/bootstrap.git angular-ui-bootstrap-bower git://github.com/angular-ui/bootstrap-bower bootstrap-sass-official git://github.com/twbs/bootstrap-sass.git 32
  • 33. Instalar um pacote $ bower install bootstrap --save 33
  • 34. cezinha@machine:~/dev/tdc2014$ bower install bootstrap --save bower cached git://github.com/twbs/bootstrap.git#3.1.1 bower validate 3.1.1 against git://github.com/twbs/bootstrap.git#* bower cached git://github.com/jquery/jquery.git#2.1.0 bower validate 2.1.0 against git://github.com/jquery/jquery.git#>= 1.9.0 bower new version for git://github.com/jquery/jquery.git#>= 1.9.0 bower resolve git://github.com/jquery/jquery.git#>= 1.9.0 bower download https://github.com/jquery/jquery/archive/2.1.1.tar.gz bower extract jquery#>= 1.9.0 archive.tar.gz bower resolved git://github.com/jquery/jquery.git#2.1.1 bower install bootstrap#3.1.1 bower install jquery#2.1.1 ! bootstrap#3.1.1 bower_components/bootstrap └── jquery#2.1.1 ! jquery#2.1.1 bower_components/jquery 34
  • 36. Checkout do projeto $ git clone meu-projeto $ cd meu-projeto $ bundle install $ bower install O bower install baixará suas dependências de front-end. 36
  • 37. bower + sass = flexibilidade 37
  • 38. $ bower install bootstrap-sass- official --save 38
  • 39. Você pode customizar o bootstrap em ambiente “development” 39
  • 40. $ vim meu-bootstrap-personalizado.css.scss! ! $grid-columns: 36; $grid-gutter-width: 10px; ! $navbar-height: 50px; $navbar-default-bg: #4D6B82; $navbar-default-link-color: #FFF; ! $navbar-default-link-active-color: #FFF; $navbar-default-link-active-bg: #E77817; $navbar-default-link-hover-bg: #E77817; $navbar-default-link-hover-color: #FFF; ! @import "bootstrap-sass-official/vendor/assets/stylesheets/ bootstrap/bootstrap.scss"; 40
  • 41. CMD + R / CTRL + F5 mostra as modificações em development 41
  • 43. So long, and thanks for all the fish! @cezinha_anjos cezinha.info asseinfo.com.br 43