class Recipes::Devise

Public Instance Methods

ask() click to toggle source
# File lib/potassium/recipes/devise.rb, line 2
def ask
  use_devise = answer(:devise) do
    Ask.confirm "Do you want to use Devise for authentication? (required for ActiveAdmin)"
  end

  if use_devise
    set(:authentication, use_devise)
    ask_for_devise_model
  end
end
create() click to toggle source
# File lib/potassium/recipes/devise.rb, line 13
def create
  add_devise if selected?(:authentication)
end
install() click to toggle source
# File lib/potassium/recipes/devise.rb, line 17
def install
  ask_for_devise_model
  add_devise
end
installed?() click to toggle source
# File lib/potassium/recipes/devise.rb, line 22
def installed?
  gem_exists?(/devise/)
end

Private Instance Methods

add_devise() click to toggle source
# File lib/potassium/recipes/devise.rb, line 36
def add_devise
  gather_gem 'devise'
  gather_gem 'devise-i18n'

  after(:gem_install) do
    generate "devise:install"

    if auth_model = get(:authentication_model)
      generate "devise #{auth_model}"
    end

    gsub_file "config/initializers/devise.rb", /(\# config.secret_key.+)/i do |_match|
      "config.secret_key = ENV['DEVISE_SECRET_KEY']"
    end

    gsub_file "config/initializers/devise.rb", /(config.mailer_sender.+)/i do |_match|
      "config.mailer_sender = ENV['DEFAULT_EMAIL_ADDRESS']"
    end

    gsub_file "config/initializers/devise.rb", /(\# config.pepper.+)/i do |_match|
      "# config.pepper = 'onhcylrat7x8bjyr5o15sxaix3vbu0sl'"
    end

    append_to_file '.env.development', "DEVISE_SECRET_KEY=\n"
    add_readme_section :internal_dependencies, :devise
  end
end
ask_for_devise_model() click to toggle source
# File lib/potassium/recipes/devise.rb, line 28
def ask_for_devise_model
  create_user_model = answer(:"devise-user-model") do
    Ask.confirm "Do you want to create a user model for Devise?"
  end

  set(:authentication_model, :user) if create_user_model
end