Rails Summit 2009

English translation: click here

Ilya Grigorik é um desenvolvedor Ruby bem conhecido, especialmente por causa do seu blog Igvita.com onde encontramos alguns dos artigos tecnicamente mais ricos e ainda assim de fácil compreensão, não só em torno de aplicações Rails, mas tudo que se relaciona com ele, incluindo drivers de banco de dados, análise de desempenho, integração de serviços e muito mais. Por causa disso ele foi premiado como Ruby Hero na RailsConf 2008 em Portland.

Ele também é o fundador do PostRank, um sistema de monitoramento em tempo real de engajamento social de mídia e plataforma de análise. Ele acabou de lançar um outro produto complementar chamado Analytics, outra ótima maneira de controlar os seus relacionamentos.

Você terá uma grande oportunidade de conhecê-lo no Rails Summit Latin America este ano. Não esqueça de se inscrever logo! Estamos apenas a mais alguns dias de distância!

AkitaOnRails: O que você mais gosta sobre a linguagem Ruby, o recurso ou conceito que “clica” para você?

Eu não consigo escolher apenas um atributo, pois como a maioria das coisas, geralmente é a soma das partes que compõe a experiência. E, na verdade, é o que eu mais gosto sobre Ruby: todas as peças “clicam” juntas. As decisões de design por trás da linguagem Ruby dão uma natureza incrivelmente maleável: é fácil estendê-lo, é fácil modificá-lo, é fácil fazê-lo funcionar da maneira que você precisa para trabalhar na sua aplicação. Rails é o principal exemplo disso, mas as centenas de outras estruturas construídas em cima de Ruby são todos exemplos dessa propriedade.

AkitaOnRails: Como um desenvolvedor Rails, o que é a coisa que você realmente gosta quando está codificando aplicações web?

A capacidade de ir do nada para um protótipo totalmente operacional, em uma xícara de café. Se você está olhando para uma aplicação Rails, ou uma rápida em Sinatra / Rails Metal, a enorme quantidade de recursos e plugins torna o processo divertido e imediatamente gratificante.

AkitaOnRails: Qual é a sua mais recente pesquisa ou interesse em desenvolvimento?

Muito do meu tempo é dedicado à investigação e criação de protótipos de instrumentos e abordagens de arquiteturas de software distribuído – desde mensagens, para balanceamento de carga, a bancos de dados. Combinado com o fato de que a maioria dos serviços que implantamos no PostRank são escritos em Ruby, significa também se aprofundar mais na compreensão das partes internas do Ruby, tentando otimizar a VM para uma arquitetura distribuída.

AkitaOnRails: Sobre o que é a sua palestra para o Rails Summit e quem são os tipos de desenvolvedores que se beneficiarão mais?

Nesta palestra vou cobrir as tecnologias emergentes por trás da “Real-Time Web” (XMPP, AMQP, PSHB, Webhooks). A adoção do Rails ao modelo RESTful liberou os dados dos aplicativos e nos permitiu definir serviços que poderiam facilmente falar uns com os outros, a Real-Time Web está indo um passo além: em vez de diferentes web-services se consultando o tempo todo, conectá-los através de interfaces push. Esta palestra terá início a partir do início e fornecerá uma visão geral de alto nível das tecnologias subjacentes. Saindo dela, você deve ser capaz de diferenciar e decidir sobre qual tecnologia se adaptará melhor às suas necessidades (não são todos iguais!).

Rails Summit 2009

Esta semana surgiram alguns artigos interessantes, todos relacionados de alguma forma ao pensamento “Agile” de desenvolvimento de software.

O primeiro, que eu achei muito bom, foi o 10 razões porque Pair Programming não é para as massas que o Obie Fernandez escreveu a respeito de sua própria experiência com programação pareada e porque ela é difícil de ser implementada na maioria dos lugares.

Esses pontos se resumem em limitações físicas (cubículos são tão século XX …), convencionalismos corporativos ainda em voga (entrevistas feitas por RH baseado em currículo, primando por certificação, por exemplo). Para mim, dois dos pontos mais importantes são o 6o. e o 2o. Como qualquer conceito, interpretado da forma errada, dará resultados errados.

