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



95
96
97
98
99
# File 'lib/generators/decidim/app_generator.rb', line 95

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

#authorization_handlerObject



106
107
108
# File 'lib/generators/decidim/app_generator.rb', line 106

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

#cable_ymlObject



64
65
66
# File 'lib/generators/decidim/app_generator.rb', line 64

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

#database_ymlObject



51
52
53
# File 'lib/generators/decidim/app_generator.rb', line 51

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

#decidim_controllerObject



55
56
57
# File 'lib/generators/decidim/app_generator.rb', line 55

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

#dockerObject



59
60
61
62
# File 'lib/generators/decidim/app_generator.rb', line 59

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

#gemfileObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/generators/decidim/app_generator.rb', line 72

def gemfile
  path = File.expand_path(File.join("..", "..", "..", "Gemfile"), __dir__)

  template path, "Gemfile", force: true

  gem_modifier = if options[:path]
                   "path: \"#{options[:path]}\""
                 elsif options[:edge]
                   "git: \"https://github.com/decidim/decidim.git\""
                 elsif options[:branch]
                   "git: \"https://github.com/decidim/decidim.git\", branch: \"#{options[:branch]}\""
                 else
                   "\"#{Decidim.version}\""
                 end

  gsub_file "Gemfile", /gem "decidim([^"]*)".*/, "gem \"decidim\\1\", #{gem_modifier}"
end

#installObject



110
111
112
113
114
115
116
117
118
# File 'lib/generators/decidim/app_generator.rb', line 110

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

#readmeObject



68
69
70
# File 'lib/generators/decidim/app_generator.rb', line 68

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

#remove_default_error_pagesObject



101
102
103
104
# File 'lib/generators/decidim/app_generator.rb', line 101

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

#secret_tokenObject



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

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

#source_pathsObject



18
19
20
21
22
23
# File 'lib/generators/decidim/app_generator.rb', line 18

def source_paths
  [
    File.expand_path("templates", __dir__),
    Rails::Generators::AppGenerator.source_root
  ]
end