2017-10-04 2 views
-5

Je suis nouveau à Ruby et je suis en train de comprendre comment inclure un fichier dans un script. J'ai essayé require et include mais cela ne fonctionne pas.Comment inclure le code d'un fichier dans Ruby?

Voici le fichier que j'aimerais inclure, à noter qu'il ne s'agit pas d'un module.

# file1.rb 
if Constants.elementExist(driver, 'Allow') == true 
    allowElement = driver.find_element(:id, 'Allow') 
    allowElement.click() 
    sleep 1 
    wait.until { 
    driver.find_element(:id, 'Ok').click() 
    } 
    username = driver.find_element(:id, 'UsernameInput') 
    username.clear 
    username.send_keys Constants.itech_email 
    password = driver.find_element(:id, 'PasswordInput') 
    password.clear 
    password.send_keys Constants.itechPass 
    driver.find_element(:id, 'Login').click 
else 
    username = driver.find_element(:id, 'UsernameInput') 
    username.clear 
    username.send_keys Constants.itech_email 
    password = driver.find_element(:id, 'PasswordInput') 
    password.clear 
    password.send_keys Constants.itechPass 
    driver.find_element(:id, 'Login').click 
end 

Ce fichier contient plusieurs lignes de codes qui sont réutilisables ou répétables dans mon cas. Ce n'est pas dans une classe ou un module. C'est un script Ruby simple, et je voudrais l'utiliser sur mon deuxième script dans un module.

# file2.rb 
module File2 
    module IOS 
    # include file1.rb 
    end 
end 

De cette façon, il devrait simplement exécuter le code de l'intérieur file1.rbfile2.rb.

Comment puis-je faire cela dans Ruby?

+1

Je vous suggère de vous fournir plus de contexte à ce que vous essayez d'atteindre avec le code, car vous pourriez avoir des problèmes sur la portée 'file2.rb' avec objets/classes non définis dans 'file1.rb' tels que' driver', 'password' ou' Constants'. – Oxfist

+0

même si vous parvenez à "inclure" ce fichier dans votre espace de noms, quel est exactement ce que vous prévoyez arriver? À ce stade, sauf les commentaires faits par @Oxfist, vous pourriez tout aussi bien utiliser 'ruby file1.rb' depuis la ligne de commande ou' load' dans un script. – engineersmnky

Répondre

0

Selon le Ruby docs, require a le comportement suivant:

Si le nom du fichier ne résout pas un chemin absolu, il sera recherché dans les répertoires listés dans $LOAD_PATH ($:).

Ce qui signifie que pour exécuter le code « file1.rb intérieur file2.rb, où les deux fichiers se trouvent dans exactement le même dossier, vous auriez à faire ce qui suit:

# file2.rb 
module File2 
    module IOS 
    # Absolute path to file1.rb, adding '.rb' is optional 
    require './file1' 
    end 
end 
+0

J'ai essayé cela avant require 'file1' mais ça n'a pas fonctionné. Leur dans le même chemin/répertoire btw. –

+0

@ ー ョ ン ピ ー タ ー mettre à jour la question et afficher l'erreur que vous obtenez afin que je puisse vous aider – Oxfist

+1

"mais ça n'a pas marché". Inclure un ** message d'erreur **. Il y a des millions de manières différentes cela pourrait ne pas fonctionner et vous n'avez toujours pas dit ce que c'est – Max