ArthurGeek.net

Rails, Mac... e Rock'n Roll!

Pôr do sol em São Paulo

Dreamhost + mod_rails

13 de Maio de 2008 às 18:37 · 5 comentários

O pessoal da Dreamhost anunciou hoje que todos clientes tem suporte para o mod_rails.

Resolvi migrar esse blog para o mod_rails, então, se alguma coisa de estranho aparecer por aqui, me avisem, pode ser isso. :)

Espero que o blog fique mais responsivo do que antes e não caia tanto também.

Boa sorte pro pessoal da Dreamhost e que eles possam resolver o ‘maior’ problema deles e de outros SharedHosts. :)

5 comentários Tags:

RejectConf'07

19 de Novembro de 2007 às 18:54 · 1 comentário

Neste final de semana aconteceu o RejectConf’07. Muitas palestras e cases de sucesso. Mas com certeza o melhor foi finalmente poder conhecer a galera da comunidade Ruby/Rails pessoalmente. Akita, Carlos Brando, Eduardo Fiorezi, o pessoal do Pagestackr, entre outros feras. Agora precisamos marcar um “Nerds On Beer” com essa galera para trocarmos mais idéias.

E que venha a RailsConf Brasil! ;)

1 comentário Tags:

Edge migrations mais sexy

04 de Outubro de 2007 às 10:51 · 1 comentário

Um plugin que eu costumava usar muito era o Sexy Migrations. Era, pois uma sintaxe inspirada nele foi adicionado ao Rails Edge.

Agora que estou usando o Edge em alguns projetos meus, sinto falta do foreign_key (ou simplesmente fkey) que usava no Sexy Migrations e não está presente no Edge. Por isso, criei um patch que adiciona o suporte à foreign_key na sintaxe das migrations.

Então, onde você escrevia (com o Edge):

create_table :user do |t|
    t.integer :country_id
    [....]
end

Poderá escrever assim:

create_table :user do |t|
    t.foreign_key :country
    [....]
end

É uma mudança sutil, porém, útil.

Para ele fazer parte do Rails 2.0 é preciso que pelo menos 3 pessoas testem-no e comentem com um simples +1, de acordo com as novas regras para que um patch seja aceito no Rails.

Se você gostou da idéia, dê uma passadinha lá no ticket, aplique o patch e vote. :)

Update: O Patch agora faz parte do Rails 2.0. Com algumas modificações e novas funcionalidades.

Para começar, “t.foreign_key” virou “t.references” com alias para “t.belongs_to. E foi adicionado também uma opção => true” que cria a coluna com _type no final.

Finalizando, se antes você escrevia assim (com o Rails Edge):

create_table :taggings do |t|
  t.integer :tag_id, :tagger_id, :taggable_id 
  t.string  :tagger_type 
  t.string  :taggable_type, :default => 'Photo' 
end

Agora passa a escrever assim:

create_table :taggings do |t| 
  t.references :tag 
  t.references :tagger, :polymorphic => true 
  t.references :taggable, :polymorphic => { :default => 'Photo' } 
end

1 comentário Tags:

Edge Rails

26 de Setembro de 2007 às 11:26 · 0 comentários

Você tem acompanhado as mudanças do Edge Rails, e quer testá-las naquele projeto que está começando?

Fácil, é só digitar no terminal:

rails myapp
cd myapp
rake rails:freeze:edge
# e se você for sortudo e tiver o textmate :)
mate myapp

Certo? Não, errado! Infelizmente, estes comandos não atualizam sua app para o Edge (é engraçado, mas estes comandos funcionam em algumas máquinas e na grande maioria não). Como saber se você está rodando o Edge? Verifique a pasta config, tem uma pasta initializers dentro dela? Se estiver rodando o edge tem que ter. Então, o que fazer para rodar o edge rails de verdade?

No Edge de verdade

Você precisa usar o comando rails de dentro do edge para gerar seu novo projeto.

cd ..
ruby myapp/vendor/rails/railties/bin/rails myapp_edgier
# e se você for sortudo e tiver o textmate :)
mate myapp_edgier

Agora verifique a pasta config. Hmm, legal! Aproveite e dê uma olhada na nova estrutura do environment.rb. Observe também que a pasta components não é mais criada.

Ok, agora você já está rodando um projeto no Edge, e resolveu criar mais um projeto. Vamos melhorar um pouco o processo. De volta ao terminal:

