Class: Cardboard::Generators::InstallGenerator

Inherits:
ActiveRecord::Generators::Base
  • Object
show all
Defined in:
lib/generators/cardboard/install/install_generator.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.source_rootObject



12
13
14
# File 'lib/generators/cardboard/install/install_generator.rb', line 12

def self.source_root
  @_cardboard_source_root ||= File.expand_path("../templates", __FILE__)
end

Instance Method Details

#copy_initializerObject



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
42
43
44
# File 'lib/generators/cardboard/install/install_generator.rb', line 16

def copy_initializer
  if generating?
    @site_title = ask("What is the site name? [#{@name}]").presence || @name

    @user_class = options["user-class"].presence ||
                  ask("What is your user class called? [AdminUser]").presence ||
                  'AdminUser'
    user_class_underscore = @user_class.underscore
    #TODO: check that this class really exists
    @current_user_helper = "current_#{user_class_underscore}"
    @authentication_method = "authenticate_#{user_class_underscore}!"
    @logout_link_path = "destroy_#{user_class_underscore}_session_path"

    unless defined?(Devise)
      @current_user_helper = ask("What is the current_user helper called in your app? [#{@current_user_helper}]").presence || @current_user_helper
      @authentication_method = ask("What is the authenticate! helper called in your app? [#{@authentication_method}]").presence || @authentication_method
      @logout_link_path = ask("What is the signout link of your app [#{@logout_link_path}]?").presence || @logout_link_path
    end
  end

  path = "#{Rails.root}/config/initializers/cardboard.rb"
  # if File.exists?(path)
  #   p "Skipping config/initializers/cardboard.rb creation, as file already exists!"
  # else
    p "Adding cardboard initializer (config/initializers/cardboard.rb)..."
    template 'cardboard.rb.erb', path
    require path if File.exists?(path) # Load the configuration
  # end
end

#create_assetsObject



61
62
63
64
# File 'lib/generators/cardboard/install/install_generator.rb', line 61

def create_assets
  p "Generating cardboard assets..."
  generate "cardboard:assets"
end

#install_migrationsObject



66
67
68
69
70
71
# File 'lib/generators/cardboard/install/install_generator.rb', line 66

def install_migrations
  puts "Copying over migrations..."
  Dir.chdir(Rails.root) do
    `rake cardboard:install:migrations`
  end
end

#setup_cardboard_yamlObject



46
47
48
49
# File 'lib/generators/cardboard/install/install_generator.rb', line 46

def setup_cardboard_yaml
  p "Generating a default config/cardboard.yml file..."
  copy_file 'cardboard.yml', 'config/cardboard.yml'
end

#setup_directoryObject



51
52
53
54
# File 'lib/generators/cardboard/install/install_generator.rb', line 51

def setup_directory
  empty_directory "app/controllers/cardboard"
  empty_directory "app/views/templates"
end

#setup_routesObject



56
57
58
59
# File 'lib/generators/cardboard/install/install_generator.rb', line 56

def setup_routes
  p "Mounting Cardboard::Engine at \"/cardboard\" in config/routes.rb..."
  inject_into_file "config/routes.rb", "  mount Cardboard::Engine => \"/cardboard\"\n", :after => /routes\.draw do\n/
end