tipos rubi preciosas piedras piedra mineral los extrae encuentran donde diamantes diamante como color bruto ruby rubygems

ruby - rubi - ¿Cuál es la forma moderna de estructurar una gema de rubí?



rubi mineral (5)

¿Ha cambiado mucho con el lanzamiento de Bundler? ¿Hay una plantilla que pueda usarse como base? ¿Cuáles son las mejores prácticas?


Al escribir gemas grasas (binarias), la estructura suele ser la siguiente:

lib/1.8/binary.so

lib/1.9/binary.so

lib/my_gem.rb (este archivo simplemente elige qué binary.so cargar dependiendo de la versión de ruby)

Y para extensiones nativas:

lib/ext/my_gem/my_sources.*

lib/my_gem.rb

También suelo poner un archivo version.rb aquí:

lib/my_gem/version.rb

y simplemente contiene algo como:

module MyGem VERSION = "0.1.0" end

Además, IMO, no coloque ningún archivo .rb, excepto el archivo que desea que las personas usen para cargar la gema, en el directorio lib/ . En su lugar, coloque todos los archivos auxiliares en lib/my_gem/


Algunas publicaciones que he encontrado útiles:

Editar (10-01-01): una excelente guía general para las mejores prácticas de gemas es RubyGems Guides . Recomiendo comenzar aquí ahora.

Para resumir los puntos clave:

  • Use la lib/gem.rb y la lib/gem/ structure básicas para el código.
  • Coloque los archivos ejecutables en el bin , los archivos de data y las pruebas en test o spec .
  • No require ni dependa de archivos fuera de la ruta de carga. (Los archivos VERSION menudo parecen vivir en lugares extraños en gemas).
  • No require ''rubygems'' .
  • No altere el $LOAD_PATH .
  • Si te encuentras escribiendo require File.join(__FILE__, ''foo'', ''bar'') , lo estás haciendo mal.

El consejo de Telémaco es bueno. Si lo sigues, tu gema estará configurada para jugar bien con bundler.

También puedes probar usar joyero. Es una gema que genera esqueletos para gemas. El esqueleto predeterminado que escupe cumple con todas las convenciones que mencionó Telemachus y también hará algunas cosas agradables, como agregar su marco de prueba favorito o crear un repositorio de GitHub.


Esta guía de rubygems proporciona información sobre la estructura de una gema y luego entra en detalles sobre lo que debe incluirse en su gemspec

Puede que le resulte más fácil usar bundler para crear la estructura de carpetas de la gema para usted:

bundle gem <gem_name>

my_gem$ bundle gem my_gem create my_gem/Gemfile create my_gem/Rakefile create my_gem/LICENSE.txt create my_gem/README.md create my_gem/.gitignore create my_gem/my_gem.gemspec create my_gem/lib/my_gem.rb create my_gem/lib/my_gem/version.rb Initializing git repo in /Users/keith/projects/my_gem/my_gem


La forma más simple es usar bundler :

bundle gem <gem_name>

Incluso puede usarlo en un proyecto existente desde el directorio principal.