2011-10-19 9 views
8

Gem olarak paketlediğim bir Buildr uzantısına sahibim. Bir pakete eklemek istediğim bir script koleksiyonum var. Şu anda, bu komut dosyalarını dosyaya yazdığım büyük bir metin bloğu olarak saklıyorum. Doğrudan kopyalayabileceğim veya okuyabileceğim/okuyabileceğim bireysel dosyalara sahip olmayı tercih ederim. Bu dosyaların gemiye paketlenmesini istiyorum. Paketlemede sorun yaşıyorum (sadece rake install'dan önce dosya sistemine yapıştırabilirsiniz) ancak bunlara nasıl erişeceğimi anlayamıyorum. Bir Gem Kaynakları paket tipi şey var mı?Bir Ruby Gem'e paketlenmiş dosyalara erişme

cevap

16

__FILE__ kullanarak Eğer taş Ruby dosyasına göre kaynakları yükleyebilirsiniz

1) iki yol, temelde vardır:

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

2) Bu hizmeti kullanmak için Gem gelen keyfi yolları ekleyebilir $LOAD_PATH, örneğin değişken ve ardından kaynakları bulmak için $LOAD_PATH yürümek

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 = '[email protected]' 
    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 

ardından,

$LOAD_PATH.each { |dir| ... look for resources relative to dir ... } 
+0

İlki bir çekicilik gibi çalıştı. :) – Drew

+0

Doğru yolu bulmak için lütfen Gem.data_dir kullanın. – ch2500

İlgili konular