mirror of
https://github.com/heartcombo/devise.git
synced 2022-11-09 12:18:31 -05:00
44 lines
1.5 KiB
Ruby
44 lines
1.5 KiB
Ruby
require 'rails/generators/base'
|
|
|
|
module Devise
|
|
module Generators
|
|
class ControllersGenerator < Rails::Generators::Base
|
|
CONTROLLERS = %w(confirmations passwords registrations sessions unlocks omniauth_callbacks).freeze
|
|
|
|
desc <<-DESC.strip_heredoc
|
|
Create inherited Devise controllers in your app/controllers folder.
|
|
|
|
Use -c to specify which controller you want to overwrite.
|
|
If you do no specify a controller, all controllers will be created.
|
|
For example:
|
|
|
|
rails generate devise:controllers users -c=sessions
|
|
|
|
This will create a controller class at app/controllers/users/sessions_controller.rb like this:
|
|
|
|
class Users::ConfirmationsController < Devise::ConfirmationsController
|
|
content...
|
|
end
|
|
DESC
|
|
|
|
source_root File.expand_path("../../templates/controllers", __FILE__)
|
|
argument :scope, required: true,
|
|
desc: "The scope to create controllers in, e.g. users, admins"
|
|
class_option :controllers, aliases: "-c", type: :array,
|
|
desc: "Select specific controllers to generate (#{CONTROLLERS.join(', ')})"
|
|
|
|
def create_controllers
|
|
@scope_prefix = scope.blank? ? '' : (scope.camelize + '::')
|
|
controllers = options[:controllers] || CONTROLLERS
|
|
controllers.each do |name|
|
|
template "#{name}_controller.rb",
|
|
"app/controllers/#{scope}/#{name}_controller.rb"
|
|
end
|
|
end
|
|
|
|
def show_readme
|
|
readme "README" if behavior == :invoke
|
|
end
|
|
end
|
|
end
|
|
end
|