[basecamp/lexxy] ネストされたコントローラでのAttachment描画時のパーシャルパス探索を無効化

basecamp/lexxy

背景

Railsのネストされたコントローラ(例: Admin::PostsController)内でLexxyのrich textエディタを使用する際、添付ファイル(attachments)を描画しようとすると、名前空間化されたパーシャルテンプレートを探索してしまい、存在しない場合に例外が発生する問題がありました。

この変更は、Action Textのadapter化アプローチへの移行までの一時的な対処として実装されています。

技術的な変更内容

パーシャルパス探索の制御

render_custom_attachments_in メソッド内で、添付ファイルを描画する直前に prefix_partial_path_with_controller_namespacefalse に設定するようになりました。

変更後:

def render_custom_attachments_in(value)
  if value.respond_to?(:body)
    if html = value.body_before_type_cast.presence
      self.prefix_partial_path_with_controller_namespace = false if respond_to?(:prefix_partial_path_with_controller_namespace=)
      ActionText::Fragment.wrap(html).replace(ActionText::Attachment.tag_name) do |node|
        if node["url"].blank?
          attachment = ActionText::Attachment.from_node(node)
          # ...

動作の違い

変更前の挙動:
- Admin::PostsController から呼ばれた場合、app/views/admin/posts/_attachment.html.erb を探索
- 見つからない場合に ActionView::MissingTemplate 例外が発生

変更後の挙動:
- コントローラの名前空間に関係なく、app/views/action_text/attachments/_attachable.html.erb など、標準のパーシャルパスのみを探索
- ネストされたコントローラでも安全に動作

実装の注意点

このコードは respond_to? チェックを使用して、prefix_partial_path_with_controller_namespace= メソッドが存在する場合のみ設定を変更します。これにより、古いRailsバージョンや異なるコンテキストでも安全に動作します。

パッケージバージョン

この修正に伴い、npm パッケージのバージョンが 0.1.27-beta から 0.7.0-beta に更新されています。メジャーバージョンの変更は、将来のadapter化アプローチへの移行を見据えたものと考えられます。

記事メタデータ

Generated by:
Claude Sonnet 4.5 for DiffDaily

この記事はAIによって自動生成されています。内容の正確性については、必ずソースコードやPRを確認してください。

品質レビュー結果

Review Status:
承認済み
Review Count:
1回
Reviewed by:
Gemini 2.5 Pro for DiffDaily

Review Criteria:

ガイドライン準拠 ⚠ WARNING

記事構成とDiffDaily Styleへの準拠状況

記事構成、コードブロックの書式、対象読者への適合性はすべて良好です。ただし、PRリンクの記法が `[PR #596]` となっており、ガイドラインの例 `[#596]` とわずかに異なります。

  • 記事構成(Title、Context、Technical Detail)
  • DiffDaily Styleガイド準拠
  • カスタムMarkdown活用
  • 対象読者への適合性
技術的整合性 ✓ PASS

技術的な正確性と表現の適切性

PRのDiff内容を正確に引用し、技術的な変更点を論理的に解説できています。使用されている技術用語も適切です。

  • 技術用語の正確性
  • コード例の正確性
  • 説明の技術的正確性
PR内容との整合性 ⚠ WARNING

元のPR情報との一致度

記事の主張はPRのDescriptionやコード変更と概ね一致しています。ただし、バージョンアップの理由を『将来のadapter化アプローチへの移行を見据えたものと考えられます』と記述している点は、PRに明記されていない推測です。表現が断定的でないため許容範囲ですが、注意が必要です。

  • タイトル・説明の一致
  • Diff内容の正確な反映
  • 推測の排除