Ruby: ¿Cómo escribir una gema? [cerrado]


Me gustaría escribir un paquete para Ruby y ponerlo a disposición como una gema.
¿Cuáles son las herramientas, los pasos y los escollos ?
Hay buenos tutoriales, screencasts, etc., que te ayudó a aprender a hacerlo ?

 159
Author: glmxndr, 2010-02-03

3 answers

Rubygems.org ' s Guides es uno de los mejores recursos para escribir tu propia gema.

Si estás usando Bundler en tu aplicación, es posible que quieras ver la guía de Ryan Bigg para Desarrollar un RubyGem usando Bundler y el Railscast de sobre la creación de gemas con Bundler.

Si estás interesado en herramientas que te ayuden a escribir gemas:

Algunos tutoriales / guías:

 214
Author: Jack Chu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-09 01:10:33

Así es como suelo crear y liberar Gemas: {[13]]}

  1. Inscríbase en https://github.com
  2. Inscríbase en https://rubygems.org
  3. $ gem install ore rubygems-tasks rdoc rspec
  4. $ mine awesome_gem
  5. cd awesome_gem/ y editar el README.rdoc y awesome_gem.gemspec, escribir código en lib/awesome_gem/ y agregar pruebas RSpec en specs/.
  6. cuando esté listo para lanzar, actualice el archivo ChangeLog.rdoc, ejecute rake spec y rake rerdoc, abra html/index.html y vuelva a verificar cualquier error tipográfico.
  7. rake release
  8. (Optativo) enlace y explicación de tu nueva gema impresionante a http://rubyflow.com

Siéntate y disfruta de la gloria de tu primera Joya. :)

 6
Author: postmodern,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-05-21 07:22:26

No es necesario comenzar a escribir una gema, simplemente escriba algún código, escriba algunas pruebas, utilícela como quiera, y una vez que esté satisfecho con ella, use gema this para generar el Rakefile relevante.

Ayuda si te apegas a los enfoques que toman otras gemas (tener un directorio lib, evitar nombrar archivos de maneras que podrían chocar con otras gemas, escribir algunas pruebas si puedes, tener un readme), pero no es necesario.

Una vez que tengas algo que quieras compartir, ponlo en github y empujarlo a gemcutter .

No lo pienses demasiado, no uses azada u otras herramientas exageradas, diviértete, no hagas nada que yo no haría.

 6
Author: cwninja,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-12 08:38:56