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



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

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  RUBY\nend\n"

#append_assetsObject



49
50
51
52
53
54
55
56
57
58
# File 'lib/generators/decidim/install_generator.rb', line 49

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

#configure_js_compressorObject



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

def configure_js_compressor
  gsub_file "config/environments/production.rb", "config.assets.js_compressor = :uglifier", "config.assets.js_compressor = Uglifier.new(:harmony => true)"
end

#copy_initializerObject



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

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

#copy_migrationsObject



83
84
85
86
# File 'lib/generators/decidim/install_generator.rb', line 83

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

#installObject



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

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

#letter_opener_webObject



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/generators/decidim/install_generator.rb', line 88

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      |  config.action_mailer.default_url_options = { port: 3000 }\n    RUBY\n  end\nend\n".gsub(/^ *\|/, "")

#remove_layoutObject



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

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

#secretsObject



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

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

#smtp_environmentObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/generators/decidim/install_generator.rb', line 64

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    RUBY\n  end\nend\n".gsub(/^ *\|/, "")