If you’re a Windows user new to this article, I recommend you start reading my original The Best Environment for Rails on Windows article from a few months ago, so you know what I am talking about.

Assuming you already have the Exuberant CTags and msysGit installed as described in my original article, then, once you get to the “Configuring gVim for Rails” section, you can avoid all those steps and just do this (on Windows):

1
2
3
4
5
6
cd %HOME%
git clone git://github.com/akitaonrails/vimfiles.git
cd vimfiles
git submodule init
git submodule update
copy vimrc ..\_vimrc

If you’re on Mac OS X or Linux you can do:

1
2
3
4
5
6
cd ~
git clone git://github.com/akitaonrails/vimfiles.git .vim
cd .vim
git submodule init
git submodule update
ln -s ~/.vim/vimrc ~/.vimrc

I don’t quite remember all the shortcuts, but the ones that you will immediatelly need are:

1
2
Ctrl-F    Open up FuzzyFinder (similar to Textmate Command-T)
\-P       Open up Nerd Tree (similar to the Project Pane in Textmate)

If you’re a developer that had previously forked from my vimfiles repository, keep reading.

Para este artigo, pressupõe-se que você já sabe como configurar DBI, como instalar FreeTDS e UnixODBC (se estiver no Linux ou Mac). Este artigo também irá utilizar o banco de dados de exemplo AdventureWorks. Siga tudo que está no meu artigo anterior para entender do que estou falando.

Minha intenção nesta segunda parte era tentar ‘dobrar’ as convenções do ActiveRecord. Porém, pensei por um segundo e acho que isso não será muito ‘agradável’. O ActiveRecord foi criado exclusivamente para projetos green-field, ou seja, projetos que não dependem de nenhum trabalho anterior, incluindo aqui o banco de dados. Ou seja, foi feito para projetos que irão começar do zero usando as convenções do Rails.

Faz tempo desde minha última compilação de notícias e artigos, desde 19 de fevereiro. Vou compilar alguns dos links mais interessantes neste artigo. Quem quiser acompanhar tudo o que eu venho lendo, assine o feed do meu Google Reader e também do meu Delicious. Vamos às notícias:

  • Oracle to Buy Sun – sem sombra de dúvidas, a notícia mais quente da semana é a aquisição da Sun pela Oracle, pela bagatela de US$ 7.4 bilhões e comprometimento de investimentos pelo próximos anos. A Sun estava sangrando faz tempo, com metas de demissão por quarter. A Oracle é uma das maiores empresas de TI do mundo, na mesma liga de uma Microsoft e SAP. Ela já havia adquirido a BEA, Siebel, J.D. Edward, Peoplesoft e agora coloca a Sun no mesmo guarda-chuva. Existem sim, aquisições boas, mas no geral eu não fico muito contente. Até a semana passada haviam os rumores que a IBM fosse levar a Sun e ninguém havia previsto a Oracle na jogada. Fica em aberto o que vai acontecer com os projetos open source como MySQL, Solaris e como fica o andamento com o Java, o andamento do OpenJDK e tudo mais. Vamos segurar o julgamento até a situação estabilizar e a Oracle começar a demonstrar alguma coisa. Mas tem aquela outra história: se você fosse um vendedor da Oracle, o que você vende? O Oracle CRM ou o Siebel? O Oracle Applications ou o JDE? O Oracle Application Server ou o Glassfish? O JDeveloper ou o NetBeans? O Oracle Database ou o MySQL? Vêem o problema da falta de foco?

Não sei se foi coincidência, mas hoje recebi ume e-mail pedindo uma opinião sobre esse tema ao mesmo tempo que o Paulino Michelazzo blogou sobre algo parecido.

A resposta curta? Na dúvida, faça. Ok, vamos para a resposta mais longa.

Brasileiros: tradução abaixo

Around one year ago, a small group of computer science students from the Netherlands unveilled the ultimate deployment tool for Ruby on Rails: Phusion Passenger. It feels like forever since I deployed my last app using Mongrel + Mongrel Cluster + God. Passenger became a no-brainer choice for Rails deployment.

But, some people weren’t so excited because Passenger was introduced as an Apache-only module. The thing is that many from the Rails community discovered the wicked fast Russian webserver named Nginx. It became known for being faster, more memory efficient and easier to set up than Apache. But you couldn’t use Passenger with it.

Not up until right now! Celebrating one year since they registered the Phusion Company, they just released Passenger that can run under Nginx! And don’t miss Peepcode’s Geoffrey Grosenbach screencast on installing the new Passenger. Follow Phusion’s Twitter for more up to dates on this!

There was a very exciting news recently regarding the Windows software E-TextEditor becoming open source. The E is a very good editor, still in need of more features, reliability, stability. But, the news is not as good as it seemed. You can certainly build E for Linux for “free” (as in beer), but you cannot do that for Windows. They are using a “modified” BSD style license, which is very restrictive (and therefore CANNOT be called BSD anymore). Calling it “essentially BSD with one extra clau...

