Decent Exposure Gem – Schluss mit sich wiederholenden Instanzvariablen

Einführung

Github: Ordentliches Belichtungsjuwel
Decent Exposure ermöglicht es uns, exponierte Variablen zu erstellen, die für alle Aktionen des Controllers verwendet werden können, anstatt Instanzvariablen zu wiederholen. Auf exponierte Variablen kann auch über Ansichten zugegriffen werden, und sie speichern die resultierenden Werte. Mit anderen Worten, es ist ein Hilfsmittel zum Erstellen deklarativer Schnittstellen in Controllern.

Ein paar Punkte

  • Verbesserung der Kapselung
  • Variablen für Ansichten können oben im Controller angezeigt werden
  • Kompatibel mit strong_parameters, Dekorateuren
  • Entlarvt Code-Gerüche.

Schauen Sie hier: http://c2.com/cgi/wiki?CodeSmell

Tipps zum Spielen mit anständigem Belichtungsjuwel in einer Rails-App

  • Edelstein hinzufügen 'decent_exposure' in die Gemfile und führen Sie die Bundle-Installation aus
  • Wie ein Controller verwendet anständige_Belichtung sieht aus wie:

Ordentliches Belichtungsjuwel

  • Um zu verhindern, dass vertrauliche Modellattribute versehentlich aktualisiert werden, ist „Decent Exposure“ standardmäßig enthalten und erfordert, dass alle Parameter auf die Whitelist gesetzt werden. Es verfügt über eine integrierte Unterstützung für die Übergabe starker Parameter.
  • It deals with overexposure.The ideal number of exposures is two per controller
    (1 -> singular resource, e.g. item and 2 -> plural collections e.g. items).
  • Wenn der obere Teil der Controller-Klasse mit Expose-Anweisungen überfüllt ist, können zwei Codegerüche auftreten, z. B. exponierende Variablen dürfen nicht in der Ansicht verwendet werden und Controller mit mehreren Verantwortlichkeiten.
  • We can utilize expose with block feature to decorate the object:
    expose(:item) { |default| ItemDecorator.new(default) }
  • Wenn die Modellklassen durch einen Namespace wie Blog::Post abgedeckt sind, müssen wir ihn beim Expose-Aufruf mit model angeben:

    class Blog::PostsController < ApplicationController
    expose(:post, model: Blog::Post)
    Ende

Einige Ressourcen

API-Änderungen: API-Änderungen in der neuen Version
Railcasts: Ordentliche Belichtung
Anständige Dekoration: Anständiges Dekorationsjuwel
Ein Blog: So verringern Sie die Kopplung in Controllern und Ansichten

Bleiben Sie dran!

Thanks,

LUBAIB CEEJEY
Senior Ruby on Rails-Entwickler 

Abonnieren Sie die neuesten Updates

zusammenhängende Posts

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

de_DEGerman