Encontro de Maio/2012 na 21212
Pessoal,
Está confirmado o nosso encontro amanhã, dia 11/05 de 10h às 17h na 21212 .
O endereço é: Rua Voluntários da Pátria, 286, sala 303, Botafogo
Já temos confirmadas as seguintes palestras:
“Abbreviations do vim” por Hugo Roque
Imagine que ao invés de ter que escrever aquele for verboso do javascript você possa escrever somente: i 1 10 upto e ao pressionar o enter, magicamente isso se transforme em: for(var i=1;i<=10;i++) { } No vim, isso é possível através de um recurso que se chama abbreviation, muito interessante para o pessoal que ama o vim.
Desenvolver em Ruby no Windows? por Thiago Luiz Silva
Não é tão masoquismo quanto parece e você nem vai precisar mais bootar quando for jogar Skyrim.
Brincadeiras a parte, nem todos podem se dar ao luxo de usar um dual boot ou deixar uma máquina virtual rodando no background. Veja como montar um ambiente de desenvolvimento, alguns prós e contras da plataforma da microsoft.
A maior parte do tempo será dedicado de fato ao Hack Day, então venha colocar a mão na massa conosco, fazer networking e trocar informação.
Contamos com a presença da comunidade!
Let´s Hack!"
abraço.
Como foi o Encontro de Março/2012 na 21212

Galera, tenho certeza que todos que estavam presentes irão concordar comigo, quando digo que o último encontro do Ruby On Rio foi um sucesso total!

Começamos pela a organização das palestras, Tauil muito obrigado por ter usado o Call4paperz para colocarmos as palestras. Dessa forma foi fácil para todos saberem quais palestras seriam dadas no dia do encontro. Vamos usar sempre agora! :)

Queria fazer um agradecimento especial à todos que palestraram:
- Vagner Zampieri pela palestra de “Introdução ao Shoes”, foi bem legal conhecer esse framework;
- Hugo Roque pela palestra de “Simulando Named Parameter em Ruby”;
- Rafael Tauil pela palestra de “Criando Interfaces para dispositivos móveis numa aplicação Rails”;
- Bruno Barros pela palestra de “Automatizando Infraestrutura com Chef”;
- Vitor Pellegrino pela palestra de “Jakpot: A maneira mais fácil de receber dinheiro com sua app Rails”;
- Bruno Maciel pela palestra de “Omniauth, one auth to the role all”;
- Diego Santana pela palestra de "Javascript e JQuery no dia-à-dia.

Agradecer também a 21212 pelas pizzas (que rendeu um bom bate-papo no intervalo para come-las) e por nos emprestar a sala Maracanã do seu escritório.


Neste encontro tivemos um quorum de 20 participantes! Vamos fazer do próximo encontro, melhor que do que o último!
Mais fotos do encontro: http://twitter.com/rubyonrio
Abraços!
Arthur Granado – 21212’s Developer
Encontro de Março/2012 na 21212
Pessoal,
Está confirmado nosso próximo encontro! Ele será realizado no último sábado do mês, dia 31/03 de 10h às 17h na 21212 .
O endereço é: Rua Voluntários da Pátria, 286, sala 303, Botafogo
Já temos confirmadas as seguintes palestras:
Introdução à bancos de dados NoSQL com MongoDB: por Brand New Code
Evolução dos bancos de dados; Bancos de dados relacionais versus NoSQL; Os diferentes tipos de bancos de dados NoSQL; Introdução ao MongoDB; Manipulação de dados com consultas em Javascript; Modelagem de documentos; Dicas avançadas.
Introdução ao Shoes por Vagner Zampieri
Shoes é um toolkit multi-plataforma para criação de aplicativos facilmente usando Ruby. Diferentemente da maioria dos outros kits de ferramentas GUI, Shoes é projetado para ser fácil e simples sem perder o poder.
Simulando Named Parameter em ruby por Hugo Roque
Uma breve demonstração e olhada no código da gem que eu criei, que tenta simular named parameter em ruby. https://github.com/HugoLnx/named_parameter
Ainda dá tempo para cadastrar sua proposta em de palestras no http://call4paperz.com/events/encontro-rubyonrio-21212.
A idéia é reunir a comunidade, fazer networking e trocar informação.
Maiores detalhes na próxima semana.
Contamos com a presença da comunidade!
Faça sua inscrição aqui
Como foi o Encontro de Fevereiro/2012 na 21212
Posso dizer que o encontro foi um sucesso!

Foram apresentadas ideias, projetos e ferramentas:
O Arthur da @21212 mostrou um projeto seu de blocos de carnaval que promete ajudar muitos foliões a encontrarem seus amigos em meio às batucadas.

