Execjs для выполнения кода nodejs из Ruby с дополнительным модулем node_module - PullRequest
0 голосов
/ 06 декабря 2018

У меня есть ruby ​​на rails env. Мне нравится выполнять команду nodejs из моего приложения rails.

Я могу выполнить приведенный ниже скрипт, и он работает

require 'execjs'
context = ExecJS.compile('function double(x) { return x * 2 }')
puts context.call('double', 10)

Теперь мне нравится использовать некоторыемодуль дополнительного узла для использования.

context = ExecJS.compile('var redis = require('redis');
var client = redis.createClient();client.on('connect', function() {    console.log('Redis client connected');});
             function selectdb(number) { client.select(number);}')

        context.call('selectdb', 1)

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

есть ли способ, которым я могу вставить дополнительный модуль в мой код времени выполненияblock.

Я вижу какое-то решение / обходной путь с stitch-rb, но оно не работает.пожалуйста, предложите, если я делаю что-то не так или любой другой способ использовать код nodejs из приложения Rails.

1 Ответ

0 голосов
/ 06 декабря 2018

Вы не можете сделать это, по крайней мере, с ванильной реализацией ExecJS.(предлагаемая альтернатива использует commonjs.rb )

Проверьте FAQ здесь :

Почему я не могу использовать CommonJS требовать() внутри ExecJS?

ExecJS предоставляет интерфейс с наименьшим общим знаменателем для любой среды выполнения JavaScript.Используйте ExecJS, когда не имеет значения, в каком интерпретаторе JavaScript работает ваш код. Если вы хотите получить доступ к Node API, вам следует проверить другую библиотеку, например commonjs.rb, предназначенную для обеспечения согласованного интерфейса.

...