Если коротко, то плагин помогает (иногда очень сильно помогает) работать с разнообразными экзтическими и не очень конфигурациями сложнее, чем просто один сервер (мастер-слейвы, вертикальный партишенинг и тп). Самой любимой частью, как ни странно, является поддержка множественных баз в миграциях.
> Если коротко, то плагин помогает (иногда очень сильно помогает) > работать с разнообразными экзтическими и не очень конфигурациями > сложнее, чем просто один сервер (мастер-слейвы, вертикальный > партишенинг и тп). Самой любимой частью, как ни странно, является > поддержка множественных баз в миграциях.
masochism сильно (очень сильно) проще. Почти весь он (кроме интеграции с контроллерами, которую я наверное сегодня же приделаю в db-charmer) - это db_magic :slave => :foo у нас. Вертикальный партишенинг (это когда разные таблицы на разных машинах/базах) никак не сделать, миграций тоже нету... И контроль за тем, что и куда, там достаточно примитивный.
> Вертикальный партишенинг (это > когда разные таблицы на разных машинах/базах) никак не сделать, > миграций тоже нету...
Алексей, если не затруднит... Как можно реализовать такую схему: Есть два приложения. Нужно таблицу Users сделать общую между ними. Я правильно понимаю, что для этого нужно сделать так: в User.rb class User < ActiveRecord::Base db_magic :connection => :userdb end
в database.yml userdb: adapter: mysql host: localhost encoding: utf8 database: base username: name password: pass
И чем это отличается от: class User < ActiveRecord::Base establish_connection :userdb end
Конкретно в данном разрезе разница не очень большая:
1) по дефолту db_charmer не будет фейлиться в девелопмент и тест моде, если :userdb не определен в конфиге (поверьте, очень удобно когда у вас 10+ баз/серверов в продакшене и 20+ девелоперов, которые ну никак не хотят сетапить это все у себя локально)
2) ваш вариант должен выглядеть вот так: configurations[RAILS_ENV]['userdb']
Если же копнуть глубже, то вам нужно как-то запускать миграции на userdb и тут db-charmer на белом коне :-)
2009/11/4 Alexander Negoda <alexander.neg...@gmail.com>:
>> Вертикальный партишенинг (это >> когда разные таблицы на разных машинах/базах) никак не сделать, >> миграций тоже нету...
> Алексей, если не затруднит... > Как можно реализовать такую схему: > Есть два приложения. Нужно таблицу Users сделать общую между ними. > Я правильно понимаю, что для этого нужно сделать так: > в User.rb > class User < ActiveRecord::Base > db_magic :connection => :userdb > end > в database.yml > userdb: > adapter: mysql > host: localhost > encoding: utf8 > database: base > username: name > password: pass > И чем это отличается от: > class User < ActiveRecord::Base > establish_connection :userdb > end
Я не Алексей, но попробую ответить =) В данном случае db_charmer по сути не нужен. Это можно сделать как вы написали, средствами rails. db_charmer понадобится если нужно будет из этого приложения сделать, например, миграцию базы юзеров, ибо этого рельса уже не сможет.
On Nov 4, 10:39 am, Alexander Negoda <alexander.neg...@gmail.com> wrote:
> > Вертикальный партишенинг (это > > когда разные таблицы на разных машинах/базах) никак не сделать, > > миграций тоже нету...
> Алексей, если не затруднит... > Как можно реализовать такую схему: > Есть два приложения. Нужно таблицу Users сделать общую между ними. > Я правильно понимаю, что для этого нужно сделать так: > в User.rb > class User < ActiveRecord::Base > db_magic :connection => :userdb > end
> в database.yml > userdb: > adapter: mysql > host: localhost > encoding: utf8 > database: base > username: name > password: pass
> И чем это отличается от: > class User < ActiveRecord::Base > establish_connection :userdb > end