Sadece bunu yap:
require_relative 'tokenizer'
Bunu, aynı dizinde bulunan bir Ruby dosyasına koyarsanız tokenizer.rb
, geçerli çalışma dizininiz (CWD) ne olursa olsun iyi çalışır.
Bunun neden en iyi yol olduğunu açıklama
Diğer cevaplar kullanmalısınız iddia require './tokenizer'
ama yani yanlış size aynı dizinde sizin Yakut süreci sadece iş çalışacak çünkü eğer, cevap tokenizer.rb
içindedir. Hemen hemen tek nedeni kullanmayı düşünün require
eğer gerekiyorsa olacağını böyle Desteklenmeyen Ruby 1.8'i destekleyin require_relative
.
require './tokenizer'
Cevap Bugün senin için işe yarayabilecek ama gereksiz yere size Yakut kod çalıştırabilir yolları sınırlar. Yarın, dosyalarınızı farklı bir dizine taşımak veya yalnızca Ruby işleminizi farklı bir dizinden başlatmak istiyorsanız, tüm bu require
ifadeleri yeniden düşünmeniz gerekir .
require
Yükleme yolundaki dosyalara erişmek için kullanmak iyi bir şeydir ve Ruby gems her zaman bunu yapar. Ancak, çok özel bir şey yapmadıkça ve ne yaptığınızı bilmiyorsanız , tartışmayı bir require
ile başlamamalısınız .
.
Çevresi hakkında varsayımlarda bulunan bir kod yazarken, hangi varsayımlarda bulunacağınızı dikkatlice düşünmelisiniz. Bu durumda, tokenizer
dosyayı istemek için üç farklı yol vardır ve her biri farklı bir varsayım yapar:
require_relative 'path/to/tokenizer'
: İki Ruby kaynak dosyası arasındaki göreceli yolun aynı kalacağını varsayar.
require 'path/to/tokenizer'
: path/to/tokenizer
Yükleme yolundaki ( $LOAD_PATH
) dizinlerden birinin içinde olduğunu varsayar . Bu, yükleme yoluna bir şeyler eklemeniz gerektiğinden, genellikle ek kurulum gerektirir.
require './path/to/tokenizer'
: Ruby işleminin geçerli çalışma dizininden göreli yolun tokenizer.rb
aynı kalacağını varsayar .
Çoğu insan ve çoğu durumda, # 1 ve # 2 seçeneklerinde yapılan varsayımların zaman içinde geçerli olma ihtimalinin daha yüksek olduğunu düşünüyorum.