Gdzie umieszczacie Abstract Classes?

Mam sobie klasę abstrakcyjną, która przypisuje mi pewne stałe dla całej aplikacji:

class LayoutClassGetter
  CLASS_BY_LAYOUT = { '1' => Car, '2' => Truck }.freeze

  def initialize(layout_number)
    @layout_number = layout_number
  end

  def layout_class
   CLASS_BY_LAYOUT[@layout_number]
  end

  def self.layout_class(layout_number)
    new(layout_number).layout
  end
end

W jakim folderze powinienem taką klasę umieścić bym mógł się odwołać w ten sposób?

LayoutClassGetter.layout_class(@board.board_layout)

Obecnie używam Service Objects, ale one wymagają nieco dłuższego zapytania

LayoutClassGetter.new(@board.board_layout).layout_class

Ten fragment kodu zawiera błąd tutaj dokładnie:

 def self.layout_class(layout_number)
    new(layout_number).layout
  end

Service Objecty nie wymagają od programisty żadnego dłuższego zapytania, to są zwykłe klasy, a klasę możesz umieścić gdzie chcesz.

1 Like

Tak jak napisał @michal2, nie ma pisanej reguły. U mnie w projektach najczęściej tego typu pliki konfiguracyjne trzymamy w lib/.

Pozdrawiam

1 Like