A primeira coisa que um programador precisa entender sobre programação pareada é que existem sempre piloto e co-piloto. Há a imagem de que o piloto é o indivíduo produtivo naquele instante e o co-piloto apenas olha e acompanha, passivo, silencioso. De jeito nenhum: esta é a forma errada de se parear e é a forma que, corretamente, os não-programadores (gerentes, etc) imaginam estar pagando 2 pessoas mas tendo apenas o serviço de 1. Em programação pareada, ambos precisam obrigatoriamente estar participando. O co-piloto deve estar atento aos erros do piloto. O co-piloto deve estar pensando à frente, já imaginando alternativas melhores, eles devem estar ambos engajados em encontrar as melhores soluções. Mais do que isso: o teclado e o mouse devem conseguir trocar de mãos constantemente. Não existe pareamento onde o co-piloto fica o dia inteiro apenas observando. Se o co-piloto é passivo e silencioso, o piloto está pilotando sozinho, é como se ele estivesse sozinho, ponto.

Rails Summit 2009

English translation: click here

Matt Aimonetti é um ativista Rails, ele começou como evangelista de Merb e se envolveu na já famosa junção do Rails + Merb. Ele também é ativo na área de MacRuby e HotCocoa. Ele mora em San Diego, onde dirige sua própria consultoria, fazendo projetos e treinamentos relacionados com Ruby, e ele também é um palestrante conhecido em eventos. Nós nos encontramos pela primeira vez no ano passado, na QCon de São Francisco. Você pode ouvir a entrevista que gravamos naquela época aqui

Ele estará conosco no Rails Summit Latin America 2009. Não esqueça de se inscrever!

AkitaOnRails: O que você mais gosta na linguagem Ruby, qual recurso ou conceito te atrai?

Acho que o Ruby é a melhor linguagem de programação para expressar o que eu quero no meu código. É tão natural que parece mesmo “certo”. As pessoas são, como o falecido Guy Decoux era, capaz de se comunicar apenas em código Ruby e isso significa muito para mim. Mas há mais do que a fantástica sintaxe. Ruby tem uma maravilhosa comunidade e valores fortes, tais como testes, refatoramento, melhores práticas, open source etc.

Eu estou realmente empolgado vendo empresas como a Apple e a Microsoft apostando fortemente na linguagem Ruby e sua comunidade.

AkitaOnRails: Qual é a coisa que você mais gosta sobre Rails quando codifica aplicações web?

O que eu mais gosto quando escrevo uma aplicação Rails está em usar Ruby. Eu tentei usar outros clones de Rails em outras línguas e nenhuma chegou perto da mesma experiência, devido à linguagem de programação subjacente. Mas além do Ruby, minha segunda coisa favorita sobre o Rails é a seqüência de uso de convenções inteligentes. Eu posso ver qualquer projeto Rails e compreender imediatamente o que está acontecendo.

AkitaOnRails: Qual é o seu interesse mais recente de pesquisa ou desenvolvimento?

Eu aprendi muito sobre Ruby, trabalhando em MacRuby. Como se vê, há um monte de coisas no Ruby e suas bibliotecas-padrão que muito raramente uso. Eu também estou experimentando com pequenos jogos 2D escrito em Ruby. É uma mudança agradável de desenvolvimento web. Finalmente, eu ainda estou trabalhando com CouchDB e armazenamento de dados alternativos.

AkitaOnRails: Sobre o que é sua palestra para o Rails Summit e quem são os tipos de desenvolvedores que irão se beneficiar mais?

Minha palestra é sobre o futuro do Ruby on Rails e concretamente o que isso significa para os desenvolvedores. Não será uma palestra sobre o encanamento interno, mas mais sobre uma perspectiva de alto nível com exemplos de nível mais elevado de código e exemplos concretos de coisas novas impressionantes que estarão disponíveis para os desenvolvedores Ruby.

As pessoas que estão interessadas no que está chegando, os céticos e pessoas considerando usar Ruby/Rails pela primeira vez provavelmente acharão isso interessante.

Além disso, se você gosta de “futebol”, deveria vir assistir minha palestra ;)

Rails Summit 2009

English translation: click here

O Carlos Brando acho que dispensa apresentações :-) Todos já o conhecem pelo blog Nome do Jogo, pelo e-book Rails 2.1 e por projetos open-source como o Remarkable. Dentre suas colaborações mais recentes, está a tradução do excelente livro do _why, o Poignant Guide to Ruby; e o lançamento da versão nacional do site britânico Ruby Inside

