Gerenciando plugins no Rails com Pez
03/09/08
Ultimamente, tenho usado muito mais Git, mas ainda tenho projetos versionados com Subversion. E como todos os meus plugins estão no Github, sinto uma grande dificuldade em mantê-los atualizados, já que utilizam SCMs diferentes.
Como já tinha lido muito sobre algumas ferramentas para esta finalidade, como Braid, resolvi testá-los. Infelizmente, nenhuma delas funcionava da maneira como eu gostaria. Então, como bom geek que sou, decidi fazer minha própria implementação: conheçam o Pez.
Pez é um gerenciador de plugins para Rails muito simples. A diferença principal em relação às ferramentas semelhantes é que ele não tenta adicionar as alterações/atualizações destes plugins no repositório do projeto. Em vez disso, ele cria um diretório central e faz apenas links simbólicos para o diretório vendor/plugins do projeto. Essa abordagem permite, por exemplo, que você mantenha um único diretório de plugins para diferentes projetos, desde que eles utilizem as mesmas revisões/branches.
Mas como não é só de notícias boas que se vive, aqui vem o lado negativo desta história: você não conseguirá usar o Pez se usa Windows, já que muitos comandos utilizados só estão disponíveis em sistemas *nix.
Se você se interessou, veja à seguir como instalá-lo e quais são os comandos disponíveis.
Instalando o Pez
O Pez está hospedado no Github e pode ser instalado com o comando abaixo.
sudo gem install fnando-pez --source=http://gems.github.com
Se quiser dar uma olhada no código ou gerar sua própria versão, siga os passos abaixo.
git clone git://github.com/fnando/pez.git
cd pez
rake gem:install
Usando o Pez na prática
Depois que o Pez tiver sido instalado, você deve executar o comando pez setup
à partir da raíz de seu projeto. Isso irá criar um arquivo config/plugins.yml,
que terá todas as informações dos plugins adicionados.
---
plugins:
rateableplugin:
repo: svn://rubyforge.org/var/svn/rateableplugin/trunk
type: svn
has_cache:
repo: git://github.com/fnando/has_cache.git
type: git
revision: 8aafca390796d79ed200000f3f13243b471b96fc
cucumber:
repo: git://github.com/aslakhellesoy/cucumber.git
type: git
revision: 32d4f03d19bf33172bb7b48fed48e906a56598a7
branch: html-visitor
content_cache:
repo: http://svn.codahale.com/content_cache/
type: svn
revision: 20
development: /Users/fnando/Sites/sample/tmp/plugins
production: /Users/fnando/Sites/sample/tmp/plugins
Por padrão, os plugins são mantidos no diretório tmp/plugins. Você pode alterar essa configuração a qualquer momento, alterando o caminho relativo ao ambiente de seu projeto.
O Pez possui uma série de comandos. Para ver a lista completa, execute o comando
pez help. Você pode visualizar a ajuda para um comando específico com o comando
pez help [command].
Como você pode perceber, não tem muito segredo! Se você tiver alguma sugestão, envie um comentário. Se quiser contribuir, o projeto está no Github: http://github.com/fnando/pez.
Trivia: O nome foi tirado de um album do Less Than Jake chamado Pezcore, que eu estava ouvindo na hora que eu o programava. Ainda bem que não tenho gostos musicais bizarros! :)
- Permalink
- Trackback
- Comentários (4)
- Ao som de: Less Than Jake – Handshake meet pokerface
Removendo plugins instalados como svn:externals no Rails
24/01/08
Se você utiliza plugins no Rails em um projeto versionado com Subversion, provavelmente já deve ter visto que é possível fazer tal instalação utilizando o svn:externals, através do argumento -x.
script/plugin install -x http://code.bitsweat.net/svn/object_transactions/
A diferença é que toda vez que você fizer o checkout de seu projeto, o Subversion irá buscar a última versão disponível no repositório que você adicionou. Isso é uma excelente maneira de deixar o plugin sempre atualizado. Mas e se por algum motivo você não precisa mais do plugin e quer removê-lo?
Você terá que fazer isso através de um comando do Subversion. Vá ao diretório de plugins e execute as linhas abaixo. Isso irá abrir o arquivo com a lista de repositórios externos do seu projeto. Neste exemplo editaremos tal arquivo usando o Vi.
$ cd vendor/plugins
$ svn propedit svn:externals . --editor-cmd vi

Vá até a linha do repositório e pressione CTRL + → para removê-lo. Para salvar o arquivo, pressione ESC, digite :wq! e, então, pressione Enter. Remova o diretório do plugin com o comando rm -rf object_transactions.

Agora, basta fazer o commit de seu projeto!
- Permalink
- Trackback
- Comentários (6)
- Ao som de: The Offspring – (Can't Get My) Head Around You / Next to You
Detectando o navegador no Rails
28/01/07
Eu tinha um script em PHP que fazia detecção de browser e acabei de portá-lo para Ruby.
Ele é bem simples mas serve muito bem. Para utilizá-lo, basta instanciá-lo da seguinte maneira:
ua = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"
browser = Browser.new :user_agent => ua,
:accept_language => 'en-gb'
puts browser.ie? #false
puts browser.opera? #false
puts browser.safari? #false
puts browser.mozilla? #true
puts browser.firefox? #true
puts browser.linux? #false
puts browser.windows? #true
puts browser.mac? #false
puts browser.platform #Windows
puts browser.name #Firefox
puts browser.version #2
puts browser.full_version #2.0.0.1
puts browser.language #English/United Kingdom
puts browser.user_agent #Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Você também pode instanciar o objeto passando o "request" como parâmetro:
@browser = Browser.new(:request => request)
Gosto de usá-lo para exibir um trecho específico de informação, da mesma maneira que a Mozilla Foundation faz quando você acessa a página do Firefox, sugerindo o instalador para seu sistema. Você pode fazer algo como:
Pegue o código direto do Subversion.
svn co http://svn.simplesideias.com.br/general/browser/
Update: A classe foi reformulada para deixar mais elegante. ;)
- Permalink
- Trackback
- Comentários (7)
- Ao som de: RIVETS – Motivation
