Accesso ai file compresso in un rubino gemma
Domanda
Ho un prolungamento Buildr che sto imballaggio come un gioiello. Ho una collezione di script che voglio aggiungere a un pacchetto. Attualmente, ho questi script memorizzati come un grande blocco di testo che sto scrivendo in un file. Io preferirei avere i singoli file che posso copiare direttamente o lettura / scrittura di nuovo fuori. Vorrei questi file da confezionare nella gemma. Non ho un problema loro confezionamento in (solo loro bastone nel file system prima rake install
), ma io non riesco a capire come accedervi. C'è una gemma Risorse tipo fascio cosa?
Soluzione
Ci sono fondamentalmente due modi,
1) È possibile caricare le risorse relative a un file Ruby in vostro gioiello con __FILE__
:
def path_to_resources
File.join(File.dirname(File.expand_path(__FILE__)), '../path/to/resources')
end
2) È possibile aggiungere i percorsi arbitrari dal Gem alla variabile $LOAD_PATH
e poi a piedi il $LOAD_PATH
per trovare le risorse, per es.,
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
e poi,
$LOAD_PATH.each { |dir| ... look for resources relative to dir ... }