Size: a a a

Ruby, Rails, Hanami | dry-rb

2020 April 29

S

Sergey in Ruby, Rails, Hanami | dry-rb
Чтобы говорить более предметно, из кода:

   filename = "#{label} - #{@lead_organization_name}.docx"
   template = Sablon.template("#{Rails.public_path}/templates/response_generation.docx")

Т.е. правильнее все-таки создать класс и у него вызывать это методами?
class Report
 def filename
 end
 def template
 end
end


report = Report.new
r
eport.filename
r
eport.template
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
нет не правильно
источник

IM

Igor Morozov in Ruby, Rails, Hanami | dry-rb
Не, неправильно
источник

IM

Igor Morozov in Ruby, Rails, Hanami | dry-rb
Классы — это, в первую очередь, о поведении. А не о данных
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Sergey
Чтобы говорить более предметно, из кода:

   filename = "#{label} - #{@lead_organization_name}.docx"
   template = Sablon.template("#{Rails.public_path}/templates/response_generation.docx")

Т.е. правильнее все-таки создать класс и у него вызывать это методами?
class Report
 def filename
 end
 def template
 end
end


report = Report.new
r
eport.filename
r
eport.template
то, что ты хочешь сделать - это бич нормального (правильного) ооп
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
функционально мыслю? 🙂
источник

IM

Igor Morozov in Ruby, Rails, Hanami | dry-rb
возвращение тупла — функционально (можно спорить)

код выше с классом и геттерами — процедурщина или плохой ООП
источник

IM

Igor Morozov in Ruby, Rails, Hanami | dry-rb
процедурщина тоже норм, я сам её использую. но для этого надо как-то синхронно писать всё процедурно
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
Я мыслил так, что все равно сервис формирует данные для того, чтобы сделать send_data в контроллере. Это одно логическое действие - подготовить эти данные, поэтому я все запихнул в сервис и в конце #call сервиса просто возвращаю [template, context, filename]

а в контроллере распаковываю как писал в самом начале
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
ну ок, а что тогда подразумевается под true ООП в данном кейсе?)
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Sergey
ну ок, а что тогда подразумевается под true ООП в данном кейсе?)
написать класс, который выполняет конкретное действие и возвращает нужный результат
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
Nikita Batrak
написать класс, который выполняет конкретное действие и возвращает нужный результат
у меня в контроллере send_data template.render_to_string(context), filename: filename
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
т.е. мне нужны 3 эти переменные.
Как же мне сделать конкретное действие и результат в этом случае? 🙂
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
откуда берутся template, context и filename?
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
Sergey
Чтобы говорить более предметно, из кода:

   filename = "#{label} - #{@lead_organization_name}.docx"
   template = Sablon.template("#{Rails.public_path}/templates/response_generation.docx")

Т.е. правильнее все-таки создать класс и у него вызывать это методами?
class Report
 def filename
 end
 def template
 end
end


report = Report.new
r
eport.filename
r
eport.template
^ вот в примере. Эти переменные определяются на данный момент в сервисе
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
context намного более сложный, там отдельно для него все формируется
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
но тоже в сервисе
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
класс report генерирует отчет или просто возвращает уже готовый?
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
генерирует
источник

S

Sergey in Ruby, Rails, Hanami | dry-rb
а, стоп
источник