Рубиновые функциональные переключатели / функциональные ласты - PullRequest
17 голосов
/ 14 февраля 2011

Меня вдохновило то, как Flickr и Disqus используют функциональные переключатели. Они оба написали о них и о том, как они работают в обоих своих блогах по разработке.

Мне было просто интересно, есть ли драгоценность Рубина, по которой я скучаю, или кто-нибудь знает, как это сделать в Руби? Если ничего нет, я бы хотел сделать свое и выпустить в дикой природе. Но я просто хотел спросить здесь сначала, потому что я не смог найти ничего отдаленно похожего на то, что достигают и Flickr, и Disqus.

Ответы [ 5 ]

12 голосов
/ 14 февраля 2011

Проверьте свиток , если вы уже используете Redis.

4 голосов
/ 09 октября 2014

Я недавно (9 октября 14) посмотрел на доступные драгоценные камни - 9+ в различных состояниях обслуживания - и решил пойти с Flipper . Развертывание тоже стоит посмотреть.

Если вы хотите развернуть свой собственный, исходный код для Rollout составляет всего 200 строк и является хорошим местом для начала. https://github.com/FetLife/rollout/blob/master/lib/rollout.rb

У этого Railscast также есть пример barebones http://railscasts.com/episodes/315-rollout-and-degrade

2 голосов
/ 04 июня 2011
2 голосов
/ 14 февраля 2011

Также настоятельно рекомендуем шаблон.Нет драгоценных камней, о которых я знаю, но это довольно легко сделать.Один совет: включите возможность автоматического включения или выключения начального состояния:

feature_flag('third_party_tool', :default => true) do
    ... # this is on by default
end

Это избавит вас от головной боли во время развертывания.

0 голосов
/ 29 марта 2015

Я перепробовал все доступные сейчас флипперы (март 2015) и выбрал ruby_flipper

Да, он старше других, но он позволяет использовать блоки и аргументы для вычислениясостояние объекта, и это чертовски просто.

Не требует повторного создания, какой-либо базы данных или чего-либо еще.

Для настройки нескольких серверов я использую переменные ENV.На самом деле можно использовать что угодно, поскольку это не ограничивает вас (как и другие варианты здесь).

Единственное, что мне не нравится, это то, что ruby_flipper загрязняет Объект своими методами, но это легкочтобы решить.

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

Другие хороши в какой-то конкретной области, этот хорош дляначать с.

Еще один хороший кандидат - развертывание , упомянутое в принятом ответе.

...