2016-01-29 5 views
-2

Я хочу использовать потоки и возможности параллелизма языка Go в моем проекте Ruby on Rails. У меня есть несколько альтернатив, один из них - jRuby. Но мне не нравится Java (личное предпочтение). Я слышал, что Go Lang - отличная замена Java. Его еще быстрее & безопаснее, чем Java. Я видел людей, сравнивающих его скорость с C++, поскольку часть его части находится в самой Ассамблее. Люди могут даже написать полный веб-сервер, такой как Apache, с нуля в Go.Перейти параллелизм в Ruby

То, что я действительно планирую, это: все материалы низкого уровня в Go и его остальном Ruby on Rails. Я все еще хочу иметь легкость развития, которую может предложить RoR.

+0

Вы должны написать Ruby Interpreter в языке Go с нуля. Стандартная МРТ написана на C/C++. jRuby написан на Java. Для вас потребуется много работы, чтобы изобрести это в Go. –

+0

@QQQ Могу ли я не запускать оба языка одновременно на моем сервере? И создать своего рода мост для общения между Go и Ruby? – LoveDogzzZZ

+0

В качестве альтернативы вы можете запустить несколько подпроцессов Ruby и связаться с ними по межпроцессорной связи (stdin/stdout, unix-сокеты и т. Д.). Однако, похоже, что вам действительно нужно обратное - приложение Ruby on Rails, в котором есть возможность разговаривать по каналу IPC с процессом Go, который выполняет все низкоуровневые вещи. Например, хотите вызвать функцию Go из Ruby? Запишите аргументы и уникальный «идентификатор вызова» на канал, а затем, когда функция Go вернется, напишите возвращаемые значения вместе с тем же идентификатором вызова, чтобы Ruby знал, какая функция только что вернулась. – joshlf

ответ

4

Начиная с Go 1.5, существует режим построения, называемый c-shared, который позволяет вам создавать C совместно используемые библиотеки в Go. Затем они могут быть загружены в Ruby с использованием FFI и использованы в вашем приложении Rails. См. this brief introduction to the concept.

+0

Большое спасибо за этот удивительный ответ. Только то, что я ожидал :) – LoveDogzzZZ

Смежные вопросы