Class: Rockstart::Authorization::PunditGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Includes:
Generators::ClassOptionHelpers
Defined in:
lib/generators/rockstart/authorization/pundit/pundit_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_prebuilt_resourcesObject



30
31
32
33
34
# File 'lib/generators/rockstart/authorization/pundit/pundit_generator.rb', line 30

def add_prebuilt_resources
  directory "app"
  directory "lib"
  directory "spec"
end

#add_pundit_configurationObject



26
27
28
# File 'lib/generators/rockstart/authorization/pundit/pundit_generator.rb', line 26

def add_pundit_configuration
  directory "config"
end

#add_pundit_exception_handlingObject



13
14
15
16
17
18
# File 'lib/generators/rockstart/authorization/pundit/pundit_generator.rb', line 13

def add_pundit_exception_handling
  application <<~PUNDIT
    # Treat Pundit authentication failures as forbidden
    config.action_dispatch.rescue_responses["Pundit::NotAuthorizedError"] = :forbidden
  PUNDIT
end

#add_pundit_to_application_controllerObject



20
21
22
23
24
# File 'lib/generators/rockstart/authorization/pundit/pundit_generator.rb', line 20

def add_pundit_to_application_controller
  inject_into_file "app/controllers/application_controller.rb",
                   "  include Pundit\n",
                   before: /^end$/
end

#add_scaffold_templatesObject



36
37
38
39
# File 'lib/generators/rockstart/authorization/pundit/pundit_generator.rb', line 36

def add_scaffold_templates
  copy_file "scaffold/policy.rb.tt", "lib/templates/pundit/policy/policy.rb"
  copy_file "scaffold/policy_spec.rb.tt", "lib/templates/rspec/policy/policy_spec.rb"
end