Skip to content

Add email notifications for tasks and challenges#148

Open
georgyangelov wants to merge 9 commits intoskanev:masterfrom
georgyangelov:email-notifications
Open

Add email notifications for tasks and challenges#148
georgyangelov wants to merge 9 commits intoskanev:masterfrom
georgyangelov:email-notifications

Conversation

@georgyangelov
Copy link
Copy Markdown
Collaborator

PR към #140

Очаквам коментари :)

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage decreased (-4.08%) when pulling 20a284f on stormbreakerbg:email-notifications into 7d36321 on skanev:master.

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.0%) when pulling 20a284f on stormbreakerbg:email-notifications into 7d36321 on skanev:master.

Comment thread app/mailers/challenge_mailer.rb Outdated
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тоя формат не може ли да отиде в рейлската конфигурация? Отделно, нямаме ли някъде остандартен формат на дати?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не намерих глобален формат. Което не значи, че няма...

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Друг проект е било. Играта ти е нещо в config/initializers.

Малко вдъхновение

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Има вградени формати на дати в Рейлс. Не помя точните имена, но имаше
:short, :long и подобни, ако не се лъжа. И май се подаваха като аргумент на
:to_s.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mitio Like, read the link, bro.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mitio не ми харесаха форматите, затова реших да си го форматирам ръчно :)

EDIT: Имало е default формат в locales

@skanev
Copy link
Copy Markdown
Owner

skanev commented Sep 23, 2014

Много яко, но има повторение.

  • Mailer-ите са почти еднакви. Observer-ите също.
  • Тестовете плачат за shared_examples_for

Отделно:

Не мога да напипам кога пращаш mail-и. Правиш някаква хакерия с hidden_changed?, която не ми се струва добра идея, понеже:

  1. Някой може да пусне предизвикателство без да иска и да го върне обратно, резултиращо в два мейла; и
  2. една идея по-магическо, отколкото трябва.

Щях да ти предложа да пазиш състояние във всяко такова дали студентите са били известени, но вместо това ти предлагам да сложиш един бутон "Изпрати известие за ново предизвикателство" за админите и да разкараш тези observer-и.

@georgyangelov
Copy link
Copy Markdown
Collaborator Author

Благодаря за коментарите. :)

За повторението доста се чудих какво да направя, понеже не съм особено запознат с Rails и не ми е много ясно кое къде е добре да се сложи. Общ mailer, който да се използва за повече от един модел ОК ли е? Повечето повторения идват от факта, че самите модели challenge и task са доста подобни.
Не знаех за shared_examples_for.

Това с бутона е добро, ще го преработя утре.

@skanev
Copy link
Copy Markdown
Owner

skanev commented Sep 23, 2014

Общ мейлър е ОК. Търсиш някакъв протокол (интерфейс) на който Challenge и Task да отговорят и правиш всичко да работи по него.

Мога да ти помогна с дизайна, но няма да е тази седмица. Евентуално следващата. Отвъд това, напълно ОК съм да ревюирам каквото изпратиш :)

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.0%) when pulling 2f4a97c on stormbreakerbg:email-notifications into 7d36321 on skanev:master.

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.0%) when pulling 9183dfa on stormbreakerbg:email-notifications into 7d36321 on skanev:master.

@georgyangelov
Copy link
Copy Markdown
Collaborator Author

Преработих нещата:

  • Използвам формата на датата от config/locales/bg.yml. Тук в тестовете използвам I18n.l, което зависи от конфигурацията и малко ме притеснява. Има ли по-добър начин или така става?
  • Махнах observer-ите и сложих бутони.
  • Промених тестовете на mailer-ите и използвам shared_examples_for.

Не съм напълно убеден, че общ mailer е много добра идея в конкретния случай. Кодът не е много, а с изключение на challenge и task няма да може работи в този вид за друг модел. Освен това, ако трябва да се параметризира или да се изнесат на друго място специфичните неща, няма ли да се обезсмисли идеята на mailer-ите?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

challenges.hidden е булева колонка, което означава, че можеш да я достъпваш и като предикат през модела, което аз бих предпочел в този случай: ... unless challenge.hidden?.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice. :)

@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.0%) when pulling fdbcdea on stormbreakerbg:email-notifications into 7d36321 on skanev:master.

The shared examples in their previous form could not be used for
any other mailer, even though there may be other mailers that send
emails to multiple users. Also, the parametrization of the shared
examples makes it harder to follow the expectations of the tests.

Now, only the examples for the `#new_challenge` and `#new_task` methods
are shared. This will make the shared test usable for other mailers.
The other option is to make another mailer whose job is to retrieve
all users from the database and call another mailer, but the method
itself is small and making it more generic will be almost like
recreating the functionality of `User.where.each`.

The expectations in the separate mailer spec files are similar, but
for other similar mailers they may be different. For example an
announcement mailer would not contain the title of the announcement
in the body text (only in the subject) and would not use
`announcement_url(announcement)` to generate its URL.
@coveralls
Copy link
Copy Markdown

Coverage Status

Coverage increased (+0.0%) when pulling 259bd04 on stormbreakerbg:email-notifications into 7d36321 on skanev:master.

@georgyangelov
Copy link
Copy Markdown
Collaborator Author

Направих някои промени по тестовете - изкарах тези за #new_#{model}_for_user от shared_examples. Така ми се струва по-преизползваемо и по-просто. Аргументация има в съобщението на commit-a. :)

Имейлите за новини мисля да ги базирам на този бранч. Да пусна ли друг PR за тях или да изчакам да ревюирате този, и тогава?

ПП. Не бързам, просто се чудех дали не е добре да изчакам с другия PR. :)

Comment thread app/mailers/challenge_mailer.rb Outdated
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Това мисля, че ще се събере на един ред. Мисля, че беше коментирано, че тази подредба не се тачи в този codebase :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants