From 0aa782711dde4319e0757bd7f13455f1f2b64372 Mon Sep 17 00:00:00 2001 From: James Mason Date: Fri, 3 Nov 2017 20:37:42 -0700 Subject: [PATCH] Use 'Feature's to toggle optional functionality TODO: Wrap every incomplete project in a feature, and _turn it off_. --- Gemfile | 4 ++++ Gemfile.lock | 2 ++ app/controllers/registrations_controller.rb | 3 +-- app/views/devise/registrations/new.html.haml | 3 ++- config/initializers/feature.rb | 10 ++++++++++ 5 files changed, 19 insertions(+), 3 deletions(-) create mode 100644 config/initializers/feature.rb diff --git a/Gemfile b/Gemfile index dcb05938..3ec566ea 100644 --- a/Gemfile +++ b/Gemfile @@ -185,6 +185,10 @@ gem 'cloudinary' # for setting app configuration in the environment gem 'dotenv-rails' +# configurable toggles for functionality +# https://github.com/mgsnova/feature +gem 'feature' + # For countable.js gem "countable-rails", "~> 0.0.1" diff --git a/Gemfile.lock b/Gemfile.lock index 454dfa6a..bad063c8 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -179,6 +179,7 @@ GEM multipart-post (>= 1.2, < 3) fastimage (2.0.0) addressable (~> 2) + feature (1.4.0) ffi (1.9.18) font-awesome-rails (4.7.0.2) railties (>= 3.2, < 5.2) @@ -591,6 +592,7 @@ DEPENDENCIES dotenv-rails factory_girl_rails faker + feature font-awesome-rails formtastic (~> 3.1.1) formtastic-bootstrap diff --git a/app/controllers/registrations_controller.rb b/app/controllers/registrations_controller.rb index a133ceaf..e020d217 100644 --- a/app/controllers/registrations_controller.rb +++ b/app/controllers/registrations_controller.rb @@ -45,11 +45,10 @@ class RegistrationsController < Devise::RegistrationsController end def check_captcha - unless verify_recaptcha + unless Feature.inactive?(:recaptcha) || verify_recaptcha self.resource = resource_class.new sign_up_params resource.validate # Look for any other validation errors besides Recaptcha respond_with_navigational(resource) { render :new } end end - end diff --git a/app/views/devise/registrations/new.html.haml b/app/views/devise/registrations/new.html.haml index e63eb19e..64aaa99e 100644 --- a/app/views/devise/registrations/new.html.haml +++ b/app/views/devise/registrations/new.html.haml @@ -12,7 +12,8 @@ = f.input :name, input_html: { required: true }, hint: 'This is your real name' = f.input :password, input_html: { required: true } = f.input :password_confirmation, input_html: { required: true } - = recaptcha_tags + - Feature.with(:recaptcha) do + = recaptcha_tags %p.text-right = f.action :submit, as: :button, label: 'Sign Up', button_html: { class: 'btn btn-success' } diff --git a/config/initializers/feature.rb b/config/initializers/feature.rb new file mode 100644 index 00000000..415d84f7 --- /dev/null +++ b/config/initializers/feature.rb @@ -0,0 +1,10 @@ +require 'feature' + +repo = Feature::Repository::SimpleRepository.new + +# configure features here +unless(ENV['RECAPTCHA_SITE_KEY'].blank? || ENV['RECAPTCHA_SECRET_KEY'].blank?) + repo.add_active_feature :recaptcha +end + +Feature.set_repository repo