2009-03-26 15 views
12

Estoy creando lo que espero que sea gema de rubí. ¿Alguien tiene un buen enlace a un tutorial sobre la conversión de una simple biblioteca o complemento a una joya? Además, especialmente, ¿cuál es el proceso que utiliza Ruby para permitir que el requerido encuentre gemas? Parece ser algo más que poner los archivos en la ruta de la gema (¿o está jodida mi configuración?).¿Cómo se obtiene una gema de rubí en la ruta de inclusión para "requerir"

Gracias

Respuesta

26

De hecho, no es difícil hacer esto manualmente. Supongamos que tiene una biblioteca whatever.rb que desea distribuir como una gema.

  1. crea un directorio lib y poner una copia de whatever.rb en lib/whatever.rb.
  2. crea un archivo whatever.gemspec, y ponga el siguiente allí, llenando los valores apropiados:
    
    Gem::Specification.new do |spec| 
        spec.name = 'the-name-of-your-gem' 
        spec.version ='0.0.1'
    # this is important - it specifies which files to include in the gem. spec.files = ["lib/whatever.rb"]
    # optional, but useful to your users spec.summary = "A more longwinded description of your gem" spec.author = 'Your Name' spec.email = '[email protected]' spec.homepage = ' http://www.yourpage.com '
    # you did document with RDoc, right? spec.has_rdoc = true
    # if you have a ruby forge project spec.rubyforge_project = 'your-project-name-on-rubyforge'
    # if you have any dependencies on other gems, list them thusly spec.add_dependency('hpricot') spec.add_dependency('log4r', '>= 1.0.5') end
  3. ahora, para construir la gema, utilice el comando gem build:
     
    % gem build whatever.gemspec 
    Successfully built RubyGem 
    Name: the-name-of-your-gem 
    Version: 0.0.1 
    File: the-name-of-your-gem-0.0.1.gem 
    % 
    
  4. Usted puede probar de forma local mediante el uso de gem install the-name-of-your-gem-0.0.1.gem Para utilizar la biblioteca en una secuencia de comandos a continuación, sólo tiene que hacer lo siguiente en la parte superior:

Para más información sobre lo que las distintas configuraciones en el archivo gemspec, comprobar el GemSpec Reference.

Personalmente, uso rubygems también para empacar guiones ejecutables y me resulta muy útil para eso.

+0

¿Alguien marcó esta buena respuesta, respuesta detallada sin siquiera un comentario? –

+0

Maravillosamente completo. Fantástica respuesta. – KeatsKelleher

+0

Impresionante, esta respuesta me hizo darme cuenta de que con bundler por defecto después de compilar una gema, solo los archivos agregados al control de la versión se agregan a 'spec.files'. Es decir: 's.files = \ 'git ls-files \' .split ($ \) 'ignora los archivos que no ha agregado a git. – erran

2

Hay un oldish one here del Dr. Nic, que utiliza newgem. Eso es probablemente un poco desactualizado ahora.

Algo más reciente, conseguimos gemify, que parece construirse sobre lo anterior. Here's a post about that

En cuanto a los caminos van, una vez que haya ejecutado gem install <some-useful-stuff> y su código que requiere o bien ha ejecutado require 'rubygems' o que haya configurado RUBYOPT = -rubygems (que es sólo para Windows? No estoy seguro) las ejecuciones posteriores de entonces require también buscará en el directorio gems una biblioteca apropiada.

También está el comando más explícito (pero obsoleto) require_gem, que ahora es simplemente gem, que le permite especificar números de versión.

2

Para construir una gema de rubí es posible que desee consultar newgem o jeweler.

+1

También hay un railscast sobre el uso de bundler para crear una nueva gema. (http://railscasts.com/episodes/245-new-gem-with-bundler) – Intentss

Cuestiones relacionadas