Je suis en cours d'exécution un peu de code qui ressemble à ceci:Comment configurer un environnement virtuel ou un sandbox pour ruby sans supprimer l'accès aux API externes?
result = system("ruby " + filename_random_ruby_script)
if result
save_to_disk(random_ruby_script)
else
# Do Nothing
end
La variable "random_ruby_script" représente un fichier .rb.
Ce code est le premier de nombreux appels à system() et exécute un fichier ruby qui peut également contenir des appels à system(), des lectures/écritures de disque, des requêtes HTTP, etc. Le fichier ruby doit être exécuté pour savoir ce qu'il fait, mais il peut essayer de lire/écrire/exécuter quelque chose d'autre que lui-même et je ne veux pas qu'il supprime mon disque dur ou affiche des tweets lubriques.
Je veux faire un espace où ce programme peut fonctionner sans la permission d'écrire/exécuter quoi que ce soit dans ses répertoires parents, mais accéder à lire n'importe quoi localement et via n'importe quel protocole réseau.
Je veux aussi savoir si elle essaie d'écrire/exécuter quoi que ce soit localement ou sur le net. Il y a probablement une gemme ou un logiciel qui fait quelque chose de similaire, mais je suis très écolo pour scotcher mon code, donc toute suggestion sera utile.
Je suis en train de tester le fichier pour la compilation. Est-ce que je peux faire ceci sans appeler le système et avec un niveau sûr? – smothers
oui. exiger ou charger un fichier entraînera le chargement et le «compilage» du code (si vous êtes sur IRM, il sera interprété dans un arbre de syntaxe abstraite, car l'IRM n'est pas un compilateur). Vous pouvez également exécuter le code avec ruby -c, qui vérifiera la syntaxe (mais pas la fonctionnalité). –
Merci Ben ça aide beaucoup. – smothers