cd ~
svn co http://svn.rubyonrails.org/rails/trunk rails_edge
ruby ~/rails_edge/railties/bin/rails my_second_edgier_app
cd my_second_edgier_app/
# Você ainda precisa ter o edge rails dentro de sua aplicação
ln -s ~/rails_edge/ vendor/rails
# e se você for sortudo e tiver o textmate :)
mate .

Dessa maneira, você pode manter várias aplicações rodando o Edge, e atualizar o código em um local apenas. Quando você notar alguma mudança no Edge, rode:

cd ~/rails_edge
svn up

Um pouco de shell script

Vamos criar uma função em shell script para gerar novas aplicações já usando o Edge

mate ~/.bash_profile

Coloque a seguinte função no seu profile:

function edgie() { 
  ruby ~/rails_edge/railties/bin/rails $1 && cd $1 && ln -s ~/rails/trunk vendor/rails && mate . 
}

Atualizando nosso profile:

source ~/.bash_profile

Pronto! Agora você pode rodar:

edgie my_edge_app

Boa diversão com o Edge Rails! :)

Fonte: RailsTips: Even Edgier Than Edge Rails

Nenhum comentário Tags:

Não posso usar o logotipo do Rails?

25 de Julho de 2007 às 10:18 · 1 comentário

O Carlos Brando levantou uma questão que, acredito eu, não deve ser do conhecimento de muitos: Quem disse que você podia usar o logotipo do Rails?.

Bom, há um tempo atrás eu me interessei em fazer camisetas com o logo do Rails. E, eu sabia sobre o copyright, então, entrei em contato com o DHH, pedindo autorização para uso do mesmo.

Segue meu e-mail:

Hi David!

I’m a Brazilian Rails developer.

Next month I’ll be teaching a RoR training in a local university, and I want permission to make some RoR T-Shirts. Can I use the logo on those t-shirts?

If yes, there’s a high-resolution available somewhere in the net?

Thanks in advance,

Arthur Zapparoli http://www.arthurgeek.net

E a resposta do DHH:

As long as you don’t sell them, it’s ok. http://wiki.rubyonrails.org/rails/pages/RubyOnRailsMedia

Como o próprio DHH comentou , casos como esse, não são exclusividade do Rails. Muitos projetos Open Source tem seu logo como marca registrada. O DHH menciona o MySQL, JBoss, e eu menciono um caso mais “famoso” como o do Firefox vs Debian que resultou no fork Iceweasel.

O comentário do DHH:

The use of the logo is restricted as it always is when talking about a trademark. When the logo is used in a commercial setting, such as part of the promotion of a book, it legally requires that the trademark holder has been involved and stands behind the quality of the book. If that’s not the case, you’re on the way to lose your trademark.

So I only grant promotional use for products I’m directly involved with. Such as books that I’ve been part of the development process for or conferences where I have a say in the execution.

I simply don’t have the time (or, frankly, the inclination) to be intimately involved with every book being written about Rails.

Isso faz do DHH um “bad guy”? Eu não acho! Pode ser ruim para a divulgação de livros sobre Rails? Pode até ser que sim, mas preste atenção nos livros da O’Reilly, a maioria não usam o logo na capa.

O DHH tem que se preocupar com toda a qualidade de qualquer material que use o nome e o logo do Rails. E isso, não é bom somente para o DHH, e sim, para toda a comunidade.

O Carlos menciona o fato de ter sempre que pedir permissão à uma pessoa apenas. Sobre isso, eu acho, que poderia ser criado uma “Rails Foundation” que passaria a ter o copyright sobre o logo, e os nomes. E os membros dessa fundação analisariam dar permissão sobre o uso do logo. Acho que seria uma boa solução, adotada em alguns projetos como o Mozilla e o Gentoo.

Ah, e sobre as camisetas: o curso acabou não dando certo (não fechamos uma turma com o mínimo de alunos necessários), então, não fiz a camiseta. Ainda. Mas, eu ainda estou interessado. :)

1 comentário Tags:

Traduzindo Datas no Rails

23 de Junho de 2007 às 12:50 · 0 comentários

Em alguns projetos, é necessário utilizar os nomes de meses, ou dias da semana em português. Eu sempre usei o método de sobrescrever as constantes que o Ruby usa, colocando o seguinte código no config/environment.rb:

