Помимо использования другого языка сценариев, кажется, что главная привлекательность node.js - это поддержка программирования, управляемого событиями, что упрощает запись масштабируемых серверов (или другие типичные приложения, связанные с I/O) из-за его упрощенных неблокирующих вызовов ввода-вывода. Однако эта функция возникает из-за необходимости изучать новую модель программирования, которая по существу требует, чтобы вы проходили обратный вызов после функции обратного вызова, что делало некоторые простые задачи (например, зависимые последовательности действий) несколько более сложными.Asynchronicity, threading, node.js и Ruby on Rails
Контраст этой модели программирования на традиционную версию Ruby on Rails, которая блокирует все операции ввода-вывода и (эффективно) однопоточную (из-за реализации зеленых потоков MRI).
Просто здесь, в сновидении, должно быть возможно реализовать среду выполнения Ruby (или Rails), которая согласовывает эти модели, захватывая вызовы ввода/вывода, прозрачно заменяя их неблокирующей версией, сохраняя текущий продолжения и вызова, когда операция ввода-вывода завершена. Таким образом, вы получите знакомый, процедурный стиль программирования и преимущества модели, основанной на событиях/асинхронном/обратном вызове.
Возможно ли такое время выполнения (или переводчик времени выполнения)? Существуют ли веб-фреймворки, которые уже что-то делают?
Илья Григорик проделал определенную работу с рубиновыми волокнами, EventMachine и рельсами. Взгляните на это (особенно ссылки внизу): https: // github.com/igrigorik/async-rails – igorw
@igorw: это очень похоже на то, о чем я думал, пожалуйста, разместите его как ответ, чтобы я мог повышать! – maerics
Создание асинхронных рельсов кажется мне взломанным. Это вызывающе выглядит как абстракция, которая будет сильно просачиваться. – Raynos