Na sua própria descrição, ele é viciado em programação e atualmente é diretor de tecnologia da Amanaiê, uma empresa que cria, produz e distribui aplicativos sociais. Atua na área de desenvolvimento de softwares há mais de doze anos, tendo trabalhado com Visual Basic, C, C++, Java, C# e agora Ruby. Já trabalhou em várias companhias brasileiras e estrangeiras como Portugal Telecom Group, AT&T Latin America, DirecTV, SKY, VISA e Surgeworks Inc.

Já se apresentou em vários eventos brasileiros relacionados com Ruby, incluindo a edição do ano passado do Rails Summit Latin America.

Além de suas atividades profissionais, Carlos e sua esposa trabalham como voluntários dando aulas para deficientes auditivos. Ele regularmente ensina língua de sinais e atua como interprete.

Rails Summit 2009

Eu não sou muito paranóico com backup mas tomo meus cuidados. Por exemplo, eu não tenho 100% de confiança em storages remoto, seja ele Gmail, Amazon S3, Dropbox ou qualquer coisa desse tipo. Esse tipo de serviço é uma ajuda extra, mas jamais deve ser o storage primário. Meus e-mails, calendários, contatos estão todos centralizados no Mobile Me, meu Gmail faz forward de tudo pro Mobile Me servindo basicamente como um bom filtro de spam.

Eu tenho uma cópia de tudo isso sincronizado no meu Macbook, e tudo no meu Macbook está guardado no Time Capsule de 1TB, via Time Machine. Portanto eu tenho pelo menos 3 cópias de todos os meus dados mais importantes.

Para outros dados menos voláteis como vídeos, programas, projetos antigos e coisas desse tipo eu tinha dois discos externos ligados, um de 400GB e outro de 500GB, via USB 2 no meu Mac Mini de casa. Eles faziam rsync entre si todos os dias às 4 da manhã. Eu deixo meu Mac Mini ligado o tempo todo, ele não consome muita energia, e é silencioso ao nível de parecer que está desligado, o que é muito importante. Ele próprio também faz backup de si no mesmo Time Capsule. Desta forma todos os meus dados tem pelo menos um backup.

Para o dia-a-dia carrego outro disco externo LaCie de 500GB. Todo dado importante nele tem uma cópia nos discos externos de casa, ele serve apenas para transporte. Porém, essa configuração ainda é muito ruim. Primeiro porque esses cases de disco externo tem cada um uma fonte de energia e um cabo USB. É muito cabo bagunçado. Segundo, eles não foram feitos para ficar ligados o tempo todo, não tem inteligência e consomem muita energia, são muito barulhentos, acumulam muito pó, enfim, são péssimos para esse propósito. O próprio rsync uma vez por dia não é adequado, pois eu fico com uma janela de 24 horas descoberto.

Redundância é extremamente importante. Eu já me vi pensando “que desperdício, tenho 2 discos que somam quase 1TB mas só posso usar 400GB.” Mas esse é o ‘seguro’ que se deve pagar. De nada adianta usar 1TB e depois um dos discos quebra e você perde metade dos seus dados. Por isso há pelo menos 2 coisas que se pode fazer: um mirror bem caseiro com rsync como eu fiz, ou montar um micro caseiro com RAID via software.

Há alguns anos uma empresa chamada Data Robotics apareceu em cena e lançou um dos produtos que está na minha lista de compra faz quase 3 anos: o Drobo. Ele é literalmente um robô.

Rails Summit 2009

English translation: click here

Bryan Liles ficou bastante conhecido depois do Ruby Hoedown de 2008 com sua palestra Test All the Fucking Time cunhando o termo “TATFT”.

Ele virá falar sobre boas práticas de programação, baseado numa séria que começou recentemente no seu blog Smartic.us, chamado #yerdoinitwrong (literalmente, “voceestafazendoerrado”). Veja a apresentação da série:

#yerdoinitwrong intro from Bryan Liles on Vimeo.

O primeiro episódio fala sobre enviar os logs do Rails para um servidor remoto usando syslog, e recomenda o excelente Splunk, que eu também gosto. Não perca os episódios.

