@proRuby

Страница 252 из 1594
Dima
29.10.2016
14:33:23
Вообще интересно глядя на данный код: у нас есть блок в нем определяется переменная config - но в тебе блока она не используется.

Alex
29.10.2016
14:33:35
Это кусок кода

require "active_sms" require "logger" ActiveSMS.configure do |config| c.register_backend :my_backend_name, ActiveSMS::Backend::Logger, logger: Logger.new(STDOUT), severity: :info c.default_backend = :my_backend_name end

Я пилю гем и периодически спрашиваю советы у других рубистов.

Google
Иван
29.10.2016
14:57:57
Я пилю гем и периодически спрашиваю советы у других рубистов.
Дима про то, что у тебя внутри блока переменная "c" не определена

Alex
29.10.2016
14:58:11
О, благодарю

Alexander
29.10.2016
17:24:37
Не люблю кстати методы (переменные) классов, они нужны редко, когда в процессе одного выполнения программы действительно меняется, но часто достаточно констант и наследования

Alex
29.10.2016
17:25:08
Наследование зло. Это уже мое имхо.

Alexander
29.10.2016
17:25:10
Но код выше -- rails way, так что всё норм ?

Alex
29.10.2016
17:25:20
Я кстати писал ruby way

т.к гем не под рельсы а под руби. Для рельс будет обертка.

Alexander
29.10.2016
17:25:29
Наследование зло. Это уже мое имхо.
Смотря как с ним обращаться

Я кстати писал ruby way
Ruby way, на мой взгляд, это избегать Module.configure do |config|, но многие могут со мной не согласиться

Alex
29.10.2016
17:29:30
а что с ним не так?

я думал это рубишный подход

Alexander
29.10.2016
17:41:06
я думал это рубишный подход
Найди в стдлиб такое, или труъ гемах -- вряд ли получится

Alex
29.10.2016
17:41:37
Потому что это синглтон

Google
Alex
29.10.2016
17:41:44
это антипаттерн в 90% случаев.

а вообще твердоботам нраица: https://robots.thoughtbot.com/mygem-configure-block

Alexander
29.10.2016
17:43:10
а что с ним не так?
1. Классовый метод -- это функциональщина, а не ооп 2. Чаще всего, как я говорил, достаточно констант и наследования. Можно просто экземпляр класса создавать и его настраивать, если в наследование не получается 3. Не гибко

Alex
29.10.2016
17:43:40
Это не гибко да.

Но тем кому нужна подобная гибкость могут накатать такое решение за один день.

Плюс так как все смс бэкенды используют один и тот же интерфейс для вызова - они могут написать свой ActiveSMS и все равно использовать уже готовые бэкенды

так что я даже им помогу (в теории)

Я ориентировался на максимальную простоту для конечного юзера. Тот гем который бы я хотел иметь для смс.

Подключил, врубил нужный бэкенд и просто юзаешь.

Кстати что такое тру гемы я так и не понял.

Alexander
29.10.2016
17:46:33
Наследование зло. Это уже мое имхо.
Я фреймворк накатал из чистого наследования, нет никаких классовых бефор и афтер, и это всё замечательно работает. Так что советую тебе не бояться, это всё можно о осознать и с этим работать -- удобно и красиво

Alex
29.10.2016
17:47:02
Я специально пошел путем синглтона чтобы сделать гем максимально простым )

Мне не сложно сделать "наследованием" (кстати не понимаю что ты в это вкладываешь) просто гем уже будет не таким юзер френдли для нубов.

Иван
29.10.2016
17:47:48
почему метод класса это функциональщина?

Alexander
29.10.2016
17:47:50
Кстати что такое тру гемы я так и не понял.
Сложно сказать. От авторитетных рубистов. Тот же sequel мб

Alex
29.10.2016
17:48:34
Класс который хранит глобальное состояние - это синглтон, и это антипаттерн.

Alexander
29.10.2016
17:49:23
Я специально пошел путем синглтона чтобы сделать гем максимально простым )
Да, поэтому я не говню, просто высказываю своё мнение

Alex
29.10.2016
17:51:00
Никто не спорит что это дурной тон и возникает класс проблем.

Например ActiveRecord это тоже приличное сборище антипаттернов

Но он очень удобен.

Google
Alexander
29.10.2016
18:09:45
``` class MySMS < ActiveSMS BACKEND = SMS_RU end ``` Я бы поспорил насчёт удобства, не говоря уже про то, что сами бэкенды могут быть наследованы, и наследоваться уже от нужного

Alex
29.10.2016
18:15:03
Я не очень понимаю как в твоей схеме я могу под одним и тем же именем использовать разные бэкенды

Lupsick
29.10.2016
18:44:27
как можно нормально к рельсам подключить dry-types?

Nikolay
29.10.2016
18:44:50
При чем тут рельсы?

Юзай в обычных poro и все

