忍者ブログ

ぢみへんプログラミング日誌

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

CentOS6.4 + ruby2.0 + rails4 インストール備忘録(その弐:turbolink & passenger 編)

Rails 4 になって turbolinkなる機能が追加されたらしいのだが、これが結構評判悪くて、外そうという話になった。外せ言われても、どうしたらいいのか分からないんですけど……
というわけで先人にお聞きしました 笑
Rails 4 で turbolinks をオフにする方法
簡単にポイントを挙げると、Railsアプリを生成する段階以降、以下の手順を踏めばいい。
  • Railsアプリを生成する際、bundlerの実行をスキップするオプションをつけてコマンド実行する。
    rails new アプリケーション名  --skip-bundle
  • application.html.erb に記載されているHTMLタグの中にある、「"data-turbolinks-track" => true」という属性設定を削除
  • application.js に記載されている「//= require turbolinks」の行を削除
  • Gemfileの「gem 'turbolinks'」という記述をコメントアウト後、bundle install実行
さらに今までずるずると避けてきたpassenger のインストールと設定作業をすることになった。
作業自体は「Ruby on Rails 3 アプリケーションプログラミング」(山田祥寛著:技術評論社)に書いてある通りに行うことでほとんど悩みなく、結構手早くできた。
が、しかし、
いざそのpassengerを使ってApache経由でアプリを起動(=ブラウザで表示)させようとすると、「could not find a JavaScript runtime. 」というメッセージが表示されて何も動きやがらない。だがどう考えても前回までの作業でnode.js とそれに対応するrubyモジュール「execjs」はインストール済みなのは間違いなく、全く訳が分からない。
エラーの出ている箇所をスタックトレース情報を元にたどると、どうやら execjsの構成ファイルである「runtime.js」の以下の部分で指定されているはずのランタイムがない、と言ってるようなのだ。
  Node = ExternalRuntime.new(
:name => "Node.js (V8)",
:command => ["node"],
:runner_path => ExecJS.root + "/support/node_runner.js",
:encoding => 'UTF-8'
)


なにぃぃぃ?!
それじゃ成す術なしじゃねぇかよ~……と思っていたら、やはりここでも同じことではまった先輩がいらっしゃいました。 笑
HOWTO: RubyOnRails + ExecJS + NodeJS - "Could not find a JavaScript runtime"
それによれば上記のコードを以下のように直せば行けるとのこと。
Node = ExternalRuntime.new(
:name => "Node.js (V8)",
:command => ["/usr/local/bin/node"],
:runner_path => ExecJS.root + "/support/node_runner.js",
:encoding => 'UTF-8'
)


:command キーに対応する、ランタイムのパスを"node"から直接node.js がインストールされているパスに置き換えてしまうというわけだ。(注:ここでは/user/local/bin/node となっているが、実行環境によってここは読みかえる必要がある。whichコマンドもしくはwhereis コマンドを使えばそのパスは取得できる。[which node または whereis node])

実際にやってみるとこれがすこぶる上手く行った。
よかった、よかった……

番外編production モードで rails console コマンドや rake db:migrate コマンド等を扱う際の注意。
Rails はデフォルトでは開発モードである develop 環境で作業をするため、運用時に指定することの多い、production モードで rails コマンドや rake コマンドを実行するには、オプションを付けないといけない。
Rails and rake db:migrate in Production Mode
ポイントになる具体例だけ書いておく。
rails console production
rails dbconsole production
rails server -e production
rake db:migrate RAILS_ENV=production





番外編2: passengerで動かすとasset pipeline が動かない
もしそうなったら、config/environment/production.rb の以下部分を修正する.
# Do not fallback to assets pipeline if a precompiled asset is missed.
# config.assets.compile = false #=> 旧
config.assets.compile = true #=> 新
PR

COMMENT

NAME
TITLE
MAIL (非公開)
URL
EMOJI
Vodafone絵文字 i-mode絵文字 Ezweb絵文字
COMMENT
PASS (コメント編集に必須です)
SECRET
管理人のみ閲覧できます
 
  

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

フリーエリア

最新CM

バーコード

ブログ内検索

Copyright ©  -- ぢみへんプログラミング日誌 --  All Rights Reserved

Design by CriCri / Material by petit sozai emi / powered by NINJA TOOLS / 忍者ブログ / [PR]