schienenzeppelin 0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.github/workflows/main.yml +17 -0
- data/.github/workflows/outdated.yml +20 -0
- data/.gitignore +282 -0
- data/.rspec_status +3 -0
- data/.rubocop.yml +28 -0
- data/.tool-versions +1 -0
- data/CODE_OF_CONDUCT.md +84 -0
- data/GALLERY.md +29 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +184 -0
- data/LICENSE +21 -0
- data/LICENSE.txt +21 -0
- data/README.md +174 -0
- data/Rakefile +12 -0
- data/TODO.md +32 -0
- data/bin/console +15 -0
- data/bin/setup +8 -0
- data/exe/sz +25 -0
- data/images/create.png +0 -0
- data/images/error.png +0 -0
- data/images/home.png +0 -0
- data/images/index.png +0 -0
- data/images/login.png +0 -0
- data/images/mobile.png +0 -0
- data/lib/schienenzeppelin.rb +18 -0
- data/lib/schienenzeppelin/app_builder.rb +88 -0
- data/lib/schienenzeppelin/app_generator.rb +95 -0
- data/lib/schienenzeppelin/helper_base.rb +28 -0
- data/lib/schienenzeppelin/helpers/annotate.rb +11 -0
- data/lib/schienenzeppelin/helpers/capistrano.rb +35 -0
- data/lib/schienenzeppelin/helpers/continuous_integration.rb +12 -0
- data/lib/schienenzeppelin/helpers/credentials.rb +49 -0
- data/lib/schienenzeppelin/helpers/devise.rb +45 -0
- data/lib/schienenzeppelin/helpers/errors.rb +67 -0
- data/lib/schienenzeppelin/helpers/factory_bot.rb +13 -0
- data/lib/schienenzeppelin/helpers/generators.rb +26 -0
- data/lib/schienenzeppelin/helpers/high_voltage.rb +11 -0
- data/lib/schienenzeppelin/helpers/home.rb +17 -0
- data/lib/schienenzeppelin/helpers/hotwire.rb +11 -0
- data/lib/schienenzeppelin/helpers/pundit.rb +12 -0
- data/lib/schienenzeppelin/helpers/rspec.rb +13 -0
- data/lib/schienenzeppelin/helpers/rubocop.rb +11 -0
- data/lib/schienenzeppelin/helpers/scaffold.rb +11 -0
- data/lib/schienenzeppelin/helpers/services.rb +11 -0
- data/lib/schienenzeppelin/helpers/sidekiq.rb +13 -0
- data/lib/schienenzeppelin/helpers/stimulus.rb +11 -0
- data/lib/schienenzeppelin/helpers/stimulus_components.rb +29 -0
- data/lib/schienenzeppelin/helpers/tailwind.rb +18 -0
- data/lib/schienenzeppelin/version.rb +7 -0
- data/schienenzeppelin.gemspec +37 -0
- data/schienenzeppelin.jpg +0 -0
- data/script.md +104 -0
- data/templates/.dockerignore.erb +51 -0
- data/templates/.entrypoint.sh.erb +16 -0
- data/templates/.env.development.erb +3 -0
- data/templates/.foreman.erb +1 -0
- data/templates/.github/workflows/build.yml.erb +49 -0
- data/templates/.gitignore.erb +285 -0
- data/templates/.irbrc.erb +12 -0
- data/templates/.rubocop.yml.erb +37 -0
- data/templates/.tool-versions.erb +1 -0
- data/templates/Capfile.erb +24 -0
- data/templates/Dockerfile.erb +45 -0
- data/templates/Gemfile.erb +122 -0
- data/templates/Procfile.dev.erb +6 -0
- data/templates/Procfile.erb +2 -0
- data/templates/README.md.erb +43 -0
- data/templates/app/controllers/authorized_controller.rb.erb +10 -0
- data/templates/app/controllers/errors_controller.rb.erb +24 -0
- data/templates/app/javascript/images/checkmark.svg +1 -0
- data/templates/app/javascript/images/logo.svg +1 -0
- data/templates/app/javascript/stylesheets/components.scss +206 -0
- data/templates/app/policies/application_policy.rb +55 -0
- data/templates/app/services/application_service.rb +14 -0
- data/templates/app/views/devise/confirmations/new.html.erb +24 -0
- data/templates/app/views/devise/passwords/edit.html.erb +34 -0
- data/templates/app/views/devise/passwords/new.html.erb +23 -0
- data/templates/app/views/devise/registrations/edit.html.erb +62 -0
- data/templates/app/views/devise/registrations/new.html.erb +45 -0
- data/templates/app/views/devise/sessions/new.html.erb +33 -0
- data/templates/app/views/devise/shared/_error_messages.html.erb +15 -0
- data/templates/app/views/devise/shared/_form_wrap.html.erb +5 -0
- data/templates/app/views/devise/shared/_links.html.erb +25 -0
- data/templates/app/views/devise/unlocks/new.html.erb +22 -0
- data/templates/app/views/errors/internal_error.html.erb +14 -0
- data/templates/app/views/errors/not_found.html.erb +14 -0
- data/templates/app/views/errors/unacceptable.html.erb +14 -0
- data/templates/app/views/layouts/application.html.erb.tt +30 -0
- data/templates/app/views/pages/home.html.erb.tt +20 -0
- data/templates/app/views/shared/_flashes.html.erb.tt +12 -0
- data/templates/app/views/shared/_footer.html.erb.tt +21 -0
- data/templates/app/views/shared/_navbar.html.erb.tt +40 -0
- data/templates/bin/setup.erb +146 -0
- data/templates/config/credentials.yml.erb +7 -0
- data/templates/config/initializers/high_voltage.rb +6 -0
- data/templates/config/initializers/lograge.rb +5 -0
- data/templates/config/initializers/sidekiq.rb +10 -0
- data/templates/config/postgresql.yml.erb +23 -0
- data/templates/docker-compose.yml.erb +21 -0
- data/templates/lib/capistrano/tasks/seeds.rake +12 -0
- data/templates/lib/capistrano/tasks/sidekiq.rake +36 -0
- data/templates/lib/generators/rails/navigation/USAGE +6 -0
- data/templates/lib/generators/rails/navigation/navigation_generator.rb +15 -0
- data/templates/lib/generators/rails/scaffold_controller_generator.rb +12 -0
- data/templates/lib/tasks/auto_annotate_models.rake +58 -0
- data/templates/lib/templates/erb/scaffold/_form.html.erb +39 -0
- data/templates/lib/templates/erb/scaffold/edit.html.erb +7 -0
- data/templates/lib/templates/erb/scaffold/index.html.erb +34 -0
- data/templates/lib/templates/erb/scaffold/new.html.erb +7 -0
- data/templates/lib/templates/erb/scaffold/show.html.erb +18 -0
- data/templates/public/500.html.erb +26 -0
- data/templates/spec/rails_helper.rb +26 -0
- data/templates/spec/spec_helper.rb +61 -0
- data/templates/spec/support/factory_bot.rb +5 -0
- data/templates/spec/support/shoulda_matchers.rb +8 -0
- metadata +179 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<div class="py-20 bg-gray-100">
|
|
2
|
+
<div class="container mx-auto px-6">
|
|
3
|
+
<h2 class="text-6xl font-bold mb-2">
|
|
4
|
+
<%= camelized %>
|
|
5
|
+
</h2>
|
|
6
|
+
<h3 class="text-2xl mb-8 text-gray-800">
|
|
7
|
+
Created with <a class="underline" href="https://github.com/hschne/schienenzeppelin">Schienenzeppelin</a>
|
|
8
|
+
</h3>
|
|
9
|
+
<button class="btn btn-blue">
|
|
10
|
+
View Documentation
|
|
11
|
+
</button>
|
|
12
|
+
</div>
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
<section class="container mx-auto px-6 p-10 text-center">
|
|
16
|
+
<h2 class="text-2xl font-bold text-gray-800 mb-2">Ready to do some magic?</h2>
|
|
17
|
+
<p>Edit this page in <code class="bg-gray-100">app/views/pages/home.html.erb</code></p>
|
|
18
|
+
</section>
|
|
19
|
+
|
|
20
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<%% flash.each do |type, message| %>
|
|
2
|
+
<%% if type == "alert" %>
|
|
3
|
+
<div class="bg-red-500">
|
|
4
|
+
<div class="container px-2 py-4 mx-auto font-sans font-medium text-center text-white"><%%= message %></div>
|
|
5
|
+
</div>
|
|
6
|
+
<%% end %>
|
|
7
|
+
<%% if type == "notice" %>
|
|
8
|
+
<div class="bg-green-500">
|
|
9
|
+
<div class="container px-2 py-4 mx-auto font-sans font-medium text-center text-white"><%%= message %></div>
|
|
10
|
+
</div>
|
|
11
|
+
<%% end %>
|
|
12
|
+
<%% end %>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<footer class="bg-gray-100">
|
|
2
|
+
<div class="container mx-auto px-8">
|
|
3
|
+
|
|
4
|
+
<div class="w-full flex py-6 justify-between">
|
|
5
|
+
<div class="flex align-middle">
|
|
6
|
+
© <%%= Date.current.year %> <%= app_name.capitalize %>
|
|
7
|
+
</div>
|
|
8
|
+
<div class="flex w-1/3 justify-end">
|
|
9
|
+
<ul class="list-reset w-full flex justify-around align-middle items-center mb-6">
|
|
10
|
+
<li class="mt-2 mr-2 md:mr-0">
|
|
11
|
+
<a href="#" class="no-underline hover:underline">About</a>
|
|
12
|
+
</li>
|
|
13
|
+
<li class="mt-2 mr-2 md:mr-0">
|
|
14
|
+
<a href="#" class="no-underline hover:underline">Contact</a>
|
|
15
|
+
</li>
|
|
16
|
+
</ul>
|
|
17
|
+
</div>
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
</footer>
|
|
21
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
<header class="shadow">
|
|
2
|
+
<nav
|
|
3
|
+
data-controller="dropdown"
|
|
4
|
+
class="container mx-auto flex flex-wrap justify-between items-center p-5">
|
|
5
|
+
<div>
|
|
6
|
+
<a
|
|
7
|
+
class="flex items-center mr-2"
|
|
8
|
+
href="<%%= root_path %>">
|
|
9
|
+
<%%= inline_svg_pack_tag('media/images/logo.svg', class: "rounded mx-2", size: "3rem * 3rem") %>
|
|
10
|
+
<p class="font-bold text-lg"><%= app_name.capitalize %> </p>
|
|
11
|
+
</a>
|
|
12
|
+
</div>
|
|
13
|
+
<div class="flex md:hidden">
|
|
14
|
+
<button data-action="click->dropdown#toggle click@window->dropdown#hide"
|
|
15
|
+
class="px-3 py-2 border border-gray-500 rounded text-grey hover:text-gray-600 hover:border-gray-600"
|
|
16
|
+
>
|
|
17
|
+
<svg class="w-3 h-3 fill-current" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
|
|
18
|
+
<title>Menu</title>
|
|
19
|
+
<path d="M0 3h20v2H0V3zm0 6h20v2H0V9zm0 6h20v2H0v-2z"/>
|
|
20
|
+
</svg>
|
|
21
|
+
</button>
|
|
22
|
+
</div>
|
|
23
|
+
<div
|
|
24
|
+
data-dropdown-target="menu"
|
|
25
|
+
class="hidden md:flex-grow md:flex w-full md:w-auto text-right md:text-left text-bold mt-5 md:mt-0 border-t-2 border-gray-200 md:border-none">
|
|
26
|
+
<div class="justify-start flex-grow">
|
|
27
|
+
<!-- SZ Link Placeholder -->
|
|
28
|
+
</div>
|
|
29
|
+
<ul class="w-full flex-col md:flex md:flex-row items-center justify-end md:w-auto">
|
|
30
|
+
<%% if user_signed_in? %>
|
|
31
|
+
<li><%%= link_to "Edit account", edit_user_registration_path, class: "btn btn-default md:mr-2 my-2 md:my-0 " %></li>
|
|
32
|
+
<li><%%= link_to "Log out", destroy_user_session_path, method: :delete, class: "btn btn-default" %></li>
|
|
33
|
+
<%% else %>
|
|
34
|
+
<li><%%= link_to "Login", new_user_session_path, class: "btn btn-blue md:mr-2 my-2 md:my-0" %></li>
|
|
35
|
+
<li><%%= link_to "Sign Up", new_user_registration_path, class: "btn btn-blue" %></li>
|
|
36
|
+
<%% end %>
|
|
37
|
+
</ul>
|
|
38
|
+
</div>
|
|
39
|
+
</nav>
|
|
40
|
+
</header>
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
|
|
3
|
+
set -e
|
|
4
|
+
|
|
5
|
+
RED='\033[0;31m'
|
|
6
|
+
GREEN='\033[0;32m'
|
|
7
|
+
YELLOW='\033[0;33m'
|
|
8
|
+
NO_COLOR='\033[0m'
|
|
9
|
+
CLEAR_LINE='\r\033[K'
|
|
10
|
+
|
|
11
|
+
LOG_FILE=$(mktemp /tmp/<%= app_name %>-setup-XXXXXX)
|
|
12
|
+
|
|
13
|
+
# Emojis from https://graphemica.com/
|
|
14
|
+
main() {
|
|
15
|
+
progress 1 🔎 "Checking dependencies"
|
|
16
|
+
|
|
17
|
+
if [[ ! $(command -v ruby) ]]; then
|
|
18
|
+
clear
|
|
19
|
+
error "Ruby <%= RUBY_VERSION %> is required but not currently installed"
|
|
20
|
+
exit 101
|
|
21
|
+
fi
|
|
22
|
+
|
|
23
|
+
if [[ ! $(ruby --version) =~ <%= RUBY_VERSION %> ]]; then
|
|
24
|
+
clear
|
|
25
|
+
error "Your version of ruby does not match the required version <%= RUBY_VERSION %>"
|
|
26
|
+
exit 101
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
if [[ ! $(command -v node) ]]; then
|
|
30
|
+
clear
|
|
31
|
+
error "Node is required but not currently installed"
|
|
32
|
+
exit 101
|
|
33
|
+
fi
|
|
34
|
+
|
|
35
|
+
if [[ ! $(command -v yarn) ]]; then
|
|
36
|
+
clear
|
|
37
|
+
error "Yarn is required but not currently installed"
|
|
38
|
+
exit 101
|
|
39
|
+
fi
|
|
40
|
+
|
|
41
|
+
clear
|
|
42
|
+
progress 2 📦 "Installing bundler"
|
|
43
|
+
gem install bundler 2> "$LOG_FILE" 1> /dev/null
|
|
44
|
+
|
|
45
|
+
clear
|
|
46
|
+
progress 3 💎 "Installing gems"
|
|
47
|
+
bundle install 2> "$LOG_FILE" 1> /dev/null
|
|
48
|
+
|
|
49
|
+
clear
|
|
50
|
+
progress 4 ⏳ "Installing yarn packages"
|
|
51
|
+
yarn 2> "$LOG_FILE" 1> /dev/null
|
|
52
|
+
|
|
53
|
+
clear
|
|
54
|
+
progress 5 🌐 "Checking database"
|
|
55
|
+
<% db_port = { postgresql: 5432, mysql: 3306}[options[:database].to_sym] %>
|
|
56
|
+
if ! is_port_open <%= db_port %>; then
|
|
57
|
+
clear
|
|
58
|
+
error "Database be running under port <%= db_port %> but was not found"
|
|
59
|
+
info "In order to continue the setup you require a running database server"
|
|
60
|
+
exit 101
|
|
61
|
+
fi
|
|
62
|
+
|
|
63
|
+
clear
|
|
64
|
+
progress 6 💾 "Setting up databases"
|
|
65
|
+
rails db:setup 2> "$LOG_FILE" 1> /dev/null
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
libary_exists() {
|
|
69
|
+
local name=$1
|
|
70
|
+
libs=$(ldconfig -p | grep -c "$name")
|
|
71
|
+
[[ "$libs" -ge 1 ]]
|
|
72
|
+
return $?
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
is_port_open() {
|
|
76
|
+
local port=$1
|
|
77
|
+
# Adapted from here: https://www.commandlinefu.com/commands/view/14651/determine-if-a-port-is-open-with-bash
|
|
78
|
+
(: < /dev/tcp/127.0.0.1/"$port") &>/dev/null && return 0 || return 1
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
error() {
|
|
82
|
+
local message=$1
|
|
83
|
+
printf "💀 ${RED} $message${NO_COLOR}\n"
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
warning() {
|
|
87
|
+
local message=$1
|
|
88
|
+
printf "⚠️ ${YELLOW} $message ${NO_COLOR}\n"
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
info() {
|
|
92
|
+
local message=$1
|
|
93
|
+
printf "ℹ️ $message\n"
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
progress() {
|
|
97
|
+
total=6
|
|
98
|
+
step=$1
|
|
99
|
+
icon=$2
|
|
100
|
+
message=$3
|
|
101
|
+
printf "[%s/%s] %s %s" "$step" "$total" "$icon" "$message"
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
clear() {
|
|
105
|
+
printf "${CLEAR_LINE}"
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
on_exit() {
|
|
109
|
+
local exit_code=$?
|
|
110
|
+
clear
|
|
111
|
+
if [[ "$exit_code" -eq 0 ]]; then
|
|
112
|
+
on_success
|
|
113
|
+
elif [[ "$exit_code" -eq 101 ]]; then
|
|
114
|
+
printf "\n❌${RED} Setup failed${NO_COLOR}\n"
|
|
115
|
+
else
|
|
116
|
+
on_error
|
|
117
|
+
fi
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
on_error() {
|
|
121
|
+
local errors
|
|
122
|
+
errors=$(cat "$LOG_FILE")
|
|
123
|
+
rm "$LOG_FILE"
|
|
124
|
+
local colored_errors
|
|
125
|
+
colored_errors=$(printf "${YELLOW}$errors${NO_COLOR}")
|
|
126
|
+
echo
|
|
127
|
+
printf "❌${RED} Setup exited with errors:${NO_COLOR}\n"
|
|
128
|
+
cat <<EOF
|
|
129
|
+
------
|
|
130
|
+
$colored_errors
|
|
131
|
+
------
|
|
132
|
+
Setup has failed with errors.
|
|
133
|
+
EOF
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
on_success() {
|
|
137
|
+
printf "\n🎉${GREEN} Setup finished!${NO_COLOR}\n"
|
|
138
|
+
cat <<EOF
|
|
139
|
+
In case you haven't already, check out the Meistertask Backend section in the
|
|
140
|
+
handbook for more information about this project. Happy coding!
|
|
141
|
+
EOF
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
trap on_exit EXIT
|
|
145
|
+
|
|
146
|
+
main "$@"
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
Sidekiq.configure_server do |config|
|
|
4
|
+
# Add additional sidekiq configuration here
|
|
5
|
+
|
|
6
|
+
config.logger.level = Logger::INFO
|
|
7
|
+
# This enables you to use Rails.logger inside a Sidekiq worker
|
|
8
|
+
# See: https://github.com/mperham/sidekiq/issues/1682
|
|
9
|
+
Rails.logger = Sidekiq.logger
|
|
10
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
default: &default
|
|
2
|
+
adapter: postgresql
|
|
3
|
+
encoding: utf8
|
|
4
|
+
host: <%%= ENV['DATABASE_HOST'] %>
|
|
5
|
+
username: <%%= ENV['DATABASE_USERNAME'] %>
|
|
6
|
+
password: <%%= ENV['DATABASE_PASSWORD'] %>
|
|
7
|
+
pool: <%%= Integer(ENV.fetch("DB_POOL", 5)) %>
|
|
8
|
+
reaping_frequency: <%%= Integer(ENV.fetch("DB_REAPING_FREQUENCY", 10)) %>
|
|
9
|
+
timeout: 5000
|
|
10
|
+
|
|
11
|
+
development:
|
|
12
|
+
<<: *default
|
|
13
|
+
database: <%= app_name %>_development
|
|
14
|
+
|
|
15
|
+
test:
|
|
16
|
+
<<: *default
|
|
17
|
+
database: <%= app_name %>_test
|
|
18
|
+
|
|
19
|
+
production:
|
|
20
|
+
<<: *default
|
|
21
|
+
database: <%%= ENV.fetch('DATABASE_NAME','<%= app_name %>_production') %>
|
|
22
|
+
pool: <%%= [Integer(ENV.fetch('MAX_THREADS', 5)), Integer(ENV.fetch("DB_POOL", 5))].max %>
|
|
23
|
+
min_messages: warning
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
version: "3"
|
|
2
|
+
services:
|
|
3
|
+
<%= app_name %>-db:
|
|
4
|
+
image: postgres
|
|
5
|
+
volumes:
|
|
6
|
+
- <%= app_name %>-data:/var/lib/postgresql/data
|
|
7
|
+
ports:
|
|
8
|
+
- 5432:5432
|
|
9
|
+
environment:
|
|
10
|
+
POSTGRES_PASSWORD: <%= app_name %>
|
|
11
|
+
POSTGRES_USER: <%= app_name %>
|
|
12
|
+
|
|
13
|
+
<% unless options[:skip_sidekiq] %>
|
|
14
|
+
<%= app_name %>-redis:
|
|
15
|
+
image: redis
|
|
16
|
+
ports:
|
|
17
|
+
- 6379:6379
|
|
18
|
+
<% end %>
|
|
19
|
+
|
|
20
|
+
volumes:
|
|
21
|
+
<%= app_name %>-data:
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
namespace :sidekiq do
|
|
4
|
+
desc 'Quiet sidekiq (stop fetching new tasks from Redis)'
|
|
5
|
+
task :quiet do
|
|
6
|
+
on roles fetch(:sidekiq_roles) do
|
|
7
|
+
# See: https://github.com/mperham/sidekiq/wiki/Signals#tstp
|
|
8
|
+
execute :systemctl, '--user', 'kill', '-s', 'SIGTSTP', 'sidekiq.service',
|
|
9
|
+
raise_on_non_zero_exit: false
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
desc 'Stop sidekiq (graceful shutdown within timeout, put unfinished tasks back to Redis)'
|
|
14
|
+
task :stop do
|
|
15
|
+
on roles fetch(:sidekiq_roles) do
|
|
16
|
+
# See: https://github.com/mperham/sidekiq/wiki/Signals#tstp
|
|
17
|
+
execute :systemctl, '--user', 'kill', '-s', 'SIGTERM', 'sidekiq.service',
|
|
18
|
+
raise_on_non_zero_exit: false
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
desc 'Start sidekiq'
|
|
23
|
+
task :start do
|
|
24
|
+
on roles fetch(:sidekiq_roles) do
|
|
25
|
+
execute :systemctl, '--user', 'enable', 'sidekiq.service'
|
|
26
|
+
execute :systemctl, '--user', 'start', 'sidekiq.service'
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
desc 'Restart sidekiq'
|
|
31
|
+
task :restart do
|
|
32
|
+
on roles fetch(:sidekiq_roles) do
|
|
33
|
+
execute :systemctl, '--user', 'restart', 'sidekiq.service'
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Rails
|
|
4
|
+
class NavigationGenerator < Rails::Generators::NamedBase
|
|
5
|
+
def add_link
|
|
6
|
+
append_to_file 'app/views/shared/_navbar.html.erb',
|
|
7
|
+
after: '<!-- SZ Link Placeholder -->' do
|
|
8
|
+
<<-HTML
|
|
9
|
+
|
|
10
|
+
<%= link_to "#{plural_name.capitalize}", #{plural_name}_path, class: "block md:inline-block p-3 border-b-2 border-gray-100 md:border-none" %>
|
|
11
|
+
HTML
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rails/generators'
|
|
4
|
+
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
|
|
5
|
+
|
|
6
|
+
module Rails
|
|
7
|
+
module Generators
|
|
8
|
+
class ScaffoldControllerGenerator
|
|
9
|
+
hook_for :navigation, type: :boolean, default: true
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
if Rails.env.development?
|
|
4
|
+
require 'annotate'
|
|
5
|
+
task set_annotation_options: :environment do
|
|
6
|
+
# You can override any of these by setting an environment variable of the
|
|
7
|
+
# same name.
|
|
8
|
+
Annotate.set_defaults(
|
|
9
|
+
'active_admin' => 'false',
|
|
10
|
+
'additional_file_patterns' => [],
|
|
11
|
+
'routes' => 'false',
|
|
12
|
+
'models' => 'true',
|
|
13
|
+
'position_in_routes' => 'before',
|
|
14
|
+
'position_in_class' => 'before',
|
|
15
|
+
'position_in_test' => 'before',
|
|
16
|
+
'position_in_fixture' => 'before',
|
|
17
|
+
'position_in_factory' => 'before',
|
|
18
|
+
'position_in_serializer' => 'before',
|
|
19
|
+
'show_foreign_keys' => 'true',
|
|
20
|
+
'show_complete_foreign_keys' => 'false',
|
|
21
|
+
'show_indexes' => 'true',
|
|
22
|
+
'simple_indexes' => 'false',
|
|
23
|
+
'model_dir' => 'app/models',
|
|
24
|
+
'root_dir' => '',
|
|
25
|
+
'include_version' => 'false',
|
|
26
|
+
'require' => '',
|
|
27
|
+
'exclude_tests' => 'true',
|
|
28
|
+
'exclude_fixtures' => 'true',
|
|
29
|
+
'exclude_factories' => 'true',
|
|
30
|
+
'exclude_serializers' => 'true',
|
|
31
|
+
'exclude_scaffolds' => 'true',
|
|
32
|
+
'exclude_controllers' => 'true',
|
|
33
|
+
'exclude_helpers' => 'true',
|
|
34
|
+
'exclude_sti_subclasses' => 'false',
|
|
35
|
+
'ignore_model_sub_dir' => 'false',
|
|
36
|
+
'ignore_columns' => nil,
|
|
37
|
+
'ignore_routes' => nil,
|
|
38
|
+
'ignore_unknown_models' => 'false',
|
|
39
|
+
'hide_limit_column_types' => 'integer,bigint,boolean',
|
|
40
|
+
'hide_default_column_types' => 'json,jsonb,hstore',
|
|
41
|
+
'skip_on_db_migrate' => 'false',
|
|
42
|
+
'format_bare' => 'true',
|
|
43
|
+
'format_rdoc' => 'false',
|
|
44
|
+
'format_yard' => 'false',
|
|
45
|
+
'format_markdown' => 'false',
|
|
46
|
+
'sort' => 'false',
|
|
47
|
+
'force' => 'false',
|
|
48
|
+
'frozen' => 'false',
|
|
49
|
+
'classified_sort' => 'true',
|
|
50
|
+
'trace' => 'false',
|
|
51
|
+
'wrapper_open' => nil,
|
|
52
|
+
'wrapper_close' => nil,
|
|
53
|
+
'with_comment' => 'true'
|
|
54
|
+
)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
Annotate.load_tasks
|
|
58
|
+
end
|