um pluguinho
Archive for November, 2008
Ordenando a lista de opções no plugin activerecord_symbolize
Nov 14th
Ainda na continuação do post anterior, a troca de idéias com o Cássio acabaram por render mais frutos para o plugin.
Já tinha tempo que eu estava precisando de uma forma de ordenar as opções que no select ou radio gerado pelos helpers select_sym e radio_sym respectivamente. O problema era que o plugin trabalhava com o arrays simples ou com hash para estabelecer os valores possíveis para o atributo.
Bom como hash não tem um ardem certa em que os seus valores possam ser capturados, uma vez que ele seja definido, um simples each sobre o hash pode trazer seus valores em qualquer ordem.
Então agora o plugin conta com a opção de usar um matriz para definição dos valores, mantendo a opção de array simples e hash, sendo que no primeiro é mantido a ordem na qual os valores são definidos e no caso de hash é retornando em ordem alfabética. Vamos há alguns exemplos para claria as idéias:
Então para a definição de model acima, temos o seguintes resultados na view:
Observe que no caso do so, a ordem não é a mesma estabelecida na chamada do symbolize, mas sim em ordem alfabética do humanize do atribute, enquanto no caso de office os valores vem na ordem que foram declaradas dentro do array.
Bom é isso, em breve mais uma opção de ordenação, mas por hora espero que esta opção agrade a quem precisar.
Novo atributo *_humanize no plugin activerecord_symbolize
Nov 14th
O Cássio do /* CODIFICANDO */, fez um post dando uma dica de como simular uma funcionalidade de enum no ActiveRecord, para trabalhar com uma faixa de valores em um dos atributos do model. Então dei uma dica para ele do plugin activerecord_symbolize, do qual eu já falei por aqui e acabei por contribui com algumas alterações.
Trocando idéia com o Cássio, ele sugeri o método *_str, para facilitar na hora de transformar a propriedade do model em um valor legível para o usuário. Bom, eu já tinha feito está alteração localmente e acabei por esquecer o commit/push dela.
A diferença do que ele sugeriu para o que eu tinha feito é que dei o nome de *_humanize para o método, o que é mais Ruby mod do que _str, com o _str poderia ser confundido com o método to_str. Passamos a ter:
Com isso espero atender melhor aos usuário desse plugin, facilitando na hora de obter o valor que sera mostrado na view.
Hooks no bash
Nov 13th
Nos últimos dias tenho andado ocupado com muitos projetos e não esta sobrando muito tempo para escrever, e mesmo revisar os posts que já estão escrito aqui para o blog, faltando apenas a revisão e publicação, então vai um pequeno post sobre uma ferramenta para bash programers de plantão.
Estou trabalhando em uma gem que entre outras coisas vai enviar mensagens aos meus contatos de IM de acordo com o comando executado no shell, em breve ela deve ficar pronta e eu dou mais detalhes por aqui. Mas o importante nisso foi descobrir como monitorar o que é executado no shell.
A principio pensei em varias possibilidades, dês de interagir com o kernel em algum nível, para obter os comandos executados ou mesmo fazer alguma gambiarra com o comando “script”, mas quase todas as tentativas me levavam a um problema: como fazer isso de forma transparente e ainda mais importante em Userspace.
Pesquisando, acabei achando um pequeno truque. Neste site há uma explicação de como usar esse “hook” de bash para abrir uma caixa de aviso com Growl no mac (o que pode ser feito no Linux com o notify), para avisar sobre o termino de comandos muito longos.
A configuração é bem simples, basta baixar para o seu home dir o arquivo http://www.twistedmatrix.com/users/glyph/preexec.bash.txt e adicionar ao seu bash a chamada: “. ~/.preexec.bash”, feito isso você define duas funções a preexec e a precmd, funções que são chamadas antes do comando e depois do comando respectivamente.
As aplicações para este hook são quase que infinitas, mas atente para o fato de que isso aumenta o tempo de execução de um comando, pois ela trabalha em cima de todos os comandos que você executar em shell.
obs: Obrigado ao meu amigo Cássio pelas longas horas perdidas atrás dessa inhaca, se ele tivesse um blog eu linkaria aqui!