2010-02-11 6 views
1

J'appelle les fonctions Ruby de mon code C++ via les commandes d'intégration (rb_eval et autres). Est-il possible d'arrêter l'exécution du code à mi-chemin, enregistrer les variables locales, et le redémarrer à partir du même endroit plus tard?Arrêt et poursuite du code ruby ​​embrafé

Répondre

1

Si vous souhaitez stocker des variables Ruby pour une utilisation ultérieure, vous devez utiliser une fonctionnalité appelée Marshaling. Créez une classe dans laquelle vous pouvez stocker toutes les variables que vous souhaitez enregistrer et utilisez Marshal::dump pour stocker la classe dans un fichier. Les données peuvent être reconstituées en une variable Ruby plus tard en utilisant Marshal::load.

Redémarrer votre code à partir d'un point particulier peut ne pas être aussi simple. Vous pouvez gérer des classes et des données, mais pas nécessairement l'état de l'interpréteur Ruby lui-même. Une possibilité consiste à stocker suffisamment d'informations d'état dans vos données marshalées pour vous permettre de recharger les données et de déterminer où vous devez les récupérer.