Class: Saaskit::Generators::InstallGenerator

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

Instance Method Summary collapse

Instance Method Details

#add_gems_to_gemfileObject



8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/generators/saaskit/install/install_generator.rb', line 8

def add_gems_to_gemfile
  gem 'meta-tags', '~> 2.11', '>= 2.11.1'
  gem 'gibbon', '~> 3.2'

  gem_group :development, :test do
    gem 'standard', '~> 0.0.40'
  end

  gem_group :development do
    gem 'eefgilm', '~> 1.2', '>= 1.2.1'
  end
end

#bundle_installObject



21
22
23
24
25
# File 'lib/generators/saaskit/install/install_generator.rb', line 21

def bundle_install
  Bundler.with_clean_env do
    run "bundle install"
  end
end

#copy_credentials_sampleObject



31
32
33
# File 'lib/generators/saaskit/install/install_generator.rb', line 31

def copy_credentials_sample
  copy_file "config/credentials.yml.sample"
end

#create_and_migrate_dbObject



146
147
148
149
# File 'lib/generators/saaskit/install/install_generator.rb', line 146

def create_and_migrate_db
  rails_command "db:create"
  rails_command "db:migrate"
end

#create_application_controllerObject



132
133
134
# File 'lib/generators/saaskit/install/install_generator.rb', line 132

def create_application_controller
  copy_file "app/controllers/application_controller.rb", force: true
end

#create_application_helpersObject



123
124
125
# File 'lib/generators/saaskit/install/install_generator.rb', line 123

def create_application_helpers
  copy_file "app/helpers/application_helper.rb", force: true
end

#display_readme_in_terminalObject



155
156
157
# File 'lib/generators/saaskit/install/install_generator.rb', line 155

def display_readme_in_terminal
  readme "README"
end

#enable_require_master_key_in_productionObject



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

def enable_require_master_key_in_production
  uncomment_lines "config/environments/production.rb",
                  /config.require_master_key = true/
end

#import_third_party_css_into_assets_pipelineObject



105
106
107
108
# File 'lib/generators/saaskit/install/install_generator.rb', line 105

def import_third_party_css_into_assets_pipeline
  remove_file "app/assets/stylesheets/application.css"
  copy_file "app/assets/stylesheets/application.scss"
end

#install_application_shared_and_layoutsObject



118
119
120
121
# File 'lib/generators/saaskit/install/install_generator.rb', line 118

def install_application_shared_and_layouts
  directory "app/views/shared"
  directory "app/views/layouts", force: true
end

#install_imagesObject



110
111
112
113
114
115
116
# File 'lib/generators/saaskit/install/install_generator.rb', line 110

def install_images
  gsub_file "app/javascript/packs/application.js",
            /\/\/ const images/, "const images"
  gsub_file "app/javascript/packs/application.js",
            /\/\/ const imagePath/, "const imagePath"
  directory "app/javascript/images"
end

#install_meta_tagsObject



127
128
129
130
# File 'lib/generators/saaskit/install/install_generator.rb', line 127

def install_meta_tags
  copy_file "config/initializers/meta_tags.rb"
  copy_file "app/helpers/meta_tags_helper.rb"
end

#install_pagesObject



136
137
138
139
140
141
142
143
144
# File 'lib/generators/saaskit/install/install_generator.rb', line 136

def install_pages
  copy_file "app/forms/newsletter_form.rb"
  copy_file "app/adapters/mailchimp/base_adapter.rb"
  copy_file "app/models/concerns/coming_soon_pending_subscribable.rb"
  directory "app/views/pages"
  copy_file "app/controllers/pages_controller.rb"
  route "root to: 'pages#home'"
  route "post '/subscribe', to: 'pages#subscribe'"
end

#install_purgecssObject



77
78
79
80
81
82
83
84
85
86
87
# File 'lib/generators/saaskit/install/install_generator.rb', line 77

def install_purgecss
  run "yarn add glob-all"
  run "yarn add path"
  run "yarn add purgecss-webpack-plugin"
  copy_file "config/webpack/plugins/purgecss-webpack-plugin.js"
  insert_into_file "config/webpack/production.js", after: "const environment = require('./environment')\n" do
    "      environment.plugins.append('PurgecssWebpackPlugin', require('./plugins/purgecss-webpack-plugin'))\n    CODE\n  end\nend\n"

#install_stimulusObject



40
41
42
43
44
45
46
47
48
49
50
# File 'lib/generators/saaskit/install/install_generator.rb', line 40

def install_stimulus
  run "yarn add stimulus"
  copy_file "app/javascript/controllers/index.js"
  insert_into_file "app/javascript/packs/application.js", after: "require(\"channels\")\n" do
    "      // Tell webpacker to require stimulus\n      require(\"stimulus\")\n      import 'controllers'\n    CODE\n  end\nend\n"

#install_stimulus_controllersObject



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

def install_stimulus_controllers
  copy_file "app/javascript/controllers/notice_controller.js"
  copy_file "app/javascript/controllers/typed_controller.js"
  copy_file "app/javascript/controllers/reveal_controller.js"
  copy_file "app/javascript/controllers/smooth_scroll_controller.js"
  copy_file "app/javascript/controllers/aos_controller.js"
  copy_file "app/javascript/controllers/noty_controller.js"
end

#install_tailwindcssObject



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/generators/saaskit/install/install_generator.rb', line 52

def install_tailwindcss
  run "yarn add tailwindcss"
  run "yarn add tailwindcss-transitions"
  run "yarn add tailwindcss-gradients"
  run "yarn add tailwindcss-pseudo"
  copy_file "app/javascript/stylesheets/application.scss"
  append_to_file "app/javascript/packs/application.js" do
    "      require(\"stylesheets/application.scss\")\n    CODE\n  end\n  insert_into_file \"app/views/layouts/application.html.erb\", after: \"<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>\\n\" do\n    <<~CODE\n      <%= stylesheet_pack_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>\n    CODE\n  end\n  copy_file \"app/javascript/stylesheets/tailwind.config.js\"\n  insert_into_file \"postcss.config.js\", after: \"plugins: [\\n\" do\n    <<~CODE\n      require('tailwindcss')('./app/javascript/stylesheets/tailwind.config.js'),\n      require('autoprefixer'),\n    CODE\n  end\nend\n"

#install_third_party_packagesObject



89
90
91
92
93
94
# File 'lib/generators/saaskit/install/install_generator.rb', line 89

def install_third_party_packages
  run "yarn add typed.js"
  run "yarn add smooth-scroll"
  run "yarn add aos@next"
  run "yarn add noty"
end

#organizing_gemfileObject



27
28
29
# File 'lib/generators/saaskit/install/install_generator.rb', line 27

def organizing_gemfile
  run "eefgilm"
end

#tidy_up_codebaseObject



151
152
153
# File 'lib/generators/saaskit/install/install_generator.rb', line 151

def tidy_up_codebase
  run "bundle exec standardrb --fix"
end