A comunidade brasileira está andando rápido, recentemente tiveram vários lançamentos muito legais para todos os rubistas. Primeiro, o Rodrigo Urubatan lançou mais um livro em português de Ruby on Rails, o Desenvolvimento Fácil e Rápido de Aplicações Web. O Carlos Brando e mais um pessoal criaram a versão brasileira do conhecido site Ruby Inside, que sempre trás as melhores notícias do mundo Ruby e Rails. A melhor forma de se manter atualizado. Esse site nasceu na Inglaterra, pelo Peter Cooper...

Reia é uma implementação de um sub-conjunto da linguagem Ruby sobre o Erlang. Inicialmente é apenas uma ‘tradução’ do idioma Ruby em construções Erlang. Num segundo momento ele deve ir para a fase de emitir diretamente bytecode para o BEAM, a VM de Erlang. Essa linguagem está sendo desenvolvida por Tony Arcieri. Veja uma entrevista dele aqui. Aprenda mais sobre Reia no wiki deles. O projeto está no Github e eis um trecho de código Reia:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
module Ring
  def around(procs, times)
    pid = start(procs, erlang::self())
    pid ! times
    parent_loop(pid)
  end
    
  def parent_loop(pid)
    receive
    when 0
      nil
    when n
      pid ! n - 1
      parent_loop(pid)
    end
  end
      
  def start(0, parent)
    parent
  end
  def start(n, parent)
    start(n - 1, Process.spawn(fun() { child_loop(parent) }))
  end
  
  def child_loop(parent)
    receive
    when msg
      parent ! msg
      child_loop(parent)
    end
  end
end

Esse exemplo está aqui. A seguir, uma tradução de um artigo muito interessante para pensar sobre orientação a objetos.

O Ola Bini acabou de confirmar um rumor que muitos de nós já estavam esperando: que a próxima plataforma suportada pelo Google App Engine fosse o Java, e de fato é !!

O Google App Engine (GAE) é uma plataforma de application cloud computing que faz o serviço de hosting da sua aplicação. A primeira plataforma implementada foi o Python, que permitia rodar aplicações em Django. Agora é Java e, obviamente, significa rodar JRuby. Graças a isso, significa rodar aplicações Rails na infraestrutura do Google.

E não percam a cobertura dos outros Thoughworkers como:

Também outros websites:

Eu estava discutindo esse assunto na Argentina com o Obie e o Evan, parece que novamente o Alex Payne pisou no tomate. E, não, isso não se trata de “ah, novamente os ruby-fanboys falando mal dos outros.” Esse é argumentos dos que buscam por pageviews de graça.

Para começar, esta é a Internet, onde qualquer coisa vira post em blog. A maioria da controvérsia vem de pessoas que justamente não fazem parte do meio onde a discussão está se passando e estão pegando o bonde andando. Para começar, o Alex Payne é velho conhecido entre os rubistas. Ele, assim como o Blaine Cook, já palestraram em RailsConf e, sim, o Twitter continua usando Ruby e Rails.

Outra coisa: até onde eu entendo, a controvérsia entre os rubistas não começou diretamente na palestra do Alex na Web 2.0 Expo sobre Scala.

Update 8/4: só para ficar bem claro (porque pelos comentários que recebi não ficou), não, eu não faço código perfeito, muito longe disso aliás. E duvido que o Obie, o Jeremy, e quem mais for faça e nem eles afirmam isso. O Twitter também não faz e isso não o torna pior que os outros. Nunca esteve em discussão algo do tipo “é errado eles fazerem código macarrônico.” O que esteve em questão foi por que, em tendo essa circunstância – tão normal em projetos, principalmente os que crescem rápido – não se discutiu na comunidade as maneiras de resolvê-las, mas precisou se usar de artifícios do tipo “a culpa do macarrão é porque Ruby é lento e porque ele não suporta tipagem estática”? Não fomos nós quem trouxemos o assunto à mesa. Tudo isso poderia não ter sido nada. A apresentação de Scala na Web 2.0 Expo foi muito boa, eu assisti e recomendo. Amigos que já leram o livro de Scala também recomendam. O que temos aqui neste artigo é um post-mortem, de como as coisas se desenrolaram. Eu dei uma atualizada por todo o texto, vamos ver se ajuda a clarificar as coisas.

Brasileiros: tradução abaixo.

This last weekend I had a wonderful time in Buenos Aires, Argentina, at the Locos x Rails event which I think is the first big Ruby and Rails community gathering there. They did an extraordinary job making a very compelling and exciting event that I am sure people liked a lot. I don’t have any official numbers but I think there were more than a 100 attendees and a stellar international speaker roster including Obie Fernandez, Desi McAdam, Yehuda Katz, Evan Phoenix, Evan Henshaw Plath.

(see it on YouTube! as well)