Zugriff auf Dateien, die in ein Ruby -Edelstein verpackt sind
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?
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 ... }