Class: Decidim::Generators::AppGenerator

Inherits:
Rails::Generators::AppGenerator
  • Object
show all
Defined in:
lib/decidim/generators/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



133
134
135
# File 'lib/decidim/generators/app_generator.rb', line 133

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

#authorization_handlerObject



152
153
154
155
156
157
158
# File 'lib/decidim/generators/app_generator.rb', line 152

def authorization_handler
  return unless options[:demo]

  copy_file "dummy_authorization_handler.rb", "app/services/dummy_authorization_handler.rb"
  copy_file "another_dummy_authorization_handler.rb", "app/services/another_dummy_authorization_handler.rb"
  copy_file "verifications_initializer.rb", "config/initializers/decidim_verifications.rb"
end

#budgets_workflowsObject



168
169
170
171
172
173
174
175
# File 'lib/decidim/generators/app_generator.rb', line 168

def budgets_workflows
  return unless options[:demo]

  copy_file "budgets_workflow_random.rb", "lib/budgets_workflow_random.rb"
  copy_file "budgets_workflow_random.en.yml", "config/locales/budgets_workflow_random.en.yml"

  copy_file "budgets_initializer.rb", "config/initializers/decidim_budgets.rb"
end

#cable_ymlObject



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

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

#database_ymlObject



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

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

#decidim_controllerObject



80
81
82
# File 'lib/decidim/generators/app_generator.rb', line 80

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

#decidim_initializerObject



142
143
144
145
146
147
148
149
150
# File 'lib/decidim/generators/app_generator.rb', line 142

def decidim_initializer
  copy_file "initializer.rb", "config/initializers/decidim.rb"

  if options[:force_ssl] == "false"
    gsub_file "config/initializers/decidim.rb",
              /# config.force_ssl = true/,
              "config.force_ssl = false"
  end
end

#dockerObject



84
85
86
87
# File 'lib/decidim/generators/app_generator.rb', line 84

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

#etherpadObject



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

def etherpad
  template "docker-compose-etherpad.yml", "docker-compose-etherpad.yml"
end

#gemfileObject



105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/decidim/generators/app_generator.rb', line 105

def gemfile
  return if options[:skip_gemfile]

  if branch.present?
    get target_gemfile, "Gemfile", force: true
    get "#{target_gemfile}.lock", "Gemfile.lock", force: true
  else
    copy_file target_gemfile, "Gemfile", force: true
    copy_file "#{target_gemfile}.lock", "Gemfile.lock", force: true
  end

  gsub_file "Gemfile", /gem "#{current_gem}".*/, "gem \"#{current_gem}\", #{gem_modifier}"

  if current_gem == "decidim"
    gsub_file "Gemfile", /gem "decidim-dev".*/, "gem \"decidim-dev\", #{gem_modifier}"

    %w(conferences consultations elections initiatives templates).each do |component|
      if options[:demo]
        gsub_file "Gemfile", /gem "decidim-#{component}".*/, "gem \"decidim-#{component}\", #{gem_modifier}"
      else
        gsub_file "Gemfile", /gem "decidim-#{component}".*/, "# gem \"decidim-#{component}\", #{gem_modifier}"
      end
    end
  end

  run "bundle install"
end

#installObject



201
202
203
204
205
206
207
208
209
210
211
# File 'lib/decidim/generators/app_generator.rb', line 201

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

#licenseObject



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

def license
  template "LICENSE-AGPLv3.txt", "LICENSE-AGPLv3.txt"
end

#machine_translation_serviceObject



193
194
195
196
197
198
199
# File 'lib/decidim/generators/app_generator.rb', line 193

def machine_translation_service
  return unless options[:demo]

  gsub_file "config/initializers/decidim.rb",
            /# config.machine_translation_service = "MyTranslationService"/,
            "config.machine_translation_service = 'Decidim::Dev::DummyTranslator'"
end

#pdf_signature_serviceObject



185
186
187
188
189
190
191
# File 'lib/decidim/generators/app_generator.rb', line 185

def pdf_signature_service
  return unless options[:demo]

  gsub_file "config/initializers/decidim.rb",
            /# config.pdf_signature_service = "MyPDFSignatureService"/,
            "config.pdf_signature_service = \"Decidim::Initiatives::PdfSignatureExample\""
end

#readmeObject



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

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

#remove_default_error_pagesObject



137
138
139
140
# File 'lib/decidim/generators/app_generator.rb', line 137

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

#sms_gatewayObject



160
161
162
163
164
165
166
# File 'lib/decidim/generators/app_generator.rb', line 160

def sms_gateway
  return unless options[:demo]

  gsub_file "config/initializers/decidim.rb",
            /# config.sms_gateway_service = "MySMSGatewayService"/,
            "config.sms_gateway_service = 'Decidim::Verifications::Sms::ExampleGateway'"
end

#source_pathsObject



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

def source_paths
  [
    self.class.source_root,
    Rails::Generators::AppGenerator.source_root
  ]
end

#timestamp_serviceObject



177
178
179
180
181
182
183
# File 'lib/decidim/generators/app_generator.rb', line 177

def timestamp_service
  return unless options[:demo]

  gsub_file "config/initializers/decidim.rb",
            /# config.timestamp_service = "MyTimestampService"/,
            "config.timestamp_service = \"Decidim::Initiatives::DummyTimestamp\""
end