Lai izveidotu atkārtoti izmantojamus komponentus, kurus var viegli izmantot citās programmās, programmēšanas valodai ir jābūt zināmam veidam, kā šo kodu vienmērīgi importēt izpildes laikā. Iekšā Rubīns, prasīt metode tiek izmantota, lai ielādētu citu failu un izpildītu visu to paziņojumi. Tas ir paredzēts visu klašu un metode definīcijas failā. Papildus visu failā esošo paziņojumu izpildei prasīšanas metode seko arī tam, kuri faili ir iepriekš pieprasīti, un tādējādi failam nebūs nepieciešama divreiz.
Izmantojot metodi “pieprasīt”
Pieprasīšanas metodei tiek pieprasīts faila nosaukums kā virkne, kā vienu argumentu. Tas var būt vai nu ceļš uz failu, piemēram, ./lib/some_library.rb vai saīsināts vārds, piemēram, daži_bibliotēka. Ja arguments ir ceļš un pilns faila nosaukums, prasītā metode meklēs failu. Tomēr, ja arguments ir saīsināts nosaukums, pieprasīšanas metode meklēs jūsu failā vairākus iepriekš definētus direktorijus jūsu sistēmā. Saīsinātā nosaukuma lietošana ir visizplatītākais nepieciešamās metodes izmantošanas veids.
Šis piemērs parāda, kā izmantot prasījumu. Fails test_library.rb ir pirmajā koda blokā. Šis fails izdrukā ziņojumu un definē jaunu klasi. Otrais koda bloks ir fails test_program.rb. Šis fails ielādē test_library.rb failu, izmantojot turquiremethod, un izveido jaunu TestClass objekts.
ievieto "test_library iekļauta"
klase TestClass
def inicializēt
ievieto "TestClass objekts izveidots"
beigas
beigas
#! / usr / bin / env rubīns
pieprasīt “test_library.rb”
t = TestClass.new
Izvairieties no vārdu sadursmēm
Rakstot atkārtoti lietojamus komponentus, labāk nav deklarēt daudzus mainīgos globālā mērogā ārpus klasēm vai metodēm vai izmantojot $ priedēklis. Tas ir paredzēts, lai novērstu kaut ko ar nosaukumu "vārda telpas piesārņojums"Ja jūs deklarējat pārāk daudz vārdu, cita programma vai bibliotēka var deklarēt to pašu vārdu un izraisīt nosaukuma sadursmi. Kad divas pilnīgi nesaistītas bibliotēkas nejauši sāks mainīt viena otras mainīgos lielumus, lietas sabojāsies - šķietami nejauši. Tas ir ļoti grūti izsekot, un tas ir labākais, tikai lai izvairītos no tā.
Lai izvairītos no vārdu sadursmēm, varat ievietot visu savā bibliotēkā a modulis paziņojums, apgalvojums. Tas prasīs cilvēkiem atsaukties uz jūsu nodarbībām un metodi ar pilnīgi kvalificētu vārdu, piemēram, Mana bibliotēka:: mana_metode, bet tas ir tā vērts, jo vārdu sadursmes parasti nenotiks. Cilvēkiem, kuri vēlas, lai visu jūsu klases un metožu nosaukumi būtu globālā mērogā, viņi to var izdarīt, izmantojot iekļaut paziņojums, apgalvojums.
Šis piemērs atkārto iepriekšējo piemēru, bet satur visu a Mana bibliotēka modulis. Divas mana_programma.rb tiek doti; kas izmanto iekļaut paziņojumu un tādu, kas to nedara.
ievieto "test_library iekļauta"
modulis Mana bibliotēka
klase TestClass
def inicializēt
ievieto "TestClass objekts izveidots"
beigas
beigas
beigas
#! / usr / bin / env rubīns
pieprasīt “test_library2.rb”
t = MyLibrary:: TestClass.new
#! / usr / bin / env rubīns
pieprasīt “test_library2.rb”
iekļaujiet MyLibrary
t = TestClass.new
Izvairieties no absolūtiem ceļiem
Tā kā atkārtoti lietojamie komponenti bieži tiek pārvietoti, pieprasītajos zvanos arī nav ieteicams izmantot absolūtus ceļus. Absolūtais ceļš ir tāds ceļš kā /home/user/code/library.rb. Jūs ievērosit, ka failam jāatrodas precīzi tajā vietā, lai tas darbotos. Ja skripts kādreiz tiek pārvietots vai jūsu mājas direktorijs kādreiz mainās, tas, kas prasa paziņojumu, vairs nedarbosies.
Absolūtu ceļu vietā bieži ir ierasts izveidot ./lib direktoriju jūsu Ruby programmas direktorijā. ./lib direktorijs tiek pievienots LOAD_PATH mainīgais, kas saglabā direktorijus, kuros vajadzīgā metode meklē Ruby failus. Pēc tam, ja fails my_library.rb tiek saglabāts lib direktorijā, to var vienkārši ielādēt jūsu programmā pieprasīt 'mana_grāmata' paziņojums, apgalvojums.
Šis piemērs ir tāds pats kā iepriekšējais test_program.rb piemēri. Tomēr pieņem, ka test_library.rb fails tiek glabāts ./lib direktoriju un ielādē to, izmantojot iepriekš aprakstīto metodi.
#! / usr / bin / env rubīns
$ LOAD_PATH << './lib'
pieprasīt “test_library.rb”
t = TestClass.new