Foram apresentados uns 3 projetos de buscas de ofertas, mas infelizmente não anotei os nomes de todos. Um deles, pareceu bem adiantado, o Oferta Exclusiva. Vamos esperar ficar pronto para ter as melhores ofertas da rede.

O @VagnerZampieri falou sobre o projeto proposto pela @KoshTech em parceria com o @RubyOnRio de criar uma GEM para emissão de notas fiscais eletrônicas. Confira no GitHub do grupo: https://github.com/rubyonrio/NFe. Na verdade, o papo sobre este projeto iniciou-se na lista no ano passado, mas houveram contra-tempos e a ideia ficou meio parada. Agora a coisa vai andar!


Apresentei o Dumuzzi, um sistema de monitoramento que iniciamos no RallyOnRails no ano passado. Mais detalhes sobre o Rally, o projeto e como tudo se passou em http://www.minim.in/tn.
Tivemos ainda o @IgorSantos07 falando sobre o Padrino, projeto que utiliza o Sinatra como base para criar um framework com a proposta de ser leve sem deixar à desejar nos quesitos recursos e poder.
Houve uma discussão sobre JavaScript, na qual o @RodrigoVidal falou sobre como utilizar a programação JS de forma correta, sem gambiarras e utilizando frameworks para organizar código e bibliotecas de forma eficiente. Esta foi uma parte muito interessante, pois, deu uma visão diferente de como lidar com JS: “…Muitas vezes o desenvolvedor faz um alert ou window.open e acha que sabe JS, até que pegue um projeto realmente grande, na qual exista lógicas de negócio no código JS… Neste momento é que ele descobre que não sabe JS…”, afirmou. Todos concordamos com sua abordagem, e agradecemos pelo precioso ponto de vista. ;-)
Muitos links foram apresentados, entre os quais posso destacar os que pude anotar:
RequireJS, a JavaScript file and module loader
http://requirejs.org/
Express, ferramenta quase indispensável no desenvolvimento web com Node.js
http://expressjs.com/
DANFE generator for Brazilian NFE
http://rubygems.org/gems/ruby_danfe
Sphinx, an open source full text search server
http://sphinxsearch.com
Next Generation Databases mostly addressing some of the points
http://nosql-database.org/
HTML 5 experimentation and demos I’ve hacked together
http://html5demos.com/
Sinatra
http://www.sinatrarb.com
Padrino
http://www.padrinorb.com
Outros links foram passados, mas não os anotei, infelizmente. Peço aos demais colegas que compareceram ao encontro que postem nos comentários os links que anotaram. Aproveitem e descrevam de seu ponto de vista o que rolou no encontro. Certamente eu esqueci de muita coisa. ;-)

