ページ内ナビ
概要
DraperはRails applicationへobject-orientedなpresentation layerを追加するdecorator/view-model libraryです。modelをwrapして表示用formattingやsemantic HTML、view固有のrepresentationをdecoratorへ移し、domain modelやglobal helperの肥大化を抑えます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
modelをDecoratorでwrapしてpresentation methodを追加する
Draper::Decoratorを継承し、modelへ直接置きたくない表示用methodをdecoratorに実装できます。delegate_allでwrapped objectのmethodを透過的に利用できます。
出典:[1]
Rails helperへdecoratorからaccessする
decorator内ではh/helpers経由でRails helperを利用でき、linkやmarkup生成等のview concernをpresentation layerへまとめられます。
出典:[1]
collectionやassociationもdecorateする
decorate_collection、CollectionDecorator、decorates_association等を使い、単一modelだけでなく一覧や関連objectにも同じpresentation patternを適用できます。
出典:[1]
向いている用途
Rails view helperとmodelの間に明確なpresentation layerを置きたい場合に向く
formattingやdisplay-specific representationが増え、modelへ置くとdomain責務を汚し、helperへ置くとnamespaceが散らばるapplicationに適します。
出典:[1]
導入前の確認
decorateはrender直前に行いdomain操作へ持ち込まない
READMEはdecoratorをview consumption向けとし、controller actionの早い段階でdecorateしてmodel操作に使うことを避けるよう案内しています。
出典:[1]
README・gemspec・CI matrixの互換性情報を合わせて確認する
READMEは4.0.0以降Rails 5.2/Ruby 2.4+をofficial supportと説明する一方、gemspecのminimumはRuby 2.2.2・Rails dependency 5.0+です。4.0.6 CIはmodern Rails 8.1/8.0/7.2とRuby 3.4〜3.1も検証しています。
参考にした公式資料
- [1]Draper 4.0.6 README(2026-10-04)
- [2]Draper 4.0.6 gemspec(2026-10-04)
- [3]Draper 4.0.6 CI matrix(2026-10-04)
- [4]Draper 4.0.6 release(2026-10-04)
- [5]Draper MIT license(2026-10-04)
編集部からの補足
Draperはpresentation concernをdecoratorへ寄せるlibraryです。READMEは「render直前にdecorateする」運用を推奨しており、controller/domain logicまでdecoratorへ持ち込むと責務が再び曖昧になります。4.0.6のCIはRails 8.1/8.0/7.2とRuby 3.4〜3.1を中心に検証していますが、Ruby 3.2 + Rails 8.1は一時的に除外されています。
3ステップで試す
- 1
既存Rails applicationへDraper 4.0.6を追加する
Rails projectのGemfileへstable 4.0.6をversion固定で追加し、dependencyをresolveします。
bundle add draper --version 4.0.6 - 2
ApplicationDecoratorを生成する
共通decorator baseとして使える
ApplicationDecoratorを生成します。bin/rails generate draper:install - 3
model用Decoratorを生成する
ArticleDecoratorを生成し、表示formatting等のpresentation logicをmodelやhelperから移す起点にします。bin/rails generate decorator Article
成長
成長の推移 · 直近30日
5,277 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 8
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Jekyll51,707 Stars
共通タグ 1件 · 同じ言語
MarkdownとLiquidからブログ対応の静的サイトを生成
Ruby - Mastodon50,345 Stars
共通タグ 1件 · 同じ言語
community policyを持つserverをActivityPubでFediverseへ接続する分散SNS
Ruby - Homebrew49,876 Stars
共通タグ 1件 · 同じ言語
macOS/Linuxのソフトウェア導入を
Rubybrewコマンドへまとめるパッケージ管理ツール - Chatwoot37,488 Stars
共通タグ 1件 · 同じ言語
Web chat・email・WhatsApp・social channelをshared inbox・automation・AI supportへ統合する
Ruby - Vagrant27,211 Stars
共通タグ 1件 · 同じ言語
Vagrantfileでprovider差を隠し、portableな開発環境を配布するsource-available tool
Ruby - GitLab CE/EE Mirror24,554 Stars
共通タグ 1件 · 同じ言語
GitLabの巨大なDevOps codebaseをGitHub mirrorから参照する
Ruby
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。