Class: Decidim::Generators::AppGenerator

Inherits:
Rails::Generators::AppGenerator
  • Object
show all
Defined in:
lib/generators/decidim/app_generator.rb

Overview

Generates a Rails app and installs decidim to it. Uses the default Rails generator for most of the work.

Remember that, for how generators work, actions are executed based on the definition order of the public methods.

Instance Method Summary collapse

Instance Method Details

#add_ignore_uploadsObject



91
92
93
94
95
# File 'lib/generators/decidim/app_generator.rb', line 91

def add_ignore_uploads
  unless options["skip_git"]
    append_file ".gitignore", "\n# Ignore public uploads\npublic/uploads"
  end
end

#app_const_baseObject



87
88
89
# File 'lib/generators/decidim/app_generator.rb', line 87

def app_const_base
  options["app_const_base"] || super
end

#authorization_handlerObject



108
109
110
# File 'lib/generators/decidim/app_generator.rb', line 108

def authorization_handler
  template "authorization_handler.rb", "app/services/example_authorization_handler.rb", force: true
end

#cable_ymlObject



66
67
68
# File 'lib/generators/decidim/app_generator.rb', line 66

def cable_yml
  template "cable.yml.erb", "config/cable.yml", force: true
end

#database_ymlObject



53
54
55
# File 'lib/generators/decidim/app_generator.rb', line 53

def database_yml
  template "database.yml.erb", "config/database.yml", force: true
end

#decidim_controllerObject



57
58
59
# File 'lib/generators/decidim/app_generator.rb', line 57

def decidim_controller
  template "decidim_controller.rb.erb", "app/controllers/decidim_controller.rb", force: true
end

#dockerObject



61
62
63
64
# File 'lib/generators/decidim/app_generator.rb', line 61

def docker
  template "Dockerfile.erb", "Dockerfile"
  template "docker-compose.yml.erb", "docker-compose.yml"
end

#installObject



79
80
81
82
83
84
85
# File 'lib/generators/decidim/app_generator.rb', line 79

def install
  Decidim::Generators::InstallGenerator.start [
    "--recreate_db=#{options[:recreate_db]}",
    "--migrate=#{options[:migrate]}",
    "--app_name=#{app_name}"
  ]
end

#readmeObject



70
71
72
# File 'lib/generators/decidim/app_generator.rb', line 70

def readme
  template "README.md.erb", "README.md", force: true
end

#remove_default_error_pagesObject



103
104
105
106
# File 'lib/generators/decidim/app_generator.rb', line 103

def remove_default_error_pages
  remove_file "public/404.html"
  remove_file "public/500.html"
end

#secret_tokenObject



74
75
76
77
# File 'lib/generators/decidim/app_generator.rb', line 74

def secret_token
  require "securerandom"
  SecureRandom.hex(64)
end

#set_localesObject



97
98
99
100
101
# File 'lib/generators/decidim/app_generator.rb', line 97

def set_locales
  inject_into_file "config/application.rb", after: "class Application < Rails::Application" do
    "\n    config.i18n.available_locales = %w(en ca es)\n    config.i18n.default_locale = :en"
  end
end

#source_pathsObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/generators/decidim/app_generator.rb', line 21

def source_paths
  [
    File.expand_path("templates", __dir__),
    File.expand_path(File.join(Gem::Specification
                                            .find_by_name("railties").gem_dir,
                               "lib", "rails", "generators", "rails",
                               "app", "templates"))

  ]
end