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. :)
Tags:rails
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! ;)
Tags:rails
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
Tags: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
Tags: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. :)
Tags: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.
Tags:rails
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...
Tags:rails
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...
Tags:rails
15 de Maio de 2007 às 20:16 · 0 comentários
Tags:rails
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...
Tags:rails