Class: Decidim::Generators::InstallGenerator

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

Overview

Installs ‘decidim` to a Rails app by adding the needed lines of code automatically to important files in the Rails app.

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_seedsObject



31
32
33
34
35
36
# File 'lib/generators/decidim/install_generator.rb', line 31

def add_seeds
  append_file("db/seeds.rb", "    # You can remove the 'faker' gem if you don't want Decidim seeds.\n    Decidim.seed!\n  SEEDS_CONTENT\nend\n")

#append_assetsObject



53
54
55
56
57
58
59
60
61
62
63
# File 'lib/generators/decidim/install_generator.rb', line 53

def append_assets
  append_file "app/assets/javascripts/application.js", "//= require decidim"
  gsub_file "app/assets/javascripts/application.js", %r{//= require turbolinks\n}, ""
  gsub_file "app/assets/javascripts/application.js", %r{//= require rails-ujs\n}, "//= require jquery\n//= require jquery_ujs\n"
  inject_into_file "app/assets/stylesheets/application.css",
                   before: "*= require_tree ." do
    "*= require decidim\n "
  end

  template "decidim.scss.erb", "app/assets/stylesheets/decidim.scss", force: true
end

#copy_initializerObject



38
39
40
41
42
# File 'lib/generators/decidim/install_generator.rb', line 38

def copy_initializer
  template "initializer.rb", "config/initializers/decidim.rb"
  template "carrierwave.rb", "config/initializers/carrierwave.rb"
  template "social_share_button.rb", "config/initializers/social_share_button.rb"
end

#copy_migrationsObject



26
27
28
29
# File 'lib/generators/decidim/install_generator.rb', line 26

def copy_migrations
  rails_command "railties:install:migrations"
  recreate_db if options[:recreate_db]
end

#installObject



22
23
24
# File 'lib/generators/decidim/install_generator.rb', line 22

def install
  route "mount Decidim::Core::Engine => '/'"
end

#letter_opener_webObject



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# File 'lib/generators/decidim/install_generator.rb', line 95

def letter_opener_web
  route "    |\n    |  if Rails.env.development?\n    |   mount LetterOpenerWeb::Engine, at: \"/letter_opener\"\n    |  end\n  RUBY\n\n  inject_into_file \"config/environments/development.rb\",\n                   after: \"config.action_mailer.raise_delivery_errors = false\" do\n    <<~RUBY.gsub(/^ *\\|/, \"\")\n      |\n      |  config.action_mailer.delivery_method = :letter_opener_web\n    RUBY\n  end\nend\n".gsub(/^ *\|/, "")

#remove_layoutObject



48
49
50
51
# File 'lib/generators/decidim/install_generator.rb', line 48

def remove_layout
  remove_file "app/views/layouts/application.html.erb"
  remove_file "app/views/layouts/mailer.text.erb"
end

#secretsObject



44
45
46
# File 'lib/generators/decidim/install_generator.rb', line 44

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

#smtp_environmentObject



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/generators/decidim/install_generator.rb', line 65

def smtp_environment
  inject_into_file "config/environments/production.rb",
                   after: "config.log_formatter = ::Logger::Formatter.new" do
    "      |\n      |  config.action_mailer.smtp_settings = {\n      |    :address        => Rails.application.secrets.smtp_address,\n      |    :port           => Rails.application.secrets.smtp_port,\n      |    :authentication => Rails.application.secrets.smtp_authentication,\n      |    :user_name      => Rails.application.secrets.smtp_username,\n      |    :password       => Rails.application.secrets.smtp_password,\n      |    :domain         => Rails.application.secrets.smtp_domain,\n      |    :enable_starttls_auto => Rails.application.secrets.smtp_starttls_auto,\n      |    :openssl_verify_mode => 'none'\n      |  }\n      |\n      |  if Rails.application.secrets.sendgrid\n      |    config.action_mailer.default_options = {\n      |      \"X-SMTPAPI\" => {\n      |        filters:  {\n      |          clicktrack: { settings: { enable: 0 } },\n      |          opentrack:  { settings: { enable: 0 } }\n      |        }\n      |      }.to_json\n      |    }\n      |  end\n    RUBY\n  end\nend\n".gsub(/^ *\|/, "")