Não deixe de trocar figurinhas com ele durante o Rails Summit! Inscreva-se já!

Rails Summit 2009

English translation: click here

A partir de hoje vou colocar alguns posts sobre alguns dos palestrantes do Rails Summit Latin America 2009. Não deixe de se inscrever! Dias 13 e 14 de Outubro, em São Paulo.

Leonardo Borges é desenvolvedor com 9 anos de experiência, já trabalhou em empresas de portes variados criando aplicações corporativas especialmente em Java. Atualmente vive em Madrid e trabalha com Ruby On Rails na Mirai España onde, dentre outros projetos, participa da iniciativa JRuby de integrar código legado com Rails. Escreve no seu blog sobre desenvolvimento de software e temas relacionados.

AkitaOnRails: Como você encontrou Ruby/Rails, o que foi que mais te atraiu?

Foi no início de 2007. Lendo blogs e notícias na internet cheguei no site oficial do Rails e vi o famoso vídeo Creating a weblog in 15 minutes. Fiquei impressionado! Aquele vídeo foi capaz de vender nao só a produtividade que o Rails proporciona, mas o nível de expressividade ao qual podemos chegar em Ruby.

AkitaOnRails: Quais assuntos mais te interessa atualmente e por quê?

Devido à natureza dos projetos aqui na empresa – um mix de Ruby e Java – tenho me interessado bastante em JRuby e a JVM de uma maneira geral, estudando também alternativas como Scala.

AkitaOnRails: Sobre o que trata sua palestra e para que tipos de desenvolvedores é mais indicado?

Eu acredito que JRuby veio pra ficar e que uma de suas maiores forças está em atrair empresas/desenvolvedores já acostumados ao mundo Java. Para isso uma integração precisa e simples entre Ruby e Java deve ser possível.

Na minha palestra “JRuby no mundo corporativo” vou mostrar como essa integração pode ser feita para dar uma nova roupagem a um sistema legado usando JRuby on Rails.

Essa sessão é para qualquer desenvolvedor Ruby interessado em rodar suas applicaçoes na JVM. No entanto, se você está trabalhando com Java no momento e está pensando como pode introduzir Ruby na sua empresa, essa palestra pode ser particularmente útil.

AVISO: Você verá fontes Java e XML nessa sessão! :P

Links

Imagino que quem viu o Teaser Trailer de ontem ficou curioso. O pessoal que participou do Dev in Rio viu uma versão “especial” em primeira mão alguns dias atrás, agora aí vai a versão oficial:

E você, já se inscreveu no Rails Summit Latin America 2009 ?

Rails Summit 2009

De tempos em tempos alguém me pergunta algo do tipo “Que IDE você usa para programar em Ruby?” E todos ficam surpresos ou frustrados quando eu digo “Nenhum, apenas um editor de textos competente.” Parece que a maioria dos programadores de Visual Basic, Delphi, Java, C#, VB.NET, simplesmente não conseguem sair do dogma dos IDEs com IntelliSense.

Eu, felizmente, comecei a programar dBase numa era onde o máximo em editor de textos era o Wordstar. No DOS eu usei EDLIN e depois o Edit que vinha nos DOS acho que 5.0. Quando fui programador Clipper no começo da década de 90, meu editor favorito era o Norton Editor. Somado a ferramentas como Sidekick, eu tinha a estação de desenvolvimento mais poderosa que se poderia querer: um editor de textos e só.

Quando o Java surgiu, um IDE com capacidades de auto-complete eram obrigatórias. Em .NET a mesma coisa, e pelas mesmas razões. Aqui eu traduzo a palestra entitulada O Visual Studio estraga nossas mentes?, apresentada no NYC .NET Developer’s Group, em 20 de Outubro de 2005 por Charles Petzold. Ele faz uma longa análise dos fundamentos de porque um programador viciado nos dogmas impostos pelo Visual Studio está se tornando um programador ruim.

Atualmente, eu programo apenas Ruby (e outras coisas como Javascript de vez em quando) apenas no Textmate, um competente editor de textos, reminiscente de inspirações em Emacs e Vim, outros dois excelentes editores. E não sinto falta de Eclipses, Netbeans ou qualquer coisa desse tipo e, obviamente, nenhuma falta do Visual Studio. Ah sim, precisar de auto-complete só mostra uma coisa: que as APIs estão sendo muito porcamente desenhadas ultimamente, tornando-as ridiculamente longas!

