ฉันคิดว่านั่นเป็นจุดที่น่าสนใจมาก ตามค่าเริ่มต้น Rubygems จะเพิ่มไดเร็กทอรี lib ไปยัง loadpath แต่คุณสามารถพุชไดเร็กทอรีใด ๆ ที่คุณต้องการไปยังไดเร็กทอรีนั้นโดยใช้ตัวแปร $: กล่าวคือ
$:.push File.expand_path(File.dirname(__FILE__) + '/../surfcompstuff')
นั่นหมายความว่าเมื่อคุณพูดsurfer.rb
ใน dir นั้นคุณสามารถทำได้require "surfer"
ทุกที่และไฟล์จะพบ
นอกจากนี้ตามแบบแผนคลาสและซิงเกิลได้รับไฟล์และโมดูลจะได้รับไดเร็กทอรี ตัวอย่างเช่นหากคุณมีLolCatz
โมดูลและLolCatz::Moar
คลาสที่จะมีลักษณะดังนี้:
lib/
appname.rb
lolcatz/
moar.rb
นั่นคือเหตุผลที่มีโฟลเดอร์ lib / appname เนื่องจากไลบรารีส่วนใหญ่อยู่ในappname
เนมสเปซ
นอกจากนี้หากคุณลองเรียกใช้คำสั่งnewgem --simple [projectname]
ที่จะสร้างโครงสำหรับคุณอย่างรวดเร็วโดยมีเพียงสิ่งจำเป็นสำหรับโปรเจ็กต์ Ruby (และโดยการขยาย Ruby Gem) มีเครื่องมืออื่น ๆ ที่ทำสิ่งนี้ได้ แต่ newgem นั้นค่อนข้างธรรมดา ฉันมักจะกำจัดไฟล์ TODO และสิ่งที่เป็นสคริปต์ทั้งหมด