As fotos que bati no encontro podem ser vistas no Twitpic: http://twitpic.com/photos/fernandokosh
E uma boa notícia: O @chavao entrou na lista e vai se tornar mais um Rubista. Ele prometeu ir ao próximo encontro.
Em nome da comunidade Ruby no Rio de Janeiro, agradeço à @21212 pela oportunidade, espaço e por terem nos recebido de braços abertos. E no embalo, convido os colegas desenvolvedores para apresentarem projetos, ideias e palestras no próximo. Não sejam tímidos, compareçam!
Nos vemos todos lá.
Encontro de Fevereiro/2012
Pessoal,
Está confirmado nosso próximo encontro! Ele será realizado no próximo sábado, dia 04/02 de 10h às 17h na 21212 .
O endereço é: Rua Voluntários da Pátria, 286, sala 303, Botafogo
Irão rolar algumas palestras e caso alguém também esteja trabalhando com algum plugin ou projeto interessante, haverá tempo/espaço para mostrar.
A idéia é reunir a comunidade, fazer networking e trocar informação.
Para não precisarmos sair, a 21212 vai bancar algumas pizzas para os participantes!
ArgumentError: invalid byte sequence in US-ASCII durante o "bundle install"
Depois de muito apanhar, finalmente consegui resolver o problema para a mensagem: “ArgumentError: invalid byte sequence in US-ASCII” durante o “bundle install”.
O erro estava acontecendo precisamente na gem integration, fork do Rodrigo Pinto, porém já vi esse erro em algumas outras gems.
Detalhe que nem mesmo com a correção de encoding feita resolveu meu problema.
Output do erro:
Using integration (0.0.1) from git://github.com/rodrigopinto/integration.git (at master)
ArgumentError: invalid byte sequence in US-ASCII
An error occured while installing integration (0.0.1), and Bundler cannot continue.
Make sure that `gem install integration -v '0.0.1'` succeeds before bundling.
Solução:
Por incrível que pareça, a solução foi rodar:
export LANG=en_US.UTF-8
e depois o bundle install funcionou perfeitamente.
Post original: http://rafael.tauil.com.br/2011/11/22/argumenterror-invalid-byte-sequence-in-us-ascii-durante-o-bundle-install
Referência: http://lenart.posterous.com/fixing-argumenterror-invalid-byte-sequence-in
Silenciando o log dos Assets no Rails 3.1
Desde que eu comecei usar o Rails 3.1, me senti incomodado com os logs dos assets no console, dificultando bastante fazer um “debug visual”, sendo assim fui procurar uma solução para o problema e encontrei duas formas de solucionar, porém a segunda é a que deixa o log igual quando não havia assets sendo logado, sendo essa, a forma que irei compartilhar aqui.
Basta criar um arquivo novo no initializers, por exemplo lib/initializers/quiet_assets.rb e colocar o código a seguir:
Rails.application.assets.logger = Logger.new('/dev/null')
Rails::Rack::Logger.class_eval do
def before_dispatch_with_quiet_assets(env)
before_dispatch_without_quiet_assets(env) unless env['PATH_INFO'].index("/assets/") == 0
end
alias_method_chain :before_dispatch, :quiet_assets
end
Esta solução é interessante mas, particularmente eu iria preferir configurar algo no enviroment como:
config.assets.logger = false
Apesar disso não ser possível, EU acredito que o pessoal do rails vá implementar algo do tipo, mediante uma boa parte dos desenvolvedores terem sentido o mesmo incomodo diante de tanto log desnecessário.
Abraços e até mais,
Rodrigo Pinto
Fotos do Rails 3.1 HackFest
Quem não foi perdeu. Estou falando do Rails 3.1 HackFest, que estava mais para Hack’n Beer.
Fiquem com as fotos
Restful Authentication #Hackday
Neste domingo, a partir das 10:00h, a comunidade RubyOnRio irá realizar um #Hackday para atualizar a gem Restful Authentication1 para funcionar com o Rails 3.1. O evento será organizado pelo @bkether, @lucianosousa e @tauil
A janela de conversa utilizada será o irc.freenode.net #rubyonrio, podendo rolar sessão de skype e afins.
Contamos com vocês.
Abs.
1 https://github.com/rubyonrio/restful-authentication
Rails 3.1 HackFest
Este fim de semana está marcado um HackFest mundial, onde usuários de Ruby on Rails irão colocar as mãos na futura versão Rails 3.1. Veja mais detalhes no site oficial http://weblog.rubyonrails.org/2011/7/14/rails-3-1-hackfest
Vamos marcar presença e contribuir para o gerenciador de projetos ágeis StarTrack.
O projeto já está sendo desenvolvido pela própria comunidade, em Rails 3.1, sendo uma ótima oportunidade de contribuir com a comunidade, criando uma ferramenta útil e ainda aprendendo um pouco sobre a próxima versão do Rails.
Quando?
Este Sábado, 23 de Julho, de 9:00 às 17:00.
Onde?
Será na casa do @lucianosousa
O ponto de encontro será em frente a lanchonete Rei do Mate da rua Dias da Cruz, Méier.
Mapa: http://bit.ly/pSYz0Z
Quem chegar depois pode entrar em contato pelo twitter @rubyonrio que passamos as coordenadas =)
Canal do RubyonRio no IRC
Depois de uma discussão na lista resolvemos disponibilizar, no site, um webchat do IRC.
http://rubyonrio.org/pages/irc
Para acessar é bem simples, basta colocar um apelido e reencher o captcha.
E lembre-se o nosso canal IRC é #rubyonrio.
Encontro de Maio/2011
Inicialmente havíamos marcado o encontro de Maio para o espaço Oi Futuro do Largo do Machado, mas como no dia 28/5 também acontecerá o OpenSpaceRio.org, achamos melhor mudar o local para a UNIRio e aproveitar a estrutura disponível.
Extrutura
Teremos uma sala exclusiva e projetor.
Local
O endereço é Av. Pasteur 458, prédio do CCET, sala 204.
Programação
13:00 – 15:00 (Talks)
15:00 – 17:00 (Show me the code)
Por enquanto temos duas talks e meia.
Hugo Lnx – Callbacks em ruby
Luciano e Tauil – StarTrack github.com/rubyonrio/startrack
Bruno Barros – CoffeScript (?)
Cadastrem no call4paperz.com/events/29 :)
A partir das 15:00 chega a hora mais esperada, “Show me the code”, onde vamos codar um projeto ou contribuir para um já em andamento.
Esse é uma excelente momento para conhecer um pouco mais sobre ruby e projetos opensource que podem te ajudar no dia-a-dia.
Testes de Rota com RSpec Rails
by Hugo Roque (a.k.a HugoLnx)
Introdução
Assim como no modelo, é possível criar testes unitários para controllers, views, rotas e até mesmo requests. Porém, para desfrutar desses recursos, é necessário utilizar a gem rspec-rails. Nesse post iremos falar somente dos testes de rota, porém todos os outros podem ser interessantes de trabalhar dependendo do problema.
Porque?
Antes de tudo, é importante mostrar que as rotas são o que permitem ao usuário desfrutar da aplicação. Se não tem rotas, não tem como o usuário acessar nada, por mais que as features estejam implementadas. E na maioria dos casos(para não dizer todos), é importante garantirmos que nossas funcionalidades estejam sempre acessíveis.
Em primeiro momento pensamos em utilizar testes de aceitação com cucumber. Porém devemos lembrar que testes de aceitação são extremamente lentos. Quanto maior o tempo que os testes levam, menos iremos rodá-los e consequentemente iremos ver o feedback mais tarde.
Como usar
Se você não sabe instalar o rspec-rails na aplicação leia o README no repositório do rspec-rails.
Seguindo o TDD (Test Driven Development), inicialmente iremos criar os testes:
# spec/routing/usuarios_spec.rb
require 'spec_helper'
describe "Rotas para Usuarios" do
it "get '/usuarios' should route to usuarios#index" do
{:get => '/usuarios'}.should route_to(
:controller => "usuarios",
:action => "index"
)
end
end
O rspec-rails exige, que todos os testes relacionados com rotas estejam na pasta “spec/routing/”.
Se rodarmos o teste (rake spec:routing) ele irá falhar pois não existem rotas (RED). Portanto iremos criar agora:
# config/routes.rb
NomeDaAplicacao::Application.routes.draw do
match '/usuarios' => "usuarios#index"
end
Agora nosso teste passa (GREEN):
(caso o teste não esteja passando, certifique-se que o controller de usuários (UsuariosController) esteja criado, lembrando que não é necessário que a action esteja criada para que o teste passe)
Porém nosso teste está um pouco repetitivo, nós praticamente reescrevemos o conteudo do “it” na sua descrição. Para evitar tal repetitividade podemos refatorar utilizando a gem rspec-rails-extra-routing (REFACTOR). Após instalá-la, nosso teste poderá ser escrito assim:
# spec/routing/usuarios_spec.rb
require 'spec_helper'
describe "Rotas para Usuarios" do
get('/').should route_to(
:controller => "usuarios",
:action => "index"
)
end
Nosso teste continuará passando, porém a output mudará:

