Class: IAmICan::Generators::SetupGenerator
- Inherits:
-
Rails::Generators::NamedBase
- Object
- Rails::Generators::NamedBase
- IAmICan::Generators::SetupGenerator
- Includes:
- Rails::Generators::Migration
- Defined in:
- lib/generators/i_am_i_can/setup_generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #group_c ⇒ Object
- #group_pms_tb ⇒ Object
- #group_role_tb ⇒ Object
- #group_u ⇒ Object
- #group_up ⇒ Object
- #name_c ⇒ Object
- #name_u ⇒ Object
- #name_up ⇒ Object
- #permission_c ⇒ Object
- #permission_u ⇒ Object
- #permission_up ⇒ Object
-
#questions ⇒ Object
TODO: more readable tips.
- #role_c ⇒ Object
- #role_pms_tb ⇒ Object
- #role_u ⇒ Object
- #role_up ⇒ Object
- #setup_initializer ⇒ Object
- #setup_migrations ⇒ Object
- #setup_models ⇒ Object
- #subj_role_tb ⇒ Object
- #tips ⇒ Object
Class Method Details
.next_migration_number(dirname) ⇒ Object
67 68 69 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 67 def self.next_migration_number(dirname) ActiveRecord::Generators::Base.next_migration_number(dirname) end |
Instance Method Details
#group_c ⇒ Object
79 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 79 def group_c; @ii_opts[:role_group_class] end |
#group_pms_tb ⇒ Object
90 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 90 def group_pms_tb; group_up + '_and_' + end |
#group_role_tb ⇒ Object
88 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 88 def group_role_tb; group_up + '_and_' + role_up end |
#group_u ⇒ Object
80 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 80 def group_u; @ii_opts[:role_group_class]&.underscore end |
#group_up ⇒ Object
81 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 81 def group_up; @ii_opts[:role_group_class]&.underscore&.pluralize end |
#name_c ⇒ Object
71 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 71 def name_c; name.camelize end |
#name_u ⇒ Object
72 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 72 def name_u; name.underscore end |
#name_up ⇒ Object
73 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 73 def name_up; name_u.pluralize end |
#permission_c ⇒ Object
83 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 83 def ; @ii_opts[:permission_class] end |
#permission_u ⇒ Object
84 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 84 def ; @ii_opts[:permission_class].underscore end |
#permission_up ⇒ Object
85 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 85 def ; @ii_opts[:permission_class].underscore.pluralize end |
#questions ⇒ Object
TODO: more readable tips
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 16 def questions @ii_opts = { } role_class = ask("Do you want to change the class name of the role model (defaults to [#{name_c}Role])? Press Enter or input your name:") @ii_opts[:role_class] = role_class.blank? ? "#{name_c}Role" : role_class pms_class = ask("Do you want to change the class name of the permission model (defaults to [#{name_c}Permission])? Press Enter or input your name:") @ii_opts[:permission_class] = pms_class.blank? ? "#{name_c}Permission" : pms_class if yes?('Do you want to use role group? y (default) / n') group_class = ask("Do you want to change the class name of the role_group model (defaults to [#{name_c}RoleGroup])? Press Enter or input your name:") @ii_opts[:role_group_class] = group_class.blank? ? "#{name_c}RoleGroup" : group_class else @ii_opts[:without_group] = true end unless yes?('Do yo want it to save role and permission to database by default? y (default) / n') @ii_opts[:default_save] = false end # if @ii_opts[:default_save] != false && yes?('Don\'t you need **local** definition and assignment feature? y / n (default)') # TODO # end if yes?('Do you want it to raise error when you are doing wrong definition or assignment? y / n (default)') @ii_opts[:strict_mode] = true end if yes?('Do you want it to auto define the role/permission which is not defined when assigning to subject? y / n (default)') @ii_opts[:auto_define_before] = true end end |
#role_c ⇒ Object
75 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 75 def role_c; @ii_opts[:role_class] end |
#role_pms_tb ⇒ Object
89 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 89 def role_pms_tb; role_up + '_and_' + end |
#role_u ⇒ Object
76 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 76 def role_u; @ii_opts[:role_class].underscore end |
#role_up ⇒ Object
77 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 77 def role_up; @ii_opts[:role_class].underscore.pluralize end |
#setup_initializer ⇒ Object
47 48 49 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 47 def setup_initializer template 'initializers/i_am_i_can.erb', "config/initializers/#{name_u}_am_#{name_u}_can.rb" end |
#setup_migrations ⇒ Object
43 44 45 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 43 def setup_migrations migration_template 'migrations/i_am_i_can.erb', "db/migrate/#{name_u}_am_#{name_u}_can.rb" end |
#setup_models ⇒ Object
51 52 53 54 55 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 51 def setup_models template 'models/role.erb', "app/models/#{role_u}.rb" template 'models/role_group.erb', "app/models/#{group_u}.rb" unless @ii_opts[:without_group] template 'models/permission.erb', "app/models/#{}.rb" end |
#subj_role_tb ⇒ Object
87 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 87 def subj_role_tb; name_up + '_and_' + role_up end |
#tips ⇒ Object
57 58 59 60 61 62 63 64 65 |
# File 'lib/generators/i_am_i_can/setup_generator.rb', line 57 def tips puts " Add the code below to #{name_c}:".green puts <<~TIPS has_and_belongs_to_many :stored_roles, join_table: '#{subj_role_tb}', foreign_key: '#{role_u}_id', class_name: '#{role_c}', association_foreign_key: '#{name_u}_id' act_as_subject TIPS end |