class Decidim::Generators::AppGenerator
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.
Public Instance Methods
add_ignore_uploads()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 148 def add_ignore_uploads append_file ".gitignore", "\n# Ignore public uploads\npublic/uploads" unless options["skip_git"] end
budgets_workflows()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 177 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_yml()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 85 def cable_yml template "cable.yml.erb", "config/cable.yml", force: true end
database_yml()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 68 def database_yml template "database.yml.erb", "config/database.yml", force: true end
decidim_controller()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 72 def decidim_controller template "decidim_controller.rb.erb", "app/controllers/decidim_controller.rb", force: true end
decidim_initializer()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 157 def decidim_initializer copy_file "initializer.rb", "config/initializers/decidim.rb" end
docker()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 76 def docker template "Dockerfile.erb", "Dockerfile" template "docker-compose.yml.erb", "docker-compose.yml" end
etherpad()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 81 def etherpad template "docker-compose-etherpad.yml", "docker-compose-etherpad.yml" end
gemfile()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 97 def gemfile return if options[:skip_gemfile] copy_file target_gemfile, "Gemfile", force: true copy_file "#{target_gemfile}.lock", "Gemfile.lock", force: true gem_modifier = if options[:path] "path: \"#{options[:path]}\"" elsif options[:edge] "git: \"https://github.com/decidim/decidim.git\", branch: \"develop\"" elsif options[:branch] "git: \"https://github.com/decidim/decidim.git\", branch: \"#{options[:branch]}\"" else "\"#{Decidim::Generators.version}\"" 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
install()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 210 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
license()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 93 def license template "LICENSE-AGPLv3.txt", "LICENSE-AGPLv3.txt" end
machine_translation_service()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 202 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_service()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 194 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
readme()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 89 def readme template "README.md.erb", "README.md", force: true end
remove_default_error_pages()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 152 def remove_default_error_pages remove_file "public/404.html" remove_file "public/500.html" end
sms_gateway()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 169 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_paths()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 19 def source_paths [ self.class.source_root, Rails::Generators::AppGenerator.source_root ] end
timestamp_service()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 186 def timestamp_service return unless options[:demo] gsub_file "config/initializers/decidim.rb", /# config.timestamp_service = "MyTimestampService"/, "config.timestamp_service = \"Decidim::Initiatives::DummyTimestamp\"" end
tweak_bootsnap()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 130 def tweak_bootsnap gsub_file "config/boot.rb", %r{require 'bootsnap/setup'.*$}, <<~RUBY.rstrip require "bootsnap" env = ENV["RAILS_ENV"] || "development" Bootsnap.setup( cache_dir: File.expand_path(File.join("..", "tmp", "cache"), __dir__), development_mode: env == "development", load_path_cache: true, autoload_paths_cache: true, disable_trace: false, compile_cache_iseq: !ENV["SIMPLECOV"], compile_cache_yaml: true ) RUBY end
Private Instance Methods
app_const_base()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 228 def app_const_base app_name.gsub(/\W/, "_").squeeze("_").camelize end
app_name()
click to toggle source
Calls superclass method
# File lib/decidim/generators/app_generator.rb, line 224 def app_name options[:app_name] || super end
current_gem()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 232 def current_gem return "decidim" unless options[:path] @current_gem ||= File.read(gemspec).match(/name\s*=\s*['"](?<name>.*)["']/)[:name] end
expanded_path()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 252 def expanded_path File.expand_path(options[:path]) end
gemspec()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 238 def gemspec File.expand_path(Dir.glob("*.gemspec", base: expanded_path).first, expanded_path) end
root_path()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 256 def root_path File.expand_path(File.join("..", "..", ".."), __dir__) end
target_gemfile()
click to toggle source
# File lib/decidim/generators/app_generator.rb, line 242 def target_gemfile root = if options[:path] expanded_path else root_path end File.join(root, "Gemfile") end