Az IronRuby programozási nyelv

Referencing Assemblies

Hivatkozás szerelvényekre (Referencing Assemblies)

Ruby két metódust használ különböző Ruby fájlok futtatására: Kernel#require és a Kernel#load -t. A "load" minden egyes alkalommal futattja a fájlt, amikor meghívják. Ezzel szemben a "require" csak egyetlen egyszer futattja a meghívott fájlt. A Ruby képes betölteni kapcsolódó könyvtárakat (linked libraries) (.so fájlok) UNIX rendszereken, az IronRuby ezt a képességet használja ki a DLL-k betöltésekor.

Fájl név alapján

Adott egy tetszőleges CLR szerelvény, amelyet az IronRuby $ LOAD_PATH tartalmaz, mondjuk models.dll, akkor az alábbi módon tölthetjük be:

>>> require 'models.dll'
=> true
A ". Dll" vagy ". Exe" kiterjesztés el is hagyható, ha a $ LOAD_PATH nem tartalmaz azonos nevű Rb fájlokat. Pl.:
>>> require 'models'
=> true

"Erős név"

A szerelvények lehetnek "teljesen" vagy "részlegesen" megnevezve. Lentebb mindkettőre láthatunk példát, habár erősen ajánlot a szerelvényeket az teljes elnevezéssel betölteni. A teljes megnevezés a "név", "verzió", és a "publikus kulcs" -ból (name, version, public key) áll. Például az 'IronRuby.dll' teljes elnevezése: "IronRuby, Version=0.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35". A szerelvények "részleges" megnevezése is nagyon hasonló, de ekkor a "PublicKeyToken=null". Teljesen megnevezett szerelvény betöltése:

>>> require "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
=> true
Az IronRuby rendelezik egy "libs" nevű könyvtárral (amelyet a loadpath tartalmaz), amely tartalmazza a Ruby fájlokat az általános .NET könyvtárakhoz, mint például a WinForms, WPF, System.Data.dll ...stb. Példa a WinForms betöltésére:
>>> require "System.Windows.Forms"
=> true

Egyértelmű (explicit) betöltés

A szerelvények egyértelmű betöltéséhez a "load_assembly" metódust kell használni. Ez a metdus a Kernel modulban van definiálva, és az IronRuby kiegészítése. Az első paraméter a szerelvény neve, amely alapján az IronRuby megpróbálja betölteni (Assembly.Load segytségével). Ha a betöltés nem sikerült, akkor az Assembly.LoadWithPartialName metódussal próbálja betölteni a megadott szerelvényt. Példa "teljesen" megnevezett szerelvény betöltésére:

>>> load_assembly "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
=> true
Példa "részlegesen" megnevezett szerelvény betöltésére:
>>> load_assembly "System.Windows.Forms"
=> true
Bár ez utóbbi módszer nem ajánlott produkciós környezetben.

Opcionálisan lehetőség van egy második paraméter megadására is, amely a névtér teljes neve, amely a szerelvényben van deklarálva. Példa:

>>> load_assembly 'IronRuby.Libraries', 'IronRuby.StandardLibrary.StringIO'
=> true