Criando novas RubyGems com newgem
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.)
Filed under: ruby | 1 Comment
Æ!!
Bem legal! Facilita bastante na hora de criar gems! =)
Há braços