La documentación (general) >>

En el Developer Guide >>

Siguiendo los patrones de nomenclatura >>, lo primero es que tenga una carpeta lib/ con un archivo ruby homónimo a la gema y una carpeta con el mismo nombre, donde deje los demás archivos. Se recomienda que todo sea lowercase, por compatibilidad con S.O.s malos.

Luego, necesito un archivo Gemspec >>

Gem::Specification.new do |s|
s.name        = 'imposition'
s.version     = '0.8.8'
s.date        = '2012-08-16'
s.summary     = "editorial imposition script"
s.description = "nUp & booklets"
s.authors     = ["Numerico"]
s.email       = 'webmaster@numerica.cl'
s.files       = Dir.['lib/*']#mejor que ["lib/imposition.rb"] etc
s.homepage    = 'https://github.com/Numerico/impostor'
end

Y con éso ya puedo empaquetar

gem build imposition.gemspec

da

  Successfully built RubyGem
  Name: imposition
  Version: 0.8.8
  File: imposition-0.8.8.gem

🙂 Pa probarla la podemos instalar

 sudo gem install imposition-0.8.8.gem

da

Successfully installed imposition-0.8.8
1 gem installed
Installing ri documentation for imposition-0.8.8...
Installing RDoc documentation for imposition-0.8.8...

dependencias

se me había olvidado, mi gema depende de otras gemas. antes que requerirlas en el código, debiera declararlas como depenencias en el Gemspec.

Gem::Specification.new do |s|
#etc
s.add_runtime_dependency 'alchemist'
s.add_runtime_dependency 'uuidtools'
s.add_runtime_dependency 'fileutils'
s.add_development_dependency 'test/unit'
end

lo raro es que poniéndole ésto, tengo que hacer los require igual en el archivo de inicialización (imposition.rb) ¿será que la dependencia las baja junto con la gema pero no las requiere automáticamente? De hecho leí por ahí que no se recomienda requerir rubygems…

ejecutables

Los ejecutables van en /bin. Ahí simplemente puedo requerir mi gema y utilizarla

require 'rubygems' #ruby < 1.9
require 'imposition'

Metodos.funcionar(...)
#...

Después hay que declararlo en el Gemspec

Gem::Specification.new do |s|
#idem...
s.executables << 'impostor'
end

Lo choro es que después puedo usar el ejecutable como un comando de mi S.O.

numerico@mimaquina:/$ impostor

nice…

Tests

Para los tests, necesito un directorio test/ y un Rakefile

require 'rake/testtask'

Rake::TestTask.new do |t|
t.libs << 'test'
end

desc "Run tests"
task :default => :test

donde le estoy diciendo que ejecute las pruebas unitarias en el directorio test/

Efectivamente después puedo correr mis tests con

rake test
Loaded suite /var/lib/gems/1.8/gems/rake-0.9.2.2/lib/rake/rake_test_loader
Started
..
Finished in 0.846523 seconds.

2 tests, 2 assertions, 0 failures, 0 errors

yeah.

rubygems.org

Check this out >>

Cualquiera puede subir su gema con

gem push imposition-0.8.8.gem

eso sí hay que tener una cuenta

Enter your RubyGems.org credentials.
Don't have an account yet? Create one at http://rubygems.org/sign_up
   Email:   webmaster@numerica.cl
Password:
Pushing gem to https://rubygems.org...
Signed in.
Pushing gem to https://rubygems.org...
Successfully registered gem: imposition (0.8.8)

Queda pendiente RDoc para documentación.

Este sitio utiliza cookies.    Leer más