Recomendo ler o artigo inteiro, pois só traduzi as partes relevantes ao meu ponto. Vamos à tradução:

PS: Vale a pena descrever o paradoxo: não dá para efetivamente ser produtivo em .NET sem Visual Studio, em Java sem Eclipse/Netbeans/etc ou ObjC sem XCode. Isso é um fato. Na prática mesmo, a solução não é fazer C# em Notepad. Esse é o ponto a se pensar ;-)

Quem esteve no Dev in Rio 2009 e quem participou do Rails Summit 2008 sabe do que estou falando :-)

Aqui vai a história sobre isso, diretamente pelo Tapajós

Eu estava sentado junto com a galera do Rio vendo a morena passando de um lado para o outro e observando que ninguém se concentrava na palestra. Todo mundo estava fazendo a cobertura do evento no twitter e eu tive a idéia de pôr uma foto dela lá, provocando quem não veio ao evento. Como eu era um novo usuário do twitter e achava meio e...

Há um certo tipo de argumentação que, na verdade, não é uma argumentação, mas um meio de evitar o debate e extorquir o acordo de um adversário baseado em noções indiscutíveis. É um método de burlar a lógica usando pressão psicológica. Uma vez que é particularmente comum na cultura de hoje e continuará crescendo, é bom aprender a identificá-lo e estar em guarda.

Este método tem uma certa semelhança com a falácia ad hominem, vem da mesma raiz psicológica, mas é essencialmente diferente. A falácia ad hominem consiste em tentar contrariar um argumento acusando o caráter de seu proponente. Exemplo: “o candidato X é imoral, pois seu argumento é falso.”

O método de pressão psicológica consiste em ameaçar a integridade do caráter de um oponente usando seu próprio argumento, então contestando a argumentação, sem debate. Exemplo: “Só o imoral não vê que o argumento do candidato X é falso.”

No primeiro caso, a imoralidade do Candidato X (real ou inventado) é oferecido como prova da falsidade de seus argumentos. No segundo caso, a falsidade de seu argumento é afirmada de forma arbitrária e oferecida como prova de sua imoralidade.

Na selva epistemológica de hoje, esse segundo método é usado com mais freqüência do que qualquer outro tipo de argumento irracional. Deve ser classificado como uma falácia lógica e pode ser designado como “a argumentação através da intimidação”.

A característica essencial da argumentação através da intimidação é o seu apelo à auto-dúvida moral e sua dependência do medo, culpa ou ignorância da vítima. É usado na forma de um ultimato exigindo que a vítima renuncie à sua idéia sem discussão, sob pena de ser considerado moralmente indigno. O padrão é sempre: “Somente aqueles que são maus (desonestos, cruéis, insensíveis, ignorantes, etc) tem essas idéias.”

Normalmente eu não gosto de falar de política. Detesto. Sempre achei uma grande perda de tempo. Porém, diante das visões mais exacerbadas de populismo-esquerdismo, da ignorância quando se engrandece o socialismo-tirano cubano ou a ditadura totalitária venezuelana; diante do clamor por reestatização e os movimentos contra a privatização – todas calcadas na idéia de “o bem para o povo”, “pelo benefício da maioria”, “pela ajuda aos fracos” e outra baboseiras como essa, achei que poderia pelo menos oferecer uma pequena contribuição filosófica, traduzindo pelo menos mais um capítulo do livro de Ayn Rand, The Virtue of Selfishness que fala exatamente sobre esse tema, lembrando, claro, que ele foi escrito sobre o contexto dos anos 60. Mas é impressionante como as coisas não mudaram muito nesse sentido. Mas, antes, mais um trecho da introdução, a respeito da fundação do “egoísmo racional” do Objetivismo:

Observem a indecência do que se passa por julgamentos morais hoje. Um industrial que produz uma fortuna, e um bandido que rouba um banco são considerados igualmente imorais, uma vez que ambos procuraram riqueza para seu próprio benefício “egoísta”. Um jovem que abandona sua carreira, a fim de sustentar os pais e nunca ultrapassa o posto de escriturário de mantimentos é considerado moralmente superior ao jovem que sofre um esforço excruciante e alcança a sua ambição pessoal. Um ditador é considerado como moral, uma vez que as atrocidades indescritíveis que foram cometidos foram para beneficiar “o povo”, e não a si mesmo.