Podemos perceber que a output é gerada automaticamente, evitando repetição e consequentemente respeitando os principios do DRY (Don’t Repeat Yourself).
Conclusão
Testes de rotas são extremamente importante para garantir o acesso dos recursos ao usuário e eles podem ser escritos muito rapidamente, sem muitos custos, além de rodar rapidamente.
RubyOnRio HackDay 02/04/11
Pra quem não sabe, nosso amigo pivotaltracker a partir de julho vai permitir somente contas pagas , ou com 60 dias de uso. Existem alternativas Opensource como o Redmine, mas seguem um conceito diferente do pivotal.
Ao criar um “novo tracker” Opensource , além de contribuir com toda a comunidade, vamos tentar utilizar ao máximo ferramentas para nosso próprio aprendizado (rspec, etc).
No dia 02/04/11 a partir das 10:00h teremos nosso hackday na Cidadelas , no centro da cidade.
A idéia é colocar muita coisa em prática e com um foco definido, diferente do que acontecia no Forkin, que podíamos fazer qualquer mini projeto a qualquer horário. Agora teremos uma meta.
Os interessados em enviar sugestão ou participar do encontro deverão responder esse formulário
Encontro RubyonRio Março/2011
O próximo Encontro RubyonRio será dia 26 de março, último sábado do mês.
Será na Caelum, que fica na Rua do Ouvidor nº 50, Centro.
O evento começa às 10:00 e vai rolar o durante o dia inteiro, com tech talks na primeira parte, seguidas pelo horário do almoço.
Logo depois vamos definir um projeto e construí-lo juntos, do zero. No final do dia teremos ele pronto e no “ar”.
É uma grande oportunidade para passar por todas as etapas de criação de um sistema,
e de quebra se divertir aprendendo um pouco mais de ruby.
Os interessados em ministrar uma tech talk usem o call4paper http://bit.ly/gIyD2v para cadastra-las.
Os demais agendem o dia 26, chamem seus amigos e se preparem para um dia de muito ruby na mente.
Garanta já a sua vaga
http://bit.ly/eeI5GS