Criando novas RubyGems com newgem

05Jun09

Olá pessoal, ultimamente recebi tarefas para desenvolver duas APIs de integração dos projetos em que estou alocado e escolhemos fazer a integração entre os vários projetos utilizando gems (para entender um pouco mais sobre rubygems leia: http://rubygems.org/).

Fuçando pela internet achei alguns geradores de gem e escolhi utilizar o newgem.

O que é newgem e para que serve?

O newgem tem a função de gerar um esboço para suas gems possibilitando o compartilhamento do seu código no RubyForge.

Instalando

Para instalar esta gem é bem simples:

sudo gem install newgem

Utilização

É muito simples criar uma nova gem, basta executar:

newgem wizzo

Ao executar este comando você terá o seguinte output:

      create
      create  doc
      create  lib
      create  script
      create  tasks
      create  lib/wizzo
      create  History.txt
      create  Rakefile
      create  README.rdoc
      create  PostInstall.txt
      create  lib/wizzo.rb
  dependency  install_test_unit
      create    test
      create    test/test_helper.rb
      create    test/test_wizzo.rb
  dependency  install_website
      create    website/javascripts
      create    website/stylesheets
      create    config
      exists    script
      exists    tasks
      create    website/index.txt
      create    website/index.html
      create    config/website.yml.sample
      create    script/txt2html
  dependency    plain_theme
      exists      website/javascripts
      exists      website/stylesheets
      create      website/template.html.erb
      create      website/stylesheets/screen.css
      create      website/javascripts/rounded_corners_lite.inc.js
  dependency  install_rubigen_scripts
      exists    script
      create    script/generate
      create    script/destroy
      create  script/console
      create  Manifest.txt
      readme  readme
Important
=========

* Open Rakefile
* Update missing details (gem description, dependent gems, etc.)

É possível utilizar algumas opções ao gerar uma gem que tornam a geração mais interessante.

Por padrão o projeto gerará testes baseados no Test::Unit, caso você queira utilizar RSpec existe a opção: -T rspec

Outras opções interessantes é poder escolher o tipo de versionamento a ser utilizado: -c ou –svn para utilizar subversion ou -g ou –git para utilizar git.

A opção -j ou –jruby criará um esboço de gem para JRuby.

Para verificar as demais possibilidades:

newgem --help

Configurando

As configurações da gem serão centralizadas no Rakefile. Elas são feitas usando o Hoe e em sua maioria são de integração com o RubyForge. Para indicarmos que nossa gem possui depedências para poder ser instaladas devemos utilizar a seguinte configuração para o Hoe:

$hoe = Hoe.new('wizzo', Wizzo::VERSION) do |p|
  p.extra_deps         = [
    ['activesupport','>= 2.0.2'],
  ]
end

Neste caso mostrado acima será é necessário existir um versão igual ou superior à 2.0.2 da gem activesupport para que a nossa gem possa ser instalada.

Outro tipo de dependência que pode ser configurada é a dependência no ambiente de desenvolvimento:

p.extra_dev_deps = [
  ['newgem', ">= #{::Newgem::VERSION}"],
  ['factory_girl']
]

Por padrão o newgem coloca ele mesmo como dependência para o este ambiente, e no exemplo acima adicionei o factory_girl como necessário para o ambiente.

É possível omitir alguns arquivos ao gerar a gem para tanto basta setar a seguinte propriedade no Hoe:

 p.clean_globs |= %w[**/.DS_Store tmp *.log *.swp nbproject]

Existe um conjunto de arquivos que são ignorados por padrão; no exemplo acima adicionei os arquivos *.swp e a pasta de projetos gerada pelo Netbeans.

Bom, é isto pessoal. Espero que tenham gostado e curtam o newgem!

Abraços.

$ cd ~/ruby_projects
$ newgem wizzo
      create
      create  doc
      create  lib
      create  script
      create  tasks
      create  lib/wizzo
      create  History.txt
      create  Rakefile
      create  README.rdoc
      create  PostInstall.txt
      create  lib/wizzo.rb
  dependency  install_test_unit
      create    test
      create    test/test_helper.rb
      create    test/test_wizzo.rb
  dependency  install_website
      create    website/javascripts
      create    website/stylesheets
      create    config
      exists    script
      exists    tasks
      create    website/index.txt
      create    website/index.html
      create    config/website.yml.sample
      create    script/txt2html
  dependency    plain_theme
      exists      website/javascripts
      exists      website/stylesheets
      create      website/template.html.erb
      create      website/stylesheets/screen.css
      create      website/javascripts/rounded_corners_lite.inc.js
  dependency  install_rubigen_scripts
      exists    script
      create    script/generate
      create    script/destroy
      create  script/console
      create  Manifest.txt
      readme  readme
Important
=========

* Open Rakefile
* Update missing details (gem description, dependent gems, etc.)
About these ads


One Response to “Criando novas RubyGems com newgem”

  1. 1 PotHix

    Æ!!

    Bem legal! Facilita bastante na hora de criar gems! =)

    Há braços


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Follow

Get every new post delivered to your Inbox.

%d bloggers like this: