Using Emit in Other Languages¶
You can use Emit in other languages through the multilang API.
Defining Tasks¶
We’re going to define a node that takes a number and emits each integer in that range. Let’s do it with Ruby! (why not?)
require "json"
message = JSON.parse(STDIN.read)
message["count"].times do |i|
puts i.to_json
end
(the equivalent in Python is in examples/multilang/test.py)
The messages passed in and out are expected to be in JSON format. Output from the functions should be json strings separated by newlines.
Creating a Node¶
We’ll be subclassing emit.multilang.ShellNode to tell emit how to execute our task:
@router.node(('n',))
class RubyShellNode(ShellNode):
command = 'bundle exec ruby test.rb'
After that, you can call your node and subscribe as normal.