У меня есть скомпилированная библиотека Python и документы API, которые я хотел бы использовать из Ruby.
Можно ли загрузить библиотеку Python, создать экземпляр класса, определенного в нем, и вызвать методы для этого объекта из Ruby?
У меня есть скомпилированная библиотека Python и документы API, которые я хотел бы использовать из Ruby.
Можно ли загрузить библиотеку Python, создать экземпляр класса, определенного в нем, и вызвать методы для этого объекта из Ruby?
В этой статье приведены некоторые методы для запуска Ruby-кода из Python, который также должен применяться в обратном направлении (например, XML-RPC или каналы), а также конкретные методы для запуска кода Python из Ruby. В частности, rubypython или Ruby/Python выглядят как они может делать то, что вы хотите.
Эта небольшая библиотека упрощает это: https://github.com/steeve/rupy
Похоже, вы хотели бы использовать что-то вроде Apache Thrift, которое позволяет вашему питону или вашему ruby-коду быть сервером/клиентом и звонить друг другу. http://thrift.apache.org/
Вы можете создавать объекты в рубине или на питоне на основе определения бережливости. Это пример веб-сайта бережливости.
struct UserProfile {
1: i32 uid,
2: string name,
3: string blurb
}
service UserStorage {
void store(1: UserProfile user),
UserProfile retrieve(1: i32 uid)
}
В основном ваш ruby или python смогут вызывать store()
и retrieve()
и создавать объекты UserProfile
и т.д.
Даже если вы можете сделать эту работу, вы можете подумать, является ли это лучшим архитектурным выбором. Вы можете напасть на всевозможные адские версии, пытаясь сохранить такого зверя.
Если вы действительно не можете найти эквивалентную библиотеку Ruby (или это большая инвестиция в Python, которую вы хотите использовать), рассмотрите возможность использования очереди (например, RabbitMQ) для реализации дизайна передачи сообщений. Затем вы можете сохранить свои Python-биты Python и ваши Ruby-биты Ruby и не пытаться поддерживать среду сборки Frankenstein.
Вы в Windows? Не могли бы вы создать DLL или COM-объект из вашего python lib и вызвать его с помощью Ruby Win32Api или Win32Ole?