Railsアプリケーションからturbolinksを外す

rails new hoge で生成されたファイルを眺めていく。hoge/app/views/layouts/application.html.erb が、Railsが出力するHTMLの外枠になるらしい。
<html>
<head>
  <title>Hoge</title>
  <%= stylesheet_link_tag    'application', media: 'all','data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application','data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body>

<%= yield %>

</body>
</html>

Railsの出力するHTMLは基本的にこのHTMLをテンプレートとして生成され、コンテンツ本体は <%= yield %> の部分に出力される模様。Rubyの文法は分からなくっても、内容は大体読めるけれど、data-turbolinks-trackって何よ?って調べたところ、HTMLレンダリング高速化とバーターで、UIのコーディング時にいろいろと考慮することが増えるシロモノであることが分かった。
れっきとした設計思想があって、アプリケーションにデフォルトで組み込まれているのだとは思うけれど、実装するときの関心事や制約が増えるのはちょっといただけない。 動作の仕組みから察するに、ページごとに異なるJavaScriptを記述するRIAでは、HTMLレンダリング高速化の効果も低いだろうということで、turbolinks を完全に外すことにする。
以下がその手順。

まずは、turbolinks が組み込まれているかを以下で確認

 > gem list

gemファイルに記述された依存関係を切る

hoge/Gemfileの該当業をコメントアウト
gem 'turbolinks'
↓
#gem 'turbolinks'

turbolinks をアンインストール

 > gem uninstall turbolinks

確かに消えたことを以下で確認

 > gem list
あとは、すでに組み込まれてしまっている依存関係を切る。

application.html.erbの修正

冒頭部分から、data-turbolinks-track の記述を削除
<html>
<head>
  <title>Hoge</title>
  <%= stylesheet_link_tag    'application', media: 'all' %>
  <%= javascript_include_tag 'application' %>
 (以下省略)

application.jsの修正

hoge/app/assets/javascripts/application.js から、turbolinks の記述を削除
//= require turbolinks
↓
(この行を削除)
これで完了(たぶん)。

コメント

このブログの人気の投稿

svnをバッチジョブから実行するときの認証を解決する

Windows Update で Cisco Anyconnect が繋がらなくなる。(Windows8.1)

Windows8.1 から Cisco AnyConnectを使う