Size: a a a

Ruby, Rails, Hanami | dry-rb

2020 January 25

Jøhn Đøꝩsøn in Ruby, Rails, Hanami | dry-rb
Хоть чуть-чуть да и мешает.
источник

O

Odebe in Ruby, Rails, Hanami | dry-rb
Jøhn Đøꝩsøn
В питоне хоть манкипатчинга нет. И безымянные блоки на 300 строк он не поощряет.
питон: написать каку одним способом
руби: написать каку 101 способом и через get_instance_variable('@_data')
источник

O

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

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Nikita Batrak
если ты хочешь мигрировать во все базы, то можно написать руками рейк таску
Нет примера такой таски? Не очень понимаю как можно по сути выполнять те же миграции, но с другим конфигом коннекта к бд.
источник

Jøhn Đøꝩsøn in Ruby, Rails, Hanami | dry-rb
Jøhn Đøꝩsøn
Хоть чуть-чуть да и мешает.
Не так как что-нибудь сильно и статически типизированое, конечно, но хоть что-то.
источник

Jøhn Đøꝩsøn in Ruby, Rails, Hanami | dry-rb
Odebe
питон: написать каку одним способом
руби: написать каку 101 способом и через get_instance_variable('@_data')
Компрехеншоны есть, getattr/setattr есть. Способов выстрелить в ногу хватает.
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Alexander Alyoshin
Нет примера такой таски? Не очень понимаю как можно по сути выполнять те же миграции, но с другим конфигом коннекта к бд.
примера нет, но если покурить этот класс, то с небольшими изменениями можно сделать

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/tasks/database_tasks.rb
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
https://github.com/rails/rails/blob/master/activerecord/lib/active_record/tasks/database_tasks.rb#L230

а конкретно тут, брать конекшн не из Base.connection, а куда нужно (теоретически)
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
но во всех ресурсах, где знакомят с multiple databases дублируют миграции
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Alexander Alyoshin
Нет примера такой таски? Не очень понимаю как можно по сути выполнять те же миграции, но с другим конфигом коннекта к бд.
а у тебя между бд реплицирования нет?
источник

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Nikita Batrak
примера нет, но если покурить этот класс, то с небольшими изменениями можно сделать

https://github.com/rails/rails/blob/master/activerecord/lib/active_record/tasks/database_tasks.rb
Ага, спасибо. Пока это костыль, ниже напишу что ещё попробую.
источник

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Nikita Batrak
а у тебя между бд реплицирования нет?
Она есть, но она логическаялогическая. То есть там сразу две проблемы:

1. нужно на реплике поддерживать идентичность мастера, т.е. нужно иметь ту же структуру таблиц. Мастер ничего не знает о ней и тупо отправляет, скажем, запрос типа insert бла бла. Реплика его получает и пытается исполнить у себя. Собственно из-за этого рассматривал вопрос о том, как исполнять миграции сразу и на мастере, и на реплике.

2. логическая репликация подразумевает связь издатель-подписчик. На мастере создаётся PUBLICATION, а реплика на неё подписывается. И проблема в том, что в этот PUBLICATION нужно добавлять те таблицы, которые будут входить в подписку. Это означает, что если со стороны Rails какая-то миграция создаёт таблицу и даже если она гипотетически создалась на реплике, то теперь нужно ещё добавить в PUBLICATION на мастере эту новую таблицу, чтобы сведения о ней реплицировались на реплику.


Поэтому чуть позже ещё гляну потоковую репликацию. Она возможно решит все проблемы.
источник

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Собственно если потоковая сама создаёт копию таблицы, поддерживает схему и всё такое, то проблемы решены. Но пока не знаю, никогда не работал ранее с репликами.
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Alexander Alyoshin
Собственно если потоковая сама создаёт копию таблицы, поддерживает схему и всё такое, то проблемы решены. Но пока не знаю, никогда не работал ранее с репликами.
потоковая создает, но там есть свои нюансы
источник

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Какие например?
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Alexander Alyoshin
Какие например?
ну как минимум версии бд должны совпадать
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
определиться: синхронно или асинхронно нужно
источник

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Nikita Batrak
ну как минимум версии бд должны совпадать
это не проблема
источник

AA

Alexander Alyoshin in Ruby, Rails, Hanami | dry-rb
Nikita Batrak
определиться: синхронно или асинхронно нужно
тут не понял
источник

NB

Nikita Batrak in Ruby, Rails, Hanami | dry-rb
Alexander Alyoshin
тут не понял
синхронная или асинхронная репликация нужна
источник