2010-09-25 33 views
11

Yakut dosyalarla dolu bir klasör var ve require 'file''u kullanarak aynı dizinde bulunan bir dosyaya başka bir dosya eklemeyi denediğimde LoadError kullanıyorum ancak require './file''u kullandığımda her şey iyi çalışıyor. Birisi bana bunun neden olduğunu açıklayabilir mi ve herhangi bir şekilde dosyaya ./ eklemeden bir dosyaya ihtiyacım olabilir mi?Ruby 'dosyası' gerektirmez, ancak './file' gerektirir. Niye ya?

(dizinin Resim): alt text

+0

olası yinelenen alabilirsiniz güzel bilgilendirici sonrası here vardır (http [\ _relative gerektiren ve Ruby gerektiren arasındaki fark nedir?]: // stackoverflow. com/sorular/3672586 /-ne-farkı-arası-akraba-gerektiren-ve-gerektiren-in-yakut) –

cevap

16

değişken $ LOAD_PATH içeriği değil sistemin $LOAD_PATH ama dosyanın dizinine oldukça göreceli sizi den ing require olan

Kontrol, sen require_relative kullanmalıdır. (Gördüğünüz gibi, tam olarak belgelendirilmiş belgelenmiştir.)

3

Sen loadpath geçerli dizini yok. Eğer require bir dosya istiyorsanız

0

Çok eski bir yazı olmasına rağmen, bazı ek bilgilerin yeni başlayanlar için çok yararlı olacağını düşünüyorum.

Gereksinimin düşünülmesinin en iyi yolu, UNIX $ PATH değişkeniyle ilişkilidir. Sadece bir tazeleme yolu ile, UNIX'teki $ PATH değişkeni, yürütülebilir dosyaların bulunabileceği bir dizin listesidir. Bu nedenle, herhangi bir UNIX terminalinde bir programın adını yazdığınızda, bilgisayarınız $ PATH değişkeninizde belirtilen dizinlerdeki yürütülebilir dosyalara bakar. Gereksinim çok benzer bir şey yapar. Örneğin, Ruby dosyanızın üst kısmında 'set' yazmanız gerektiğinde, Ruby'ye set.rb (Ruby's set library) adı verilen bir kütüphane için bir grup dizin aramasını söylersiniz.

Peki Ruby, set.rb'yi nerede arıyor? Şey, bir kez daha, Ruby, UNIX'in $ PATH değişkenine çok benzeyen bir şey var. Bu, aynı zamanda bazen çirkin ve tanımlayıcı takma ad tarafından bilinen global LOAD_PATH değişkenidir $: (bu arada kullanmayı önermiyorum - kısa olsa da olabilir). Ruby'nin ihtiyaç duyulduğunda göründüğü bir dizi dizin ismidir.

Daha fazla bilgi yaklaşık require, load ve require_relative

İlgili konular