หากฉันต้องการเพิ่มคลาส (เฉพาะโปรเจ็กต์) ให้กับคอนโทรลเลอร์ของฉันใน Rails วิธี/สถานที่ที่ถูกต้องในการวางและ "รวม" ไฟล์เหล่านั้น/มี .rb คืออะไร (เครื่องหมายคำพูดสำหรับ: ไม่ใช่คำหลัก Ruby รวม)
ฉันยังใหม่กับ Rail และไม่พบ วิธี วิธีที่ถูกต้อง LIB ดูเหมือนกับห้องสมุดสาธารณะอื่นๆ และ - สิ่งที่ฉันได้เรียนรู้ - จะไม่โหลดซ้ำตามค่าเริ่มต้นในโหมด dev
แน่นอน ฉันสามารถใส่ทั้งหมดลงใน controler.rb ได้ แต่ ...
คำตอบสำหรับฉัน:
ประการแรก: ไม่มีกฎเกณฑ์ใดๆ หากคุณจำไว้ (หรือเรียนรู้เหมือนฉัน) กฎของราง: NameOfCla -> name_of_cla(.rb) ‹-- ไม่ใช้คลาสเป็นคำเพื่อการชี้แจง
ตั้งชื่อชั้นเรียนของคุณตามที่คุณต้องการ:
class ExtendCon #<--- not using controller here for clearence
....
ใส่ไว้ในไฟล์ extend_con.rb
โปรดรอคำอธิบายเส้นทาง ถ้าคุณตั้งชื่อคลาสของคุณว่า 'MYGreatThing' มันจะเป็น 'm_y_great_thing' (อย่าทดสอบเลย) ดังนั้นให้หลีกเลี่ยงตัวอักษรจีน
หากคอนโทรลเลอร์ของคุณใช้
@letssee=ExtendCon.new
Rails เรียนรู้คลาสและไฟล์นั้น (extend_con) ด้วยตัวมันเอง ฉันยังไม่ทราบว่าจำเป็นต้องรีสตาร์ทเซิร์ฟเวอร์หรือไม่ (ครั้งแรก)
เลือกเส้นทางที่จะใส่ไฟล์: (ฉันชอบวิธีของ Daves) app/myexten
หรือสิ่งที่คุณต้องการทำให้เป็น 'แอป' เฉพาะเจาะจงและยังคงแยกความแตกต่างจาก 'สิ่งของ' ของรางมาตรฐาน
หากคุณไม่ได้ขี้เกียจเหมือนฉัน (ฉันใส่ไว้ในแอป/ผู้ควบคุม) ให้ใส่เส้นทางที่คุณเลือกไว้ใน config/application.rb
ไลค์ (มีความคิดเห็นเพื่อค้นหามัน)
# Custom directories with classes and modules you want to be autoloadable.
# config.autoload_paths += %W(#{config.root}/app/controllers)
config.autoload_paths += %W(#{config.root}/app/myexten)
อันนี้ใช้ได้กับฉันในทุกโหมดรวมถึง "นักพัฒนา" และฉันไม่จำเป็นต้องใส่สิ่งต่าง ๆ "ของฉันเอง" ใน app/lib