Ruby功能开关/功能翻转器

时间:2011-02-14 17:58:49

标签: ruby-on-rails ruby rubygems sinatra

我受到了FlickrDisqus如何使用功能切换的启发。他们都在博客上写了他们以及他们如何在他们的两个开发博客上工作。

我只是想知道是否有Ruby宝石缺少或者是否有人知道如何在Ruby中执行此操作?如果没有任何东西,我希望自己制作并在野外发布。但我只是想在这里问一下,因为我找不到任何类似于Flickr和Disqus实现的东西。

5 个答案:

答案 0 :(得分:11)

如果您已使用Redis,请检查rollout

答案 1 :(得分:3)

我最近(9月14日)看了可用的宝石 - 各种维护状态下的9+ - 并决定选择FlipperRollout也值得一看。

如果您想要自己推出Rollout的源代码只有200行,这是一个很好的起点。 https://github.com/FetLife/rollout/blob/master/lib/rollout.rb

此railscast也有一个准系统示例http://railscasts.com/episodes/315-rollout-and-degrade

答案 2 :(得分:1)

还强烈推荐这种模式。没有我知道的宝石,但它很容易做到。一个提示:包括将初始状态自动设置为打开或关闭的功能:

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

这将在部署时节省您的头痛。

答案 3 :(得分:1)

答案 4 :(得分:0)

我现在尝试了所有可用的鳍状宝石(2015年3月)并选择了 ruby_flipper

是的,它比其他版本旧,但它允许你使用块和参数来计算特征状态,这很简单。

它不需要redis,任何数据库或其他任何东西。

对于多服务器设置,我使用ENV变量。它实际上可以使用任何东西,因为它不会限制你(就像这里的其他选项一样)。

我唯一不喜欢的是ruby_flipper用它的方法污染了Object,但这很容易解决。

总结一下:如果你需要一个轻量级,可配置且不受限制的解决方案,我会投票给这个简单的宝石。

其他人在某些特定领域都很好,这个开头很好。

另一个好的候选人是rollout在接受的答案中提到。