2015-01-14 7 views
6

Ich arbeitete an einem Projekt und hatte oft Probleme mit therubyracer und libv8, also entschied ich, sie zu entfernen. Es schien das einzige zu sein, was sie als Abhängigkeit nutzte, waren weniger Schienen, die ich sowieso entfernen wollte.Was ist therubyracer oder libv8 für eine Schienenanwendung?

Meine Hauptfrage ist, wofür sind sie und brauche ich sie in der durchschnittlichen Anwendung und wenn ja, warum?

+1

Sie in der Regel für die Asset-Pipeline auf Plattformen verwendet werden, die nicht über eine JavaScript-Laufzeit standardmäßig installiert. Wenn Sie also keine Assets auf dem Zielsystem kompilieren oder das System eine JavaScript-Laufzeitumgebung im Pfad hat, werden diese nicht benötigt. – Doon

+0

Ein CentOS-Server, der nicht mit dem Internet verbunden ist, würde das haben oder nicht? –

+0

Wenn auf dem Server bereits eine JavaScript-Laufzeitumgebung wie z. B. node.js installiert ist, wird sie nicht benötigt. Ich weiß nicht, ob Centos mit einer JavaScript-Laufzeit kommt, auch wenn Sie keine Assets auf der Box kompilieren, wird es nicht benötigt. Less.rb hat eine Abhängigkeit von commonjs, die nur Therubyracer oder Therubyrhino zu verwenden scheint. Weitere Informationen finden Sie hier. http://stackoverflow.com/questions/18687575/why-is-the-gem-therubyracer-commented-out-by-default-in-gemfile – Doon

Antwort

9

Es gibt ein paar Dinge, für die eine Rails-Anwendung eine Javascript Runtime verwenden könnte:

1) Die Rails Asset-Pipeline eine Javascript Runtime benötigt, um Javascript Kompression auszuführen.

2) Bestimmte Rails ActionView Helper wie javascript_include_tag benötigen eine Javascript Runtime, um Javascript-Funktionen auszuführen.

Nicht jede Rails-Anwendung verwendet diese Funktionen, daher ist der therubyracer-Edelstein zunächst in Ihrer Gemfile auskommentiert; Beachten Sie außerdem, dass Sie alternativ NodeJS als Ihre Javascript-Laufzeit verwenden könnten.

Einzelheiten finden Sie unter:

http://guides.rubyonrails.org/asset_pipeline.html#javascript-compression

http://www.rubydoc.info/docs/rails/ActionView/Helpers/JavaScriptHelper

http://www.rubydoc.info/docs/rails/ActionView%2FHelpers%2FAssetTagHelper%3Ajavascript_include_tag

Proper "Rails" way to perform javascript on specific pages

2

rubyracer bietet folgende Funktionen:

1. We can write your ruby codes inside js codes. 
2. We can invoke the js functions from ruby codes. 
3. Manipulation of javscript objects & the passing them to javascript functions. 

Das sind die wenigen grundlegenden Vorteile von rubyracer gem verwenden. Bitte lesen Sie alle Details here

+0

Element 1, hat das etwas mit js.erb-Dateien zu tun? –

+0

wenn Sie Ihren Rails-Controller (über Ajax) treffen und eine Interaktion wünschen, die Sie für Ihre Codes in Ihrer app/views/action_name.js.erb-Datei benötigen. Diese Datei enthält auch Ihre eingebetteten Ruby-Codes. :) Bitte überprüfen Sie: http://richonrails.com/articles/basic-ajax-in-ruby-on-rails – Ajay

+0

In dem bereitgestellten Link suchen Sie einfach nach app/views/products/_save.js.erb: Das wird klar deine Zweifel :) – Ajay

Verwandte Themen