Question

J'ai une extension Buildr que j'emballage comme un bijou. J'ai une collection de scripts que je veux ajouter à un package. À l'heure actuelle, j'ai ces scripts stockés comme un grand bloc de texte que je vous écris au dossier. Je préférerais avoir des fichiers individuels que je peux copier soit directement ou à l'arrière lecture / écriture sur. Je voudrais que ces fichiers soient emballés dans la gemme. Je n'ai pas un problème d'emballage dans les (il suffit de les coller dans le système de fichiers avant rake install) mais je ne peux pas comprendre comment y accéder. Y at-il une chose de type bundle ressources Gem?

Était-ce utile?

La solution

Il existe essentiellement deux façons,

1) Vous pouvez charger des ressources par rapport à un fichier Ruby dans votre bijou en utilisant __FILE__:

def path_to_resources
  File.join(File.dirname(File.expand_path(__FILE__)), '../path/to/resources')
end

2) Vous pouvez ajouter des chemins arbitraires de votre bijou à la variable $LOAD_PATH puis marcher le $LOAD_PATH de trouver des ressources, par exemple.

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  = Dir.glob("lib/**/*") + %w{History.txt Manifest.txt} +
                Dir.glob("path/to/resources/**/*")

  # If you have resources in other directories than 'lib'
  spec.require_paths << 'path/to/resources'

  # optional, but useful to your users
  spec.summary = "A more longwinded description of your gem"
  spec.author = 'Your Name'
  spec.email = 'you@yourdomain.com'
  spec.homepage = 'http://www.yourpage.com'

  # you did document with RDoc, right?
  spec.has_rdoc = true

  # if you have any dependencies on other gems, list them thusly
  spec.add_dependency('hpricot')
  spec.add_dependency('log4r', '>= 1.0.5')
end

et

$LOAD_PATH.each { |dir|  ... look for resources relative to dir ... }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top