ruby on rails - Interruptores de funciones de rubí/Aletas de funciones
ruby-on-rails rubygems (5)
Me he inspirado en cómo tanto Flickr como Disqus utilizan los conmutadores de funciones. Ambos bloguearon sobre ellos y cómo trabajan en sus dos blogs de desarrollo.
Me preguntaba si faltaba una gema de Ruby o si alguien sabe cómo hacer esto en Ruby. Si no hay nada, espero hacerlo por mi cuenta y liberarlo en la naturaleza. Pero solo quería preguntar aquí porque no he podido encontrar nada remotamente similar a lo que lograron tanto Flickr como Disqus.
Aquí hay algunos más:
Recientemente (9 de octubre 14) eché un vistazo a las gemas disponibles (9+ en varios estados de mantenimiento) y decidí ir con Flipper . Rollout también vale la pena un vistazo.
Si está buscando rodar el suyo, el código fuente de Rollout es solo 200 líneas y es un buen lugar para comenzar. https://github.com/FetLife/rollout/blob/master/lib/rollout.rb
Este railscast también tiene un ejemplo de barebones http://railscasts.com/episodes/315-rollout-and-degrade
También recomiendo encarecidamente el patrón. No hay gemas que yo sepa, pero es bastante fácil de hacer. Un consejo: incluye la posibilidad de establecer automáticamente el estado inicial en encendido o apagado:
feature_flag(''third_party_tool'', :default => true) do
... # this is on by default
end
Esto le ahorrará dolores de cabeza en el momento del despliegue.
Verifique el rollout si ya está utilizando Redis.
ruby_flipper todas las gemas de aletas disponibles ahora (marzo de 2015) y elegí el ruby_flipper
Sí, es más antiguo que otros, pero te permite usar bloques y argumentos para calcular el estado de la función, y es muy simple.
No requiere redis, ninguna base de datos o cualquier otra cosa.
Para la configuración de varios servidores utilizo variables ENV. En realidad, es posible usar cualquier cosa ya que no lo limita (como lo hacen las otras opciones aquí).
Lo único que no me gusta es que ruby_flipper
contamine el objeto con sus métodos, pero eso es fácil de resolver.
Para resumir: si necesita una solución liviana, configurable y no limitada, voto por esta simple joya.
Otros son buenos en un área específica, esta es buena para empezar.
Otro buen candidato es el rollout mencionado en la respuesta aceptada.