Использование других языков с ruby - PullRequest
2 голосов
/ 09 июля 2010

Можно ли использовать несколько языков наряду с рубином.Например, у меня есть код приложения на Ruby on Rails.Я хотел бы рассчитать рекомендации, и я хотел бы использовать Python для этого.Итак, по сути, код Python будет получать данные и вычислять все вещи и, вероятно, получать данные из БД, вычислять и обновлять таблицы. Возможно ли это, и что вы, ребята, думаете о его adv / disadv

Спасибо

Ответы [ 4 ]

4 голосов
/ 09 июля 2010

Если вы перекладываете работу на внешний процесс, вы можете захотеть сделать его веб-сервисом (возможно, ajax), чтобы у вас был какой-то непротиворечивый интерфейс.

В противном случае вы всегда можетевыполнить скрипт python в подоболочке через ruby, используя stdin / stdout / argv, но это может быть ужасно быстро.

1 голос
/ 10 июля 2010

В зависимости от ваших конкретных потребностей, вы можете либо вызвать внешний процесс (используя popen, систему и т. Д.), Либо вы можете настроить другой мини-веб-сервер или что-то в этом роде и заставить сервер rails взаимодействовать с ним черезHTTP с API-интерфейсом в стиле REST (или любым другим, который лучше всего соответствует вашим потребностям).

В вашем примере у вас есть веб-сайт ruby-интерфейса и затем серверная служба Python, работающая с числами, которая создает рекомендации для сайта ruby.,Довольно неплохое решение состоит в том, чтобы сайт ruby ​​отправлял HTTP-запрос в службу python, когда ему нужно обновить данные (с полезной информацией, чтобы определить, что ему нужно делать с чем-либо или чем-то подобным), а затем бэкэнд-служба python может перебить работу.и обновите таблицу, в которой, по-видимому, ваш веб-интерфейс ruby ​​будет автоматически регистрировать изменения во время следующего запроса и отображать.

1 голос
/ 09 июля 2010

Я бы использовал системную команду как таковую

system("python myscript.py")
0 голосов
/ 10 июля 2010

Простое, быстрое и «грязное» решение, если у вас есть скрипты Python и вы хотите выполнить их изнутри рельсов, это:

%x[shell commands or python path/of/pythonscript.py #{ruby variables to pass on the script}]

или

`` команды оболочки или путь python / of / pythonscript.py # {переменные ruby ​​для передачи в сценарий} \ (с символом `в начале и конце).

Поместите вышесказанное внутрь контроллера, и он будет выполнен.

По какой-то причине внутри ruby ​​on rails у меня не работали системные и exec команды (exec разбил мое приложение, а система ничего не делает).

...