Appeler un autre fichier ruby qui n'est pas un bijou
Je veux créer une statique de la classe ruby avec une bibliothèque de fonction. Je suis sur Vista avec ruby 1.9.2
Ma classe est celui-ci :
class TestClass
def say_hello
puts "say hello"
end
end
dans un TestClass.rb fichier (je suppose que je suis bon comme tous les rubis des tutoriels sur des classes est un désordre complet de tout mettre dans une seule magie quelque chose (fichier?) comme si la CISR a été le début et la fin de toute chose).
Mon ruby main()
(oui je viens de Java) ou une entrée de programme ou quel que elle s'appelle ruby est :
require 'TestClass.rb'
puts "start"
say_hello
Mais il échoue avec :
C:\ruby_path_with_all_my_classes>ruby classuser.rb
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
TestClass.rb (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from classuser.rb:1:in `<main>'
Comment ça fonctionne? Est-il possible d'appeler d'autres fichiers en Ruby ou vous êtes pris au piège dans un seul fichier contenant toutes vos classes?
- Ne mettez pas
[Ruby]
au début d'une question. C'est ce que les balises sont pour.
Vous devez vous connecter pour publier un commentaire.
Dans 99% des cas lorsque l'ordinateur vous dit qu'il ne trouve pas une chose, c'est que la chose n'est pas là. Donc, la première chose que vous devez vérifier est de savoir si il y a réellement est un fichier nommé
TestClass.rb
quelque part sur votre système de fichiers.Dans 99% des reste des cas, l'ordinateur est à la recherche dans le mauvais endroit. (Eh bien, en fait, l'ordinateur est généralement à la recherche à la bonne place, mais la chose qu'il recherche est au mauvais endroit).
require
charge un fichier à partir de la$LOAD_PATH
, de sorte que vous avez à faire assurez-vous que le répertoire que le fichierTestClass.rb
est en fait est sur le$LOAD_PATH
.Alternativement, si vous ne voulez pas
require
un fichier à partir de la$LOAD_PATH
mais plutôt par rapport à la position du fichier qui est faire larequire
ing, alors vous devez utiliserrequire_relative
.Noter, cependant, que votre code ne fonctionne pas de toute façon, depuis
say_hello
est en instance de méthode d'instance de laTestClass
classe, mais vous êtes en l'appelant sur lamain
objet, qui est une instance deObject
, pasTestClass
.Note également que les conventions d'appellation standard de Ruby sont
snake_case
, en particulier, lasnake_case
version de la classe primaire/module du fichier. Donc, dans votre cas, le fichier doit être nommétest_class.rb
. Aussi,require
etrequire_relative
figure l'extension de fichier correct pour eux-mêmes, de sorte que vous devriez laisser tomber le.rb
. Et troisièmement, standard de Ruby style de codage est de deux espaces pour l'indentation, et non pas quatre.Aucun de ces mènera à votre code ne fonctionne pas, bien sûr, puisque c'est purement stylistique, mais il peut conduire à des personnes n'étant plus disposés à répondre à vos questions, car il montre que vous n'avez pas le respect de leur communauté assez à apprendre, même les règles les plus élémentaires.
Est TestClass fichier dans le même dir?
Faire TestClass.rb fichier en minuscules et de le charger avec
pas besoin de le .rb
Je te suggère de mettre les classes dans un dossier lib.
Vous avez besoin de fichier comme suit:
Essayez d'utiliser
Connexes: Ruby: besoin de vs require_relative - les meilleures pratiques de contournement de course dans les deux Ruby <1.9.2 et >=1.9.2