Alexander
29.10.2016
18:47:51
Я не очень понимаю как в твоей схеме я могу под одним и тем же именем использовать разные бэкенды
Зачем? Как в твоём под одним именем? Делаешь второе наследование и всё

Lupsick
29.10.2016
18:48:04
При чем тут рельсы?
криво автолоадит

Alex
29.10.2016
18:48:14
Затем что на локалке будет один класс за это отвечать, а на проде другой.

А название будет одно и тоже

к пример :main_sms_service или ченить такое.

Alex
29.10.2016
18:48:55
Конфиг yaml для простого рубишного гема ?

Alex
29.10.2016
18:49:00
очень просто и понятно ага.

Alex
29.10.2016
18:49:21
Ну потому что для рубишного гема должно быть достаточно рубикода??

Alexander
29.10.2016
18:49:30
очень просто и понятно ага.
Что из этого непонятно?

Alex
29.10.2016
18:49:33
серьезно, зачем тут yaml?

Что из этого непонятно?
Например что ты имеешь ввиду под вторым наследованием.

Alexander
29.10.2016
18:49:52
серьезно, зачем тут yaml?
Конфигурирование?

Alex
29.10.2016
18:50:44
Почему нельзя рубикдом сконфигурировать?

Google
Alex
29.10.2016
18:51:11
Как ты сделаешь чтобы один и тот же код использовал разный бэкенд каждый со своими настройками в разных средах?

Environments
Нет в руби environments

Alexander
29.10.2016
18:52:12
Alex
29.10.2016
18:52:27
подожди подожди. У меня есть руби скрипт рассылки

Alexander
29.10.2016
18:52:28
В руби нет, а вокруг есть

Alex
29.10.2016
18:52:29
он прод или нет?

Admin
ERROR: S client not available

Alex
29.10.2016
18:52:36
так я рубигем пишу )

Alexander
29.10.2016
18:52:52
он прод или нет?
Когда у тебя ямл -- тебе пофигу

Alex
29.10.2016
18:53:03
Ямл я как кормить буду?

чем тяжелый yaml лучше легковесного configure?

Alexander
29.10.2016
18:53:27
Ямл я как кормить буду?
Ямл.лоад, как будто не знаешь

Alex
29.10.2016
18:53:33
Стоп стоп

как я гему передавать этот ямл буду?

строкой? ?

Alexander
29.10.2016
18:54:00
чем тяжелый yaml лучше легковесного configure?
Зависит от окружения: меняешь конфигурацию без вмешательства в код

строкой? ?
Лоад_файл Бля, посмотри доки

Alex
29.10.2016
18:54:41
Т.е я сначала из ямла сделаю хэшик, а потом скормлю моей реализации?

Google
Alex
29.10.2016
18:55:19
Тогда причем тут yaml вообще?

если он тут не нужен?

Во вторых - кидать огромный хэшик классу это тоже круто.

Чем он отличается от моего configure правда неясно.

Alexander
29.10.2016
18:56:33
если он тут не нужен?
Да любой формат. Файл с данными для конфигурации, который позволяет не вмешиваться в код для изменения каких-то параметров конфигурации

Alex
29.10.2016
18:57:07
Сторонняя апишка это уже не часть кода? тут разные подходы имхо.

Я обычно придерживаюсь того что апишки на которые жестко завязано приложение - хранятся в коде, кроме секретов разумеется.

Alexander
29.10.2016
18:57:25
Это может быть хоть БД - зависит от задачи

Alex
29.10.2016
18:57:47
Лоад_файл Бля, посмотри доки
Я то в курсе как загружать и юзать ямл, я не понял к чему ты его приплел если мы рубишный код обсуждаем.

Если есть внешняя апишка то как правило у нее жесткий entrypoint

Нет смысла хранить ее в конфигурации потому что она никогда не изменится.

Alexander
29.10.2016
18:58:55
Я обычно придерживаюсь того что апишки на которые жестко завязано приложение - хранятся в коде, кроме секретов разумеется.
Храни. Но ты хочешь переключение бэкенда на проде? Это как переключение аккаунта, то есть ключа, почему бы не хранить там же именно нужный

Alex
29.10.2016
18:59:07
Это не совсем так выглядит.

Суть в том что на локалке заглушка, на проде боевой сервис

и при этом ты не меняешь в коде ничего.

Т.е ты как дергал например ActiveSMS.send_sms так и дергаешь в нужном месте кода.

Alexander
29.10.2016
19:00:46
и при этом ты не меняешь в коде ничего.
У меня вот выбирается апи для писем в зависимости от наличия конфигов: нет ключа апи для сервиса А? Включаем сервис Б

Alex
29.10.2016
19:00:55
о_О

странный у тебя конфиг

Alexander
29.10.2016
19:01:01
То есть я код тоже не меняю

Страница 252 из 1594