La clase de especificación contiene la información de una gema. Por lo general, se define en un archivo .gemspec o Rakefile y se ve así:
Gema :: Especificación . nuevo hacer | s |
s . nombre = 'ejemplo'
s . versión = '0.1.0'
s . licencias = [ 'MIT' ]
s . resumen = "¡Este es un ejemplo!"
s . description = "¡Explicación mucho más larga del ejemplo!"
s . autores = [ "Ruby Coder" ]
s . correo electrónico ='[email protected]'
s . archivos = [ "lib/ejemplo.rb" ]
s . página de inicio = 'https://rubygems.org/gems/example'
s . metadatos = { "source_code_uri" => "https://github.com/example/example" }
end
A partir de RubyGems 2.0, una especificación puede contener metadatos arbitrarios. Consulta las restricciones de metadata
sobre el formato y el tamaño de los elementos de metadatos que puedes agregar a una especificación.
Atributos GEMSPEC requeridos
AUTHORS=(value
)
Una lista de autores de esta gema.
Alternativamente, se puede especificar un solo autor asignando una cadena aspec.author
Uso:
spec.authors = ['John Jones', 'Mary Smith']
Files
Archivos incluidos en esta gema. No puede agregar a este descriptor de acceso, debe asignarlo.
Solo agregue archivos que pueda necesitar a esta lista, no directorios, etc.
Los directorios se eliminan automáticamente de esta lista cuando se construye una gema, otros que no son archivos provocan un error.
Uso:
require 'rake'
spec.files = FileList['lib/**/*.rb',
'bin/*',
'[A-Z]*'].to_a
# or without Rake...
spec.files = Dir['lib/**/*.rb'] + Dir['bin/*']
spec.files += Dir['[A-Z]*']
spec.files.reject! { |fn| fn.include? "CVS" }
Name
El nombre de esta GEMA.
Uso:
spec.name = 'rake'
Summary
Un breve resumen de la descripción de esta gema. Mostrado en gem list -d
.
El description
debe ser más detallado que el resumen.
Uso:
spec.summary = "This is a small summary of my gem"
Versión
La versión de esta gema.
La cadena de versión puede contener números y puntos, como 1.0.0
. Una gema es una gema ‘prelanzamiento’ si la versión tiene una letra, como 1.0.0.pre
.
Uso:
spec.version = '0.4.1'
Atributos GEMSPEC recomendados
Descripción
Una larga descripción de esta gema.
La descripción debe ser más detallada que el resumen pero no excesivamente larga. Unos pocos párrafos es la longitud recomendada sin ejemplos ni formato.
Uso:
spec.description = <<-EOF
Rake is a Make-like program implemented in Ruby. Tasks and
dependencies are specified in standard Ruby syntax.
EOF
Una dirección de correo electrónico de contacto (o direcciones) para esta gema
Uso:
spec.email = '[email protected]'
spec.email = ['[email protected]', '[email protected]']
Homepage
La URL de la página de inicio de esta gema
Uso:
spec.homepage = 'https://github.com/ruby/rake'
License=(o
)
La licencia de esta gema.
La licencia no debe tener más de 64 caracteres.
Este debería ser solo el nombre de su licencia. El texto completo de la licencia debe estar dentro de la gema (en el nivel superior) cuando la construyas.
La forma más sencilla es especificar el ID de SPDX estándar spdx.org/licenses/ para la licencia. Idealmente, debe elegir uno que esté aprobado por OSI (Open Source Initiative) opensource.org/licenses/alphabetical .
Las licencias aprobadas por OSI más utilizadas son MIT y Apache-2.0. GitHub también proporciona un selector de licencias en choosealicense.com/ .
También puede usar un archivo de licencia personalizado junto con su gemspec y especificar un LicenseRef-, donde idstring es el nombre del archivo que contiene el texto de la licencia.
Debe especificar una licencia para su gema para que las personas sepan cómo se les permite usarla y las restricciones que le impone. No especificar una licencia significa que todos los derechos están reservados; otros no tienen derecho a usar el código para ningún propósito.
Puede establecer varias licencias conlicenses=
Uso:
spec.license = 'MIT'
Licenses=(licenses
)
La(s) licencia(s) de la biblioteca.
Cada licencia debe ser un nombre corto, no más de 64 caracteres.
Este debería ser solo el nombre de su licencia. El texto completo de la licencia debe estar dentro de la gema cuando la construyas.
Ver license=
para más discusión
Uso:
spec.licenses = ['MIT', 'GPL-2.0']
Metadata
Los metadatos contienen datos adicionales para esta gema que pueden ser útiles para otros consumidores y los pueden configurar los autores de la gema.
Los elementos de metadatos tienen las siguientes restricciones:
- Los metadatos deben ser un objeto Hash
- Todas las claves y valores deben ser cadenas
- Las claves pueden tener un máximo de 128 bytes y los valores pueden tener un máximo de 1024 bytes
- Todas las cadenas deben ser UTF-8, no se permiten datos binarios
Puede usar metadatos para especificar enlaces a la página de inicio de su gema, base de código, documentación, wiki, lista de correo, rastreador de problemas y registro de cambios.
s.metadata = {
"bug_tracker_uri" => "https://example.com/user/bestgemever/issues",
"changelog_uri" => "https://example.com/user/bestgemever/CHANGELOG.md",
"documentation_uri" => "https://www.example.info/gems/bestgemever/0.0.1",
"homepage_uri" => "https://bestgemever.example.io",
"mailing_list_uri" => "https://groups.example.com/bestgemever",
"source_code_uri" => "https://example.com/user/bestgemever",
"wiki_uri" => "https://example.com/user/bestgemever/wiki"
"funding_uri" => "https://example.com/donate"
}
Estos enlaces se usarán en la página de su gema en rubygems.org y deben pasar la validación contra la siguiente expresión regular.
%r{\Ahttps?:\/\/([^\s:@]+:[^\s:@]*@)?[A-Za-z\d\-]+(\.[A-Za-z\d\-]+)+\.?(:\d{1,5})?([\/?]\S*)?\z}
Required_ruby_version
La versión de Ruby requerida por esta gema
Uso:
spec.required_ruby_version = '>= 2.7.0'
Atributos de GEMSPEC Opcionales
Add_development_dependency(gem
, *requirements
)
Agrega una dependencia de desarrollo nombrada gem
con requirements
a esta gema.
Uso:
spec.add_development_dependency 'example', '~> 1.1', '>= 1.1.4'
Las dependencias de desarrollo no se instalan de forma predeterminada y no se activan cuando se requiere una gema.
Add_runtime_dependency(gem
, *requirements
)
Agrega una dependencia de tiempo de ejecución denominada gem
con requirements
a esta gema.
Uso:
spec.add_runtime_dependency 'example', '~> 1.1', '>= 1.1.4'
Author=(o
)
Escritor singular (alternativo) paraauthors
Uso:
spec.author = 'John Jones'
Bindir
La ruta en la gema para scripts ejecutables. Por lo general, ‘papelera’
Uso:
spec.bindir = 'bin'
Cert_Chain
La cadena de certificados utilizada para firmar esta gema. Ver Gem::Seguridad para más detalles.
Executables
Ejecutables incluidos en la gema.
Por ejemplo, la gema rake tiene rake como ejecutable.
No especifica la ruta completa (como en bin/rake); se espera que todos los archivos de estilo de aplicación se encuentren en bindir. Estos archivos deben ser archivos Ruby ejecutables.
Los archivos que usan bash u otros intérpretes no funcionarán.
Los ejecutables incluidos solo pueden ser scripts Ruby, no scripts para otros lenguajes o binarios compilados.
Uso:
spec.executables << 'rake'
Extensions
Extensiones para compilar al instalar la gema, específicamente las rutas a los archivos de estilo extconf.rb utilizados para compilar extensiones.
Estos archivos se ejecutarán cuando se instale la gema, lo que hará que el código C (o lo que sea) se compile en la máquina del usuario.
Uso:
spec.extensions << 'ext/rmagic/extconf.rb'
Consulte Gem::Ext::Builder para obtener información sobre cómo escribir extensiones para gemas.
Extra_doc_files
Archivos adicionales para agregar a RDoc como README o doc/examples.txt
Cuando el usuario elige generar la documentación RDoc para una gema (normalmente en el momento de la instalación), todos los archivos de la biblioteca se envían a RDoc para su procesamiento.
Esta opción le permite tener algunos archivos sin código incluidos para un conjunto de documentación más completo.
Uso:
spec.extra_rdoc_files = ['README', 'doc/user-guide.txt']
Platform=(platform
)
La plataforma en la que se ejecuta esta gema.
Suele ser Gem::Platform::RUBY o Gem::Platform::CURRENT.
La mayoría de las gemas contienen código Ruby puro; simplemente deben dejar el valor predeterminado en su lugar. Algunas gemas contienen código C (u otro) para ser compilado en una “extensión” de Ruby.
La gema debe dejar el valor predeterminado en su lugar a menos que el código solo se compile en un determinado tipo de sistema. Algunas gemas consisten en código precompilado (“gemas binarias”).
Es especialmente importante que establezcan el atributo de la plataforma de forma adecuada.
Un atajo es establecer la plataforma en Gem::Platform::CURRENT, lo que hará que el generador de gemas establezca la plataforma en el valor apropiado para el sistema en el que se realiza la compilación.
Si este atributo se establece en un valor no predeterminado, se incluirá en el nombre de archivo de la gema cuando se construya, como: nokogiri-1.6.0-x86-mingw32.gem
Uso:
spec.platform = Gem::Platform.local
Post_install_message
Un mensaje que se muestra después de instalar la gema.
Uso:
spec.post_install_message = "Thanks for installing!"
Rdoc_options
Especifica las opciones de rdoc que se utilizarán al generar la documentación de la API.
Uso:
spec.rdoc_options << '--title' << 'Rake -- Ruby Make' <<
'--main' << 'README' <<
'--line-numbers'
Require_paths=(val
)
Caminos en la gema para agregar $LOAD_PATH
cuando esta gema está activada. Si tiene una extensión que no necesita agregar "ext"
a la ruta requerida, el proceso de creación de la extensión copiará los archivos de la extensión en “lib” por usted.
El valor predeterminado es"lib"
Uso:
# If all library files are in the root directory...
spec.require_paths = ['.']
Required_ruby_version=(req
)
La versión de Ruby requerida por esta gema. La versión Ruby se puede especificar a nivel de parche:
$ ruby -v -e 'p Gem.ruby_version'
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
#<Gem::Version "2.0.0.247">
También se pueden especificar versiones preliminares.
Uso:
# This gem will work with 1.8.6 or greater...
spec.required_ruby_version = '>= 1.8.6'
# Only with final releases of major version 2 where minor version is at least 3
spec.required_ruby_version = '~> 2.3'
# Only prereleases or final releases after 2.6.0.preview2
spec.required_ruby_version = '> 2.6.0.preview2'
# This gem will work with 2.3.0 or greater, including major version 3, but lesser than 4.0.0
spec.required_ruby_version = '>= 2.3', '< 4'
Required_rubygems_version
La versión de RubyGems requerida por esta gema.
Required_rubygems_version=(req
)
La versión de RubyGems requerida por esta gema.
Requirements
Enumera los requisitos externos (para RubyGems) que se deben cumplir para que esta gema funcione. Es simplemente información para el usuario.
Uso:
spec.requirements << 'libmagick, v6.0'
spec.requirements << 'A good graphics card'
Rubygems_version
La versión de RubyGems utilizada para crear esta gema.
No configure esto, se configura automáticamente cuando se empaqueta la gema.
Signing_key
La llave utilizada para firmar esta gema. Ver Gem::Seguridad para más detalles.
- RubyGems: Encuentra, instala, y publica gemas de Ruby (1)
- RubyGems: Descargar RubyGems (2)
- RubyGems: Conceptos Básicos (3)
- RubyGems: ¿Qué es una Gema? (4)
- RubyGems: ¿Cómo hacer una gema? (5)
- RubyGems: Gemas con extensiones (6)
- RubyGems: Nombrando tu gema (7)
- RubyGems: Publicar y compartir tu gema (8)
- RubyGems: Prácticas de seguridad (9)
- RubyGems: Administrar Propietarios (10)
- RubyGems: Eliminar una gema publicada (11)
- RubyGems: Actualizar certificado SSL (12)
- RubyGems: Patrones (13)