Observe o que este critério de benefício da moralidade faz na vida de um homem. A primeira coisa que ele aprende é que a moralidade é o seu inimigo, ele não tem nada a ganhar com isso, ele só pode perder; perda auto-infligida, dor auto-infligido e a mortalha cinza, debilitante de uma obrigação incompreensível é tudo o que ele pode esperar. Ele pode esperar que outros podem, ocasionalmente, sacrificar-se para seu benefício, como ele se sacrifica de má vontade a eles, mas ele sabe que o relacionamento vai trazer ressentimento mútuo, não prazer – e que, moralmente, sua perseguição de valores será como um intercâmbio de presentes de Natal indesejados, não escolhidos, onde nenhum é moralmente permitido comprar para si mesmo. Além dos momentos onde ele consegue realizar um ato de auto-sacrifício, ele não possui nenhum significado moral: a moral não toma conhecimento dele e não tem nada a dizer-lhe para orientá-lo nas questões cruciais de sua vida, é apenas a sua próprio vida pessoal, privada, “egoísta” e, como tal, é considerado ou mal, ou, na melhor das hipóteses, amoral.



Já que o egoísmo é a “preocupação com os próprios interesses,” a ética Objectivista utiliza esse conceito em seu sentido exato e mais puro. Não é um conceito que pode ser entregue aos inimigos do homem, nem para os equívocos irrefletidos, distorções, preconceitos e medos do ignorante e do irracional. O ataque ao “egoísmo” é um ataque à auto-estima do homem, desistir de um é desistir do outro.

There are several ways to start a new Rails project nowadays, specially since Rails brought project templates to the mix. On the other hand there are still lot’s of generators. So, today I want to just pinpoint some tips on this regard.

First of all, make sure you have all the usual suspects installed:

1
sudo gem install rspec rspec-rails josevalim-inherited_resources mislav-will_paginate justinfrench-formtastic thoughtbot-factory_girl haml ryanb-nifty_generators

One other is dry_scaffold from grimen. I’ve made a fork and added rspec support today. I think the 0.3.3 version should be generated soon from Github, then you will be able to install it like this:

1
sudo gem install akitaonrails-dry_scaffold

Estou lendo o excelente livro The Virtue of Selfishness de Ayn Rand, publicado pela primeira vez em 1961 – se não me engano. E, antes que comece as menções sarcásticas sobre a palavra ‘egoísmo’, remeto à introdução do livro:

De uso popular, a palavra “egoísmo” é um sinônimo do mal; a imagem que ele conjura é de um brutamontes assassino que salta sobre pilhas de corpos para atingir seus próprios fins, que não se importa com nenhum ser vivo e persegue nada mas a gratificação dos impulsos impensados de qualquer momento imediato.

Porém, o significado exato e definição de dicionário da palavra “egoísmo” é: preocupado com seus próprios interesses.

Esse conceito não inclui avaliação moral; ele não nos diz se se preocupar com seus próprios interesses é bom ou mau; nem nos diz o que constitui os reais interesses do homem. É a tarefa da ética responder essas questões.

A ética do altruísmo criou a imagem do bruto, como sua resposta, de forma a fazer os homens aceitar dois princípios inhumanos: (a) que qualquer preocupação com seus próprios interesses é mal, seja lá quais sejam esses interesses, e (b) que as atividades dos brutos são de fato para seus próprios interesses (o qual o altruísmo encoraja o homem a renunciar pelo seu próprio bem e a de seus vizinhos).

Isso dito, não recomendo a leitura do livro, pois ela lida justamente com a quebra dos conceitos conhecidos como “senso comum” atualmente, coisa que a maioria das pessoas simplesmente não tem vontade de mudar :-D Mas falando sério, se você gosta de pensar, esta coletânea é muito interessante.

Só para dar um gosto – se você tiver mente aberta -, coloco vários trechos do capítulo 9, O Culto da Moral Cinzenta.

Rails Summit 2009

While I was editing my last article I was thinking about multi-site. Usually, Railers prefer to have a single app per Rails project. But what if I do want to have a CMS, an e-Commerce, something like Wordpress MU and so on?

