Frage

Ich möchte mein rack-Anwendung in der Lage sein, die Schnittstelle mit einem server-side javascript engine.

Als nun der einzige Weg, ich weiß, das könnte möglich sein, ist durch ausführen von JRuby und Rhino auf der JVM, aber ich bin der Hoffnung, für eine schlankere Lösung.

Hat jemand gehört, der einem anderen, mehr rubyish vielleicht, option ?

Edit :Das Lesen der Kommentare bin ich angefangen zu denken, ich habe geirrt assumig, dass beide JRuby und Rhino laufen auf der JVM würde bedeuten, einige Interoperabilität zwischen ruby und javascript...?
Das ist keine wünschenswerte Lösung für mich irgendwie, aber trotzdem möchte ich bis klar.

War es hilfreich?

Lösung

Die Ruby-Racer nun pre-alpha und schwebt irgendwo zwischen alpha und beta.Es unterstützt jetzt:

  • Aufruf von ruby-code in javascript
  • aufrufen von javascript-Funktionen von ruby
  • einbetten von ruby-Objekten in javascript-Bereich.
  • lassen ruby-Objekte werden Ihre javascript-Bereich

Andere Tipps

  • Johnson ist ein RubyGem, die das Mozilla Spidermonkey JavaScript-Engine in einer MRI-C-Erweiterung dreht sich um und ermöglicht sehr tiefe Integration zwischen Ruby und JavaScript,
  • gibt es eine Gabel von Johnson denen den Spider Motor mit der Mozilla-Engine Tracemonkey ersetzt und
  • Lyndon wie Johnson aber mit Javascript statt Spider und MacRuby statt MRI.

Ich glaube, ich auch jemanden erinnern arbeiten mit MRI-V8-Einbettung, aber ich kann das Referenz jetzt nicht gefunden.

Das Hauptproblem bei Johnson ist, dass die MRT ist eine unglaublich beschissen Sprachimplementierung, dass Lecks Speicher links und rechts, und die einzige Sprache, die Umsetzung in der Welt, die möglicherweise noch beschissen sein könnten Spider sind. Somit muss die ToDo-Liste in der Johnson Git-Repository nicht gerade Vertrauen erweckend; es enthält nur ein Element, ich zitiere wörtlich:

  

Stop freaking Speicherzugriffsfehler.

ist Lyndon auf einem viel besseres Fundament gebaut, aber es erfordert offensichtlich OSX auf dem Server ausgeführt. Außerdem hat MacRuby noch nicht freigegeben.

ich denke, JRuby + Rhino ist wahrscheinlich die stabilste Option, obwohl Sie die Integration selbst zu bauen haben: sie sind nur zwei unabhängige Sprache-Implementierungen, die auf dem gleichen VM leben passieren, aber es gibt keine Integration zwischen ihnen <. / p>

Eine andere Perspektive auf das Problem ist RKelly , die ist ein JavaScript-Parser und Ausführungs-Engine in Ruby geschrieben.

Als Alternative können Sie versuchen, das Problem aus einer anderen Richtung zu nähern: statt der Anwendungslogik in JavaScript zu halten und ausgeführt, dass sowohl auf dem Client und den Server, können Sie Ihre Anwendungslogik in Ruby halten konnten, und führt das auf dem Server und Client: es gibt ein paar Compiler gibt, die (eine Untergruppe von) Ruby JavaScript zusammenstellen können. Auf ihnen ist RubyJS . (Es gibt auch HotRuby , die ein YARV Bytecode-Interpreter in JavaScript geschrieben ist, aber das wäre sehr wahrscheinlich enorm sein Overkill für das, was Sie tun.)

Und last but not least können Sie tun, was Rails tat ursprünglich mit ihren JavaScript Helfer: Sie weder definieren Sie Ihre Logik in Ruby noch JavaScript, anstatt Sie definieren es einmal in einem internen Ruby-DSL und erzeugt sowohl die Ruby- und JavaScript-Logik aus, dass.

Hier finden Sie aktuelle The Ruby Rhino . Es verwendet jruby und Nashorn zu einbetten Javascript in Ihrem Ruby-Umgebung. Unter anderem unterstützt es sichere Auswertung, rief Ruby-Funktionen von Javascript und umgekehrt (JavaScript-Funktionen von Ruby)

Es gibt auch "The Ruby Racer", die v8 in MRI einbettet. Dies ist immer noch sehr viel Pre-Alpha-Phase, aber ich hoffe, eine brauchbare Version irgendwann im März nächsten Jahres haben

Ein weiterer Motor Ich kenne ist Knäuel, die auch jruby und Nashorn zu einem ähnlichen Effekt verwendet.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top