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



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

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

#append_assetsObject



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

def append_assets
  append_file "app/assets/javascripts/application.js", "//= require decidim"
  gsub_file "app/assets/javascripts/application.js", %r{//= require turbolinks\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



40
41
42
43
44
# File 'lib/generators/decidim/install_generator.rb', line 40

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



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

def copy_migrations
  rake "railties:install:migrations"
  recreate_db if options[:recreate_db]
  rake "db:migrate" if options[:migrate]
end

#installObject



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

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

#letter_opener_webObject



96
97
98
99
100
101
102
103
# File 'lib/generators/decidim/install_generator.rb', line 96

def letter_opener_web
  inject_into_file "config/environments/development.rb",
                   after: "config.action_mailer.raise_delivery_errors = false" do
    %(

  config.action_mailer.delivery_method = :letter_opener_web)
  end
end

#remove_layoutObject



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

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

#secretsObject



46
47
48
# File 'lib/generators/decidim/install_generator.rb', line 46

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

#smtp_environmentObject



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
94
# File 'lib/generators/decidim/install_generator.rb', line 66

def smtp_environment
  inject_into_file "config/environments/production.rb",
                   after: "config.log_formatter = ::Logger::Formatter.new" do
    %(

  config.action_mailer.smtp_settings = {
    :address        => Rails.application.secrets.smtp_address,
    :port           => Rails.application.secrets.smtp_port,
    :authentication => Rails.application.secrets.smtp_authentication,
    :user_name      => Rails.application.secrets.smtp_username,
    :password       => Rails.application.secrets.smtp_password,
    :domain         => Rails.application.secrets.smtp_domain,
    :enable_starttls_auto => Rails.application.secrets.smtp_starttls_auto,
    :openssl_verify_mode => 'none'
  }

  if Rails.application.secrets.sendgrid
    config.action_mailer.default_options = {
"X-SMTPAPI" => {
  filters:  {
    clicktrack: { settings: { enable: 0 } },
    opentrack:  { settings: { enable: 0 } }
  }
}.to_json
    }
  end
    )
  end
end