コンテンツにスキップ

Tilt

出典: フリー教科書『ウィキブックス(Wikibooks)』

Tilt ハンドブック

[編集]

Tiltは、Rubyにおけるテンプレートエンジンの統一インターフェースを提供するライブラリです。多様なテンプレートエンジンをサポートしており、一貫した方法でテンプレートをレンダリングできます。Tiltを使用することで、ERBSlimHamlなど、さまざまなテンプレートエンジンを容易に切り替えたり統合したりすることができます。

基本構文

[編集]

Tiltの基本的な使い方は非常にシンプルです。以下に基本的な使用例を示します:

require 'tilt'

# テンプレート文字列
template = "Hello, <%= name %>!"

# ERBテンプレートのレンダリング
engine = Tilt::ERBTemplate.new { template }
puts engine.render(nil, name: "World")
# => Hello, World!

主な機能

[編集]

Tiltは、以下のような多くのテンプレートエンジンをサポートしています:

これにより、異なるプロジェクト間でテンプレートエンジンを切り替える際にコードの変更を最小限に抑えられます。

ファイルベースのテンプレート

[編集]

Tiltでは、テンプレート文字列だけでなく、テンプレートファイルを使用することも可能です。

require 'tilt'

# テンプレートファイルを読み込む
template = Tilt.new("template.erb")
puts template.render(nil, name: "Rubyist")

template.erb

[編集]
Hello, <%= name %>!

テンプレートエンジンの自動検出

[編集]

Tiltはファイルの拡張子に基づいて適切なエンジンを自動的に選択します。

require 'tilt'

# ファイルの拡張子に基づいてエンジンを選択
engine = Tilt.new("example.slim")
puts engine.render

高度な使用法

[編集]

Tiltを使用すると、テンプレートのプリコンパイルやキャッシュの活用が可能です。

プリコンパイルの例

[編集]
require 'tilt'

# テンプレートをプリコンパイル
engine = Tilt::ERBTemplate.new { "Hello, <%= name %>!" }
compiled = engine.render_proc

# プリコンパイル済みコードの再利用
puts compiled.call(name: "Tilt")
# => Hello, Tilt!

テンプレートキャッシュ

[編集]
require 'tilt'

Tilt::CACHE.fetch("template.erb") do
  Tilt.new("template.erb")
end

Tiltの特徴

[編集]
  • 統一インターフェース: 異なるテンプレートエンジンを一貫した方法で利用可能
  • 広範なサポート: 多くのテンプレートエンジンやマークアップ言語をサポート
  • 拡張性: 独自のテンプレートエンジンを追加可能
  • パフォーマンス: キャッシュやプリコンパイルによる効率的なレンダリング

メリットと制限

[編集]
メリット:
  • テンプレートエンジンの柔軟な切り替え
  • コードの再利用性向上
  • 複数エンジンを統合するプロジェクトで特に有用
制限:
  • Tilt自体はテンプレートエンジンではなく、各エンジンの機能に依存
  • プロジェクトの要件によっては不要な場合も

結論

[編集]

Tiltは、Rubyプロジェクトで複数のテンプレートエンジンを管理するための強力なツールです。一貫したインターフェースと広範なサポートにより、さまざまなニーズに対応できます。特に、異なるテンプレートエンジンを組み合わせて使用するプロジェクトでその真価を発揮します。