Norint sukurti daugkartinius komponentus, kuriuos galima lengvai naudoti kitose programose, programavimo kalba turi turėti tam tikrą būdą sklandžiai importuoti šį kodą vykdymo metu. Į Rubinas, reikalauti metodas yra naudojamas įkelti kitą failą ir vykdyti visą jo teiginius. Tai naudojama visų klasių ir metodas apibrėžimai byloje. Reikalavimo metodas ne tik vykdo visus faile esančius teiginius, bet ir stebi, kurių failų buvo reikalaujama anksčiau, todėl nereikės failo du kartus.
Naudojant metodą „reikalauti“
Reikalavimo metodas reikalaujamo failo pavadinimą įveda kaip stygos, kaip vieną argumentą. Tai gali būti kelias į failą, pvz ./lib/some_library.rb arba sutrumpintas vardas, pvz kai kurie_brailai. Jei argumentas yra kelias ir visas failo vardas, failo ieškos metodas, kurio reikalaujama. Tačiau, jei argumentas yra sutrumpintas vardas, reikalavimo metodas ieškos to failo per kelis iš anksto nustatytus katalogus jūsų sistemoje. Sutrumpinto pavadinimo naudojimas yra labiausiai paplitęs būdas naudoti reikalaujamąjį būdą.
Šis pavyzdys parodo, kaip naudoti reikalavimo teiginį. Failas test_library.rb yra pirmame kodo bloke. Šis failas išspausdina pranešimą ir apibrėžia naują klasę. Antrasis kodo blokas yra failas test_program.rb. Šis failas įkeliamas test_library.rb failą naudojant tenquiremethod ir sukuria naują „TestClass“ objektas.
pateikia „test_library įtraukta“
klasės „TestClass“
def inicijuoti
pateikia „TestClass sukurtas objektas“
galas
galas
#! / usr / bin / env rubinas
reikalauti 'test_library.rb'
t = „TestClass.new“
Venkite vardų susidūrimų
Rašant daugkartinius komponentus, geriau nedeklaruoti daugelio kintamųjų, esančių ne klasėse ar metoduose, arba naudojant $ priešdėlis. Taip siekiama užkirsti kelią vadinamajam „vardų tarša"Jei skelbiate per daug vardų, kita programa ar biblioteka gali paskelbti tą patį vardą ir sukelti vardo susidūrimą. Kai dvi visiškai nesusijusios bibliotekos atsitiktinai pradės keisti viena kitos kintamuosius, viskas nutrūks - atrodo, atsitiktinai. Tai labai sunku nustatyti klaidą ir geriau tiesiog jos išvengti.
Norėdami išvengti vardų susidūrimų, viską galite įklijuoti į savo bibliotekos vidų modulis pareiškimas. Tam reikės, kad žmonės nurodytų jūsų klases ir metodą visiškai kvalifikuotu vardu, pvz „MyLibrary“: mano_metodas, bet tai verta, nes vardų susidūrimai dažniausiai neįvyks. Žmonėms, norintiems, kad visi jūsų klasių ir metodų pavadinimai būtų taikomi visame pasaulyje, jie tai gali padaryti naudodami įtraukti pareiškimas.
Šis pavyzdys pakartoja ankstesnį pavyzdį, bet prideda viską a „MyLibrary“ modulis. Dvi versijos mano_program.rb yra duoti; kuris naudoja įtraukti pareiškimas ir tas, kuris to nedaro.
pateikia „test_library įtraukta“
modulis „MyLibrary“
klasės „TestClass“
def inicijuoti
pateikia „TestClass sukurtas objektas“
galas
galas
galas
#! / usr / bin / env rubinas
reikalauti „test_library2.rb“
t = MyLibrary:: TestClass.new
#! / usr / bin / env rubinas
reikalauti „test_library2.rb“
įtraukti „MyLibrary“
t = „TestClass.new“
Venkite absoliučių kelių
Kadangi daugkartinio naudojimo komponentai dažnai perkeliami, jums taip pat geriausia nenaudoti absoliučių kelių skambinant jums. Absoliutus kelias yra toks kelias kaip /home/user/code/library.rb. Jūs pastebėsite, kad failas turi būti toje pačioje vietoje, kad galėtų veikti. Jei scenarijus kada nors bus perkeltas arba jūsų namų katalogas kada nors pasikeis, to reikalavimo teiginys nustos veikti.
Vietoj absoliučių kelių dažnai įprasta kurti ./lib katalogas jūsų „Ruby“ programos kataloge. ./lib katalogas pridedamas prie $ LOAD_PATH kintamasis, kuriame saugomi katalogai, kuriuose reikiamas metodas ieško „Ruby“ failų. Po to, jei failas my_library.rb yra saugomas „lib“ kataloge, jį paprasta įkelti į savo programą reikalauti 'mano knyga pareiškimas.
Šis pavyzdys yra toks pat kaip ir ankstesnis test_program.rb pavyzdžiai. Tačiau daroma prielaida test_library.rb failas saugomas ./lib katalogą ir įkelia jį aukščiau aprašytu metodu.
#! / usr / bin / env rubinas
$ LOAD_PATH << './lib'
reikalauti 'test_library.rb'
t = „TestClass.new“