Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 36 di 45
  • livello principiante
Indice lezioni

Creare un pacchetto gem

Come creare passo passo un pacchetto gem contenente una libreria personale
Come creare passo passo un pacchetto gem contenente una libreria personale
Link copiato negli appunti

Dopo averne compreso le enormi potenzialità vediamo come creare un pacchetto gem contente una nostra libreria. Innanzitutto i sorgenti e tutti i file accessori vanno disposti in una struttura coerente. Ad esempio nella directory radice possiamo creare le seguenti directory:

lib/ contiene le applicazioni, e le librerie, Ruby vere e proprie
ext/ contiene eventuali estensioni Ruby scritte in C
bin/ contiene gli script necessari in fase di installazione
data/ contiene i file dati che accompagnano l'applicazione
conf/ contiene tutti i file di configurazione
man/ contiene le pagine del manuale
test/ contiene i test

Il primo passo consiste nel creare un file di specifica gemspec che conterrà una serie di metadati utilizzati da gem per svolgere le sue operazioni. Un esempio è il seguente:

require 'rubygems'
SPEC = Gem::Specification.new do |spec|
  spec.name     = "ProvaGem"
  spec.version  = "1.0.0"
  spec.author   = "Foo Bar"
  spec.email    = "foo@bar.net"
  spec.homepage = "http://qualchesito.net/ProvaGem"
  spec.platform = Gem::Platform::RUBY
  spec.summary  = "Qui ci va una breve descrizione"
  candidates = Dir.glob("{bin, lib, test}/**/*") 
  spec.files = candidates.delete_if do |item|
                   item.include?("CVS") || item.include?("rdoc")
               end
  spec.test_file = "test/ts_prova.rb"
  spec.has_rdoc  = true
  spec.require_path = "lib"
  spec.extra_rdoc_files = ["README", "ChangeLog"]
  spec.add_dependency "QualcheLibreria", ">=1.0"
end

Commentiamo questo codice. All'inizio ci sono alcune informazioni relative al pacchetto e all'autore. Segue poi platform che indica il tipo di piattaforma dove può essere installata la gemma, ad esempio Gem::Platform::Ruby se si tratta di puro Ruby, Gem::Platform::Win32 per applicazioni Windows e così via.

Scegliamo quindi i file da includere attraverso

  candidates = Dir.glob("{bin, lib, test}/**/*") 
  spec.files = candidates.delete_if do |item|
                   item.include?("CVS") || item.include?("rdoc")
               end

pescandoli nelle directory bin, lib e test ed escludendo i file relativi al repository e la documentazione rdoc. In alternativa, in modo più semplice, avremmo potuto scrivere qualcosa tipo

spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']

raccattando tutto quello presente nelle directory lib e bin. E per escludere alcuni tipi di file l'alternativa è:

spec.files.reject! { |f| f.include? "RDoc" }

Seguono poi altre opzioni che riguardano i test, la documentazione e le dipendenze. L'elenco completo è visualizzabile sull'homepage del progetto.

Fatto questo non ci resta che salvare il file, ad esempio come Provagem.gemspec, ed eseguire gem col comando build:

$ gem build ProvaGem.gemspec
  Successfully built RubyGem
  Name: ProvaGem
  Version: 1.0.0
  File: ProvaGem-1.0.0.gem

Dopo questo comando nella directory corrente troveremo un pacchetto gem contenente tutto quello che serve per l'installazione della nostra libreria.

Ti consigliamo anche