Saturday, April 24, 2010

Estudo de Ruby on Rails

Há algum tempo atrás comecei a estudar Ruby on Rails após conhecer um entusiasta da tecnologia em um Chopps em Niterói/RJ, Vinicius Manhaes Teles.

Durante o estudo da tecnologia acabei gerando uma lista com os links que mais gostei para os assuntos relacionados ao Ruby on Rails. Como essa informação pode ser preciosa para quem está começando ou para quem já sabe Rails, resolvi compartilhar com todos.

Seguem os links por assunto:

Instalação do Rails no Ubuntu:
http://brunograsselli.com.br/2009/01/instalar-ruby-on-rails-mysql-no-ubuntu.html
GIT: http://brunograsselli.com.br/2009/02/instalar-git-no-ubuntu.html

Tutoriais/links muito bons:
http://net.tutsplus.com/tutorials/ruby/20-ruby-on-rails-tutorials-to-rule-them-all/
http://www.matthewpaulmoore.com/ruby-on-rails-code-quality-checklist

Desenvolvimento rápido, muito bom (plugins + gems):
http://jimneath.org/2008/11/15/speeding-up-rails-development/

Modularização em rails:
http://railscasts.com/episodes/94-activeresource-basics
http://railscasts.com/episodes/95-more-on-activeresource

Rails e Oracle:
http://www.oracle.com/technology/pub/articles/haefel-oracle-ruby.html
http://journal.dedasys.com/2009/07/03/ruby-oci8-and-libaio

Tutorial de rake:
http://railsenvy.com/2007/06/11/ruby-on-rails-rake-tutorial

Site com um monte de gems e plugins agrupados por funcionalidade:
http://www.ruby-toolbox.com/

MUITOOOOSSS Screencasts:
http://www.learnivore.com

Menus semânticos(construção com "ul" e "li"):
http://github.com/danielharan/semantic-menu

#Assets host fora da aplicação:
config.action_controller.asset_host = "http://static.xxx.br/"

#Formularios maneiros (jquery)
http://pixelmatrixdesign.com/uniform/#example

# Template com muitas rake tasks (memcached...) e com plugins e gems interessantes. Vale a pena conferir
http://github.com/lucashungaro/eureka/blob/master/template.rb

# Muitos guias do básico ao avançado!!!! MT BOMMMMM
http://guides.rubyonrails.org

#TODO:

* Estudar ...

Comandos legais:
Alguns comandos básicos/interessantes:

* rails 'nome_aplicacao'
o Gera a aplicação rails, com tudo que tem direito
* script/generate scaffold Usuario nome:string email:string
o Gera um CRUD de usuário
* rake db:create:all
o Cria todos os bancos: teste, desenvolvimento e produção
* rake db:migrate
o Aplica todas as migrações no banco de desenvolvimento (padrão)
* rake db:migrate ENV=production
o Aplica todas as migrações no banco de produção
* rake spec
o Roda os testes do rspec
* rake spec:rcov
o Roda o relatório de cobertura de código com base nos testes do rspec
* rake stats
o Exibe as estatísticas do projeto, como por exemplo, a quantidade de linhas de código de teste por linha de código da aplicação
* Lista completa de comandos RAKE:
o http://thinkingrails.blogspot.com/2007/06/rails-rake-tasks-reference.html
* Descobrir CHAVES_ESTRANGEIRAS no MySQL:
o select distinct CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME from information_schema.TABLE_CONSTRAINTS where CONSTRAINT_SCHEMA = 'NOME_DO_BANCO_DE_DADOS';
* rake gems
o Lista as gems que a aplicacao depende (baseia-se no environment.rb para isso)
* Instead of requiring 'ruby-debug' in your environment.rb, pass the flag '--debugger' when you start your server. (script/server --debugger)





Gems e Plugins interessantes:

plugin 'exception_notifier', :git => 'git://github.com/rails/exception_notification.git'
plugin 'open_id_authentication', :git => 'git://github.com/rails/open_id_authentication.git'
plugin 'asset_packager', :git => 'http://synthesis.sbecker.net/pages/asset_packager'
plugin 'role_requirement', :git => 'git://github.com/timcharper/role_requirement.git'
plugin 'restful-authentication', :git => 'git://github.com/technoweenie/restful-authentication.git'

gem 'mislav-will_paginate', :version => '~> 2.2.3', :lib => 'will_paginate', :source => 'http://gems.github.com'
gem 'rubyist-aasm'
gem 'ruby-openid'


# Saber em qual metodo uma determinada query foi chamada:
http://github.com/ntalbott/query_trace

# Indices no banco de dados:
http://github.com/eladmeidar/rails_indexes



Testes:
Video muito bom:
http://vimeo.com/7108280

sudo gem install rspec
sudo gem install rspec-rails
sudo gem install rcov
sudo gem install ZenTest

