Frage

Ich habe eine Buildr -Erweiterung, die ich als Juwel verpackte. Ich habe eine Sammlung von Skripten, die ich einem Paket hinzufügen möchte. Derzeit habe ich diese Skripte als großen Textblock gespeichert, den ich in Datei schreibe. Ich würde es vorziehen, individuelle Dateien zu haben, die ich entweder direkt kopieren oder wieder lesen/zurückschreiben kann. Ich möchte, dass diese Dateien in das Edelstein verpackt werden. Ich habe kein Problem damit, sie einzupacken (kleben Sie sie einfach in das Dateisystem vor rake install) Aber ich kann nicht herausfinden, wie ich darauf zugreifen soll. Gibt es eine Ding von Edelsteinressourcen -Bundle?

War es hilfreich?

Lösung

Es gibt im Grunde zwei Möglichkeiten,

1) Sie können Ressourcen relativ zu einer Ruby -Datei in Ihrem Juwel laden __FILE__:

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

2) Sie können beliebige Pfade aus Ihrem Edelstein hinzufügen $LOAD_PATH variabel und dann die $LOAD_PATH Ressourcen zu finden, z. B., zB,

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

und dann,

$LOAD_PATH.each { |dir|  ... look for resources relative to dir ... }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top