generated from justalever/kickoff_tailwind
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtemplate.rb
116 lines (92 loc) · 2.59 KB
/
template.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
=begin
Template Name: Kickoff - Tailwind CSS
Author: Andy Leverenz
Author URI: https://web-crunch.com
Instructions: $ rails new myapp -d <postgresql, mysql, sqlite3> -m template.rb
=end
def source_paths
[File.expand_path(File.dirname(__FILE__))]
end
def add_gems
gem 'devise', '~> 4.8', '>= 4.8.1'
gem 'friendly_id', '~> 5.4', '>= 5.4.2'
gem 'cssbundling-rails'
gem 'name_of_person'
gem 'sidekiq', '~> 6.5', '>= 6.5.4'
gem 'stripe'
end
def add_tailwind
rails_command "css:install:tailwind"
# remove tailwind config that gets installed and swap for custom config
remove_file "tailwind.config.js"
end
def add_storage_and_rich_text
rails_command "active_storage:install"
rails_command "action_text:install"
end
def add_users
# Install Devise
generate "devise:install"
# Configure Devise
environment "config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }",
env: 'development'
route "root to: 'home#index'"
# Create Devise User
generate :devise, "User", "first_name", "last_name", "admin:boolean"
# set admin boolean to false by default
in_root do
migration = Dir.glob("db/migrate/*").max_by{ |f| File.mtime(f) }
gsub_file migration, /:admin/, ":admin, default: false"
end
# name_of_person gem
append_to_file("app/models/user.rb", "\nhas_person_name\n", after: "class User < ApplicationRecord")
end
def copy_templates
directory "app", force: true
directory "lib", force: true
end
def add_sidekiq
environment "config.active_job.queue_adapter = :sidekiq"
insert_into_file "config/routes.rb",
"require 'sidekiq/web'\n\n",
before: "Rails.application.routes.draw do"
content = <<-RUBY
authenticate :user, lambda { |u| u.admin? } do
mount Sidekiq::Web => '/sidekiq'
end
RUBY
insert_into_file "config/routes.rb", "#{content}\n\n", after: "Rails.application.routes.draw do\n"
end
def add_friendly_id
generate "friendly_id"
end
def add_tailwind_plugins
run "yarn add -D @tailwindcss/typography @tailwindcss/forms @tailwindcss/aspect-ratio @tailwindcss/line-clamp"
copy_file "tailwind.config.js"
end
# Main setup
source_paths
add_gems
after_bundle do
add_tailwind
add_tailwind_plugins
add_storage_and_rich_text
add_users
add_sidekiq
copy_templates
add_friendly_id
# Migrate
rails_command "db:create"
rails_command "db:migrate"
git :init
git add: "."
git commit: %Q{ -m "Initial commit" }
say
say "Kickoff app successfully created! 👍", :green
say
say "Switch to your app by running:"
say "$ cd #{app_name}", :yellow
say
say "Then run:"
say "$ ./bin/dev", :green
end