Class: Cambium::AdminGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/cambium/admin_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_admin_migrationObject

Generate a migration so we can keep users from accessing the admin if they don’t have permission



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/generators/cambium/admin_generator.rb', line 36

def add_admin_migration
  generate "migration add_is_admin_to_users" # is_admin:boolean"
  Dir.glob("#{Rails.root.join('db','migrate')}/*.rb").each do |file|
    filename = file.split('/').last
    if filename =~ /is\_admin/
      insert_into_file(
        "db/migrate/#{filename}",
        "\n    add_column :users, :is_admin, :boolean, :default => false",
        :after => "def change"
      )
    end
  end
end

#add_admin_routesObject

Add admin sidebar file to the project



58
59
60
61
62
# File 'lib/generators/cambium/admin_generator.rb', line 58

def add_admin_routes
  ['sidebar','users'].each do |file|
    template "config/admin/#{file}.yml", "config/admin/#{file}.yml"
  end
end

#add_css_overrideObject

Adds a manifest SCSS file to the project, so the developer can override any admin styles with creating a new layout



98
99
100
101
# File 'lib/generators/cambium/admin_generator.rb', line 98

def add_css_override
  file = "app/assets/stylesheets/admin/admin.scss"
  template(file, file)
end

#add_paper_trailObject

Add migration for paper_trail versions



66
67
68
69
70
71
72
73
74
# File 'lib/generators/cambium/admin_generator.rb', line 66

def add_paper_trail
  generate 'paper_trail:install'
  Dir.glob("#{Rails.root}/app/models/*.rb").each do |f|
    insert_into_file f.to_s, :after => "ActiveRecord::Base\n" do
      "  # ------------------------------------------ Plugins\n" +
      "  has_paper_trail\n"
    end
  end
end

#add_pg_searchObject

Add migration for pg_search



78
79
80
81
# File 'lib/generators/cambium/admin_generator.rb', line 78

def add_pg_search
  generate 'pg_search:migration:multisearch'
  help_message('pg_search_post_install')
end

#add_user_profileObject

Add another migration for user profile fields



52
53
54
# File 'lib/generators/cambium/admin_generator.rb', line 52

def 
  generate "migration add_user_profile_fields_to_users name:string"
end

#add_user_searchObject

Add pg_search to users



85
86
87
88
89
90
91
92
# File 'lib/generators/cambium/admin_generator.rb', line 85

def add_user_search
  insert_into_file(
    "#{Rails.root}/app/models/user.rb", :after => "---- Plugins\n"
  ) do
    "  include PgSearch\n" +
    "  multisearchable :against => [:name, :email]\n"
  end
end

#verify_configurationObject

If there is no configuration file tell the user to run that generator first (unless user has manually overridden).



24
25
26
27
28
29
30
31
# File 'lib/generators/cambium/admin_generator.rb', line 24

def verify_configuration
  if options.config_check?
    unless File.exists?("#{Rails.root}/config/initializers/cambium.rb")
      help_message('cambium_prereqs')
      exit
    end
  end
end