I thought to myself: “dead simple: just add default_scope to the relevant Active Record models”. Ended up not being quite so simple because it seems like ’defaultscope’ doesn’t support blocks just yet as you can follow on this open ticket at Lighthousescope-cant-take-procs.

The problem is that ‘default_scope’ will be different per user, so I can’t have an static conditions hash pre-defined in the model. To solve that – at least until a more official solution comes along – Brian Mitchell has a great suggestion: use a Hash Poser.

Rails Summit 2009

For quite some time I wanted to create an experiment: having user-editable view templates stored in the database instead of the filesystem.

The Use Case is quite simple: it’s either a theme system or a website where each user can edit his own set of templates to have a customized usage of the application. In the case of a simple theming system, just adding additional view load paths would be enough. But the second case needs scalability and having a potential set of thousands of view sub-folders around never felt well.

One solution is to have every view in a database table. If performance becomes critical, we can always add Memcached to the equation, so it shouldn’t be a problem. Now, there is another problem: we can’t just store the ERB view files directly into the database and make them user-editable. That’s because ERB executes arbitrary Ruby code, which means that the user would have access to the entire machine. Haml and other templating engines have the same feature. One of the few that implements a user-centric, restrictive templating engine is Tobias Lütke’s Liquid, created precisely for the same purpose for his Shopify.com website.

Having that in mind, I just published the dynamic_liquid_templates plugin as an attempt to have just that. In order to get started, you can create a new Rails project and add it as a normal plugin:

Nos últimos dias aconteceu uma pequena controvérsia na lista de discussão Ruby-Core, mais especificamente sobre o Ticket no Redmine oficial do Ruby, o Feature #2033 [ruby-core:25285]. Esta é uma requisição do Run Paint Run Run assinalado diretamente ao Matz dizendo:

Eu proponho formalmente que o desenvolvimento principal mude para Git.

Obviamente, a comunidade Rails entrou em massa para apoiar essa proposta. Mas os core developers japoneses estão mais receosos em fazer a mudança. É assim: ...

Atualização: 01/10: O José acabou de lançar a versão 0.9.1 enquanto eu estava fazendo upload deste vídeo :-)

Rails Summit 2009

O José Valim está fazendo um grande trabalho no Rails 3.0 que está para ser lançado. Ele surpreendeu a todos com seu projeto do Google Summer of Code, reescrevendo todo o código dos Geradores para usar Thor e ser mais agnóstico. Não só isso, mas ele também fez melhorias no ActionController para torná-lo mais enxuto e limpo.

Muito desse último trabalho vem uma gem de Rails dele chamado Inherited Resources. Ele pode ser usado agora mesmo nos seus projetos Rails 2.3 e ele também portou algumas das funcionalidades do Rails 3.0 como ActionController Responders e outras coisas.

Em essência ele parece muito com o resource_controller do James Golick ou o make_resourceful do Hampton Caitlin, Mais um Plugin de Controller Magro se preferir. Mas o do José é definitivamente interessante.

Então, decidi fazer um screencast para apresentar algumas das funcionalidades básicas. Tenha em mente que esta gem oferece muito mais e eu encorajo que você leia a página de Wiki sobre ele. Existem dúzias de opções que você pode usar para tornar seus projetos muito melhores para dar manutenção e mais enxutos.

Update 10/01: José just released version 0.9.1 while I was uploading the video :-)

Rails Summit 2009

José Valim is doing a great work in the soon to the released Rails 3.0. He surprised everybody with his Google Summer of Code project, rewriting the entire Generator code to use Thor and be more agnostic. Not only that he enhanced the ActionController with ways to make it leaner and cleaner.

Much of this later work comes from an old Rails gem of his called Inherited Resources. It can be used right now in your Rails 2.3 projects and he just backported some of the Rails 3.0 features such as ActionController Responders and other goodies.

In essence it feels a lot like James Golick resource_controller or Hampton Caitlin’s make_resourceful, Yet Another Thin Controller Plugin if you like. But José’s is definitely interesting.

So, I decided to make a screencast showcasing some of its basic features. Bear in mind that this gem offers a lot more and I highly encourage you to read his Wiki page about it. There are dozens of options that you can leverage to make your projects even more maintainable and lean.