読者です 読者をやめる 読者になる 読者になる

なぜRailsでtherubyracerのコメントを外さなきゃいけないのか

Ruby Rails

Why?

  • Rails 起動のときに、therubyracerのコメントを外せ外せって書いてあるけどなんでかわからん

そもそも therubyracer って何?

therubyracer | RubyGems.org | your community gem host

  • therubyracer: JavaScript のエンジンである v8 を Ruby から使えるようにする gem
    • v8 エンジンがシステム上で利用できる場合はそのエンジンを使う
    • 利用できない場合には libv8 gem から、各環境ごとの v8 エンジンバイナリファイルを取得する
  • v8: V8 JavaScript Engine
  • libv8: 各環境ごとの v8 エンジンバイナリファイルを用意してくれる

なんで Rails に JSランタイムが必要なのか?

  • RailsではcoffeescriptコンパイルやJS圧縮にExecJSというライブラリを使う
    • 例えば、asset pipelineを使わないならいらない
    • ExecJSはそのシステム上で使えるJavascriptランタイムを選んで実行する
    • therubyracer でも node.js でも、使える方を使う

stackoverflow.com

 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.

ごめん、答え見つけた

stackoverflow.com

Q.なぜデフォルトでコメントアウトされてるの?

A.それは他のJSランタイム(Node.jsとか)があるなら、必要がないからだよ!そもそもJSいらないなら、Railsの設定でExecJSライブラリを使わないという選択も可能だよ!

TODO

  • ExecJSライブラリを使わない場合、どれくらい不便なのか。
  • therubyracerの役割が今ひとつわかってない
  • Node.jsがある場合、どうやって動かす?

参考

d.hatena.ne.jp