- Template name:
telegram.message
- Content:
{{- /* Telegram message to use: {{ template "telegram.message2" . }} */ -}} {{ define "__alerts_list" -}} {{ range . }} {{if ne (index .Labels "alertname") "" -}} {{ if eq .Status "firing" }}🔴{{ else }}🟢{{ end }} {{- if ne (index .Labels "severity") "" -}} <u><b>P{{ index .Labels "severity" }}</b></u> {{ end -}}
Сегодня попался рельсовый код, в котором используются монады, сервисы и прочее. Решил сделать обзор с объяснением того, что в коде не нравится и что можно исправить.
Данный разбор основан только на личном опыте и избегает попытку написать самый идеальный код на свете. К сожалению пошарить ссылку на код не могу, потому что автор попросил опубликовать анонимно.
Главная операция, которая вызывается из контроллера выглядит следующим образом:
require 'dry/monads' | |
require 'dry/monads/right_biased' | |
require 'dry/monads/result' | |
require 'dry/monads/maybe' | |
module Dry | |
module Monads | |
module RightBiased | |
module Right | |
def deconstruct |
Hello! | |
Some information about hanami workshop. | |
Requirements: | |
* ruby 2.5+ (and bundler) | |
* postgresql (9.6.2+) | |
Before start workshop please install hanami gem to your system |
смотри, я посмотрел в старом рабочем проекте
вот все тесты из проекта
Finished in 2 seconds (files took 2.78 seconds to load)
250 examples, 0 failures, 3 pending
Coverage report generated for RSpec to /Users/anton/work/job/old_projects/coverage. 439 / 439 LOC (100.0%) covered.
require "benchmark/ips" | |
def fast | |
test = nil | |
test = 'test' unless test | |
test = 'new test' unless test | |
end | |
def slow |
module Post | |
class AnonymousAbilities | |
include Kan::Abilities | |
role(:anonymous) do |user, _| | |
user.id.nil? | |
end | |
register(:read) { [] } | |
end |
def result_handler(result) | |
case result | |
when Success, Some | |
puts 'success, user created' | |
when Failure { |message, _| message == :http_error } | |
puts "HTTP request error, #{result.failure[2]}" | |
when Failure { |message, _| message == :validation_error } | |
puts "validation error, #{result.failure[2]}" | |
when Failure(ROM::Error) | |
puts 'User not created' |
ситуация, есть приложение, которое создает пользователя, а потом хочет сделать кучу разной работы в бэкграунде (послать данные пользователю, отправить аналитику в сегмент, сделать какие-то модели в БД, выкачать дамп данных, etc)
вариант первый, взять сайдкик:
class CreatedUserNotificationWorker
# ...
end
require_relative './container' | |
module Dry | |
module AutoInject | |
class Strategies | |
class Kwargs | |
def included(klass) | |
included_items | |
super | |
end |