sudo gem install autotest-rails
sudo gem install autotest-growl

Instalando o ruby-growl
sudo gem install ruby-growl

touch ~/.autotestoracle
pico ~/.autotest

Adicionar a linha:
require 'autotest/growl'

Gerando o a estrutura do rspec:
./script/generate rspec

Rodando os testes:
rake spec

Relatório de cobertura:
rake spec:rcov

Colocar no /config/environments/test.rb
ENV['RSPEC']="true"

Rodar o testes automaticamente com o autotest:
autotest

# AINDA Não funcionou
#To enable the "Red / Green" plugin add the following line to your .autotest file:
#require 'autotest/redgreen'

Antes de começar, entender bem como são as User Stories e principalmente o jeito INVEST de criá-las:
http://dannorth.net/whats-in-a-story

Antes de começar, problemas e recomendações:
http://www.milfont.org/tech/2009/06/01/recomendacao-sobre-tdd/

DESENVOLVER COM TESTES ( BDD = Selenium + RSpec ) - MUITO BOM! :
http://jefferson.eti.br/?p=96
http://jefferson.eti.br/?p=105
http://jefferson.eti.br/?p=139

RSPEC:
No arquivo spec.opts, trocar:
--format progress
por
--format specdoc
ou
--format html:spec/spec_report.html

CONFIGURACAO PARA USAR SELENIUM E WEBRAT!!!
http://wiki.github.com/aslakhellesoy/cucumber/setting-up-selenium

Geraçao de Features do Cucumber: http://lowdownapp.com/

CUCUMBER + WEBRAT + SELENIUM: http://robots.thoughtbot.com/post/189412598/five-ridiculously-awesome-cucumber-and-webrat

Continous Integration with CruiseControl.rb :::
http://gist.github.com/27281
http://www.elevatedrails.com/articles/2007/05/05/ci-with-cruisecontrolrb/

Adicionar projeto ao CruiseControl.rb
./cruise add nome_projeto -s svn -r http://svn.nome_projeto.br/pasta/
--username username --password senha

Iniciar o CruiseControl.rb
./cruise start


Rotas:
Ler capítulo de rotas do Rails Way

Ver esse screencast:
http://www.teachmetocode.com/screencasts/10

Templates/HTML:
Fluid layout com YUI:
http://24ways.org/2006/intricate-fluid-layouts

YUI:
http://developer.yahoo.com/yui/layout/

Vários templates legais:
http://www.freelayouts.com/users/csstemplates


VIEW:

Trocar combobox por ajax:
http://code.google.com/p/recordselect/

FORMULARIOS:
http://code.google.com/p/jquery-asmselect/
Multi-select: http://www.emposha.com/javascript/jquery/jquerymultiselect.html
Validação: http://www.position-relative.net/creation/formValidator/
Validação de password: http://bassistance.de/jquery-plugins/jquery-plugin-password-validation/
Validação com Ajax: http://jqueryfordesigners.com/using-ajax-to-validate-forms/
Máscara para campos: http://www.meiocodigo.com/projects/meiomask/#mm_demos
Autocomplete: http://jquery.bassistance.de/autocomplete/demo/
Tooltip: http://www.codylindley.com/blogstuff/js/jtip/

Menus DropDown:
http://www.1stwebdesigner.com/resources/38-jquery-and-css-drop-down-multi-level-menu-solutions/

Autenticação/Segurança:
7 tips de segurança em Rails:
http://guides.rails.info/security.html


SSO in Rails:
http://blog.thinkrelevance.com/2007/1/8/cas-sso-and-rails
http://code.google.com/p/rubycas-server/



Email:
Com gmail, mas tem um erro no Post. No lugar de "Teste.deliver_notificar" mudar para "Notificador.deliver_notificar" :
http://www.meupost.com/2009/02/15/usando-o-gmail-para-enviar-e-mail-com-o-actionmailer-no-rails/



Nginx:

http://www.igvita.com/2008/02/11/nginx-and-memcached-a-400-boost/
http://www.joeandmotorboat.com/2008/02/28/apache-vs-nginx-web-server-performance-deathmatch/

# Servidor EBB
http://www.makemesimple.com/blog/2008/03/04/ebb-novo-web-server-para-ruby/

#Node.js
http://pgrs.net/2010/2/1/web-proxy-in-node-js-for-high-availability
http://pgrs.net/2010/2/1/web-proxy-in-node-js-for-high-availability
http://pgrs.net/2010/2/28/node-js-redis-and-resque


Capistrano:

http://articles.slicehost.com/2008/1/18/capistrano-series-configuring-capistrano-1


Para quem está começando acho que esses links valem bastante a pena! Inclusive se seguidos na ordem em que os criei.

Valeu e até a próxima!

No comments:

Post a Comment