silence_warnings do
  Date::MONTHNAMES = [nil] + %w(Janeiro Fevereiro Março Abril Maio Junho Julho Agosto Setembro Outubro Novembro Dezembro)
  Date::DAYNAMES = %w(Domingo Segunda-Feira Terça-Feira Quarta-Feira Quinta-Feira Sexta-Feira Sábado)
  Date::ABBR_MONTHNAMES = [nil] + %w(Jan Fev Mar Abr Mai Jun Jul Aug Set Out Nov Dez)
  Date::ABBR_DAYNAMES = %w(Dom Seg Ter Qua Qui Sex Sab)

  Time::MONTHNAMES = Date::MONTHNAMES
  Time::DAYNAMES = Date::DAYNAMES
  Time::ABBR_MONTHNAMES = Date::ABBR_MONTHNAMES
  Time::ABBR_DAYNAMES = Date::ABBR_DAYNAMES
end

Acontece, que quando usamos a função strftime, estes nomes não são traduzidos. Eles funcionam apenas nos helpers date_select, entro outros. Em um projeto meu, eu precisava usar estes nomes traduzidos, justamente com a função strftime, então, cheguei à este código:

class Time
  alias :strftime_nolocale :strftime

  def strftime(format)
    format = format.dup
    format.gsub!(/%a/, Date::ABBR_DAYNAMES[self.wday])
    format.gsub!(/%A/, Date::DAYNAMES[self.wday])
    format.gsub!(/%b/, Date::ABBR_MONTHNAMES[self.mon])
    format.gsub!(/%B/, Date::MONTHNAMES[self.mon])
    self.strftime_nolocale(format)
  end
end

E funcionou!

Fica aqui a dica então, para quem estiver com este mesmo problema.

Nenhum comentário Tags:

Cansado daquele ";" horrível em sua url?

06 de Junho de 2007 às 15:02 · 1 comentário

Uma das coisas que eu mais gosto no Rails, é o rewriting das URLs, nada de ficar usando: dispatch.cgi?controller=people&action=edit&id=1, é simplesmente: /people/edit/1. É algo simples, é algo besta, mas vamos concordar, é muito mais fácil de lembrar e muito mais bonito. não? Porém, com o Rails 1.2 e o suporte à REST eu reclamo toda vez que olho para URLs assim:

/people/1;edit
/orders;recent

Que coisa feia esse ”;”!

Ainda bem que o Rails 2.0 voltará a usar a boa, velha e bonita ”/”! :)

Acompanhe como usar este recurso nos seus projetos sem precisar esperar pelo Rails 2.0!

Continue lendo...

1 comentário Tags:

Test Helpers

04 de Junho de 2007 às 15:40 · 1 comentário

Desde que entrei no mundo do Test-Driven-Development, venho colecionando alguns helpers, específicos para testes. Estes helpers me ajudam a não-ficar-se-repetindo (DRY ).

Acompanhe a lista de helpers que eu passei a utilizar.

Continue lendo...

1 comentário Tags:

Hi, I'm Ruby on Rails!

15 de Maio de 2007 às 20:16 · 0 comentários

O pessoal do RailsEnvy criaram 4 comerciais sobre Rails, ao estilo, da excelente campanha Get a Mac da Apple.

Eles vão lançar um à cada dia que antecede a abertura da RailsConf desse ano, então, ontem foi dia de RoR vs Java:

E hoje, foi dia de RoR vs PHP:

Os comerciais ficaram muito bons, fiquem ligados nos próximos, que serão "contra" o PHP também.

Bem que podiam fazer um RoR vs Python (nada contra a linguagem, afinal, Ruby e Python são as linguagens que mais me interessam hoje em dia :) )

Nenhum comentário Tags:

Deploy Rails com: Apache + mod_proxy_balancer + mongrel

13 de Maio de 2007 às 16:21 · 12 comentários

[Update: Hoje em dia, o método preferido para deploy Rails + Apache é usando o Phusion Passenger, também conhecido como mod_rails. Para aprender como fazer um deploy com o mod_rails, leia este excelente artigo do Nando Vieira. :)]

Como eu havia dito, não achei artigos em português explicando como fazer o deploy de aplicações Rails usando mod_proxy_balancer e mongrel_cluster, por isso resolvi escrever um.

Os comandos a seguir foram testados em um Ubuntu 7.04 Server Edition, mas devem servir para qualquer distro Debian-based.

Será necessário ter instalado os seguintes programas:

  • Apache 2.2.x
  • mod_proxy_balancer
  • mongrel
  • mongrel_cluster
  • Ruby
  • Rails
Continue lendo...

12 comentários Tags: