superfast 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.dockerignore +47 -0
- data/.kamal/hooks/docker-setup.sample +3 -0
- data/.kamal/hooks/post-deploy.sample +14 -0
- data/.kamal/hooks/post-proxy-reboot.sample +3 -0
- data/.kamal/hooks/pre-build.sample +51 -0
- data/.kamal/hooks/pre-connect.sample +47 -0
- data/.kamal/hooks/pre-deploy.sample +109 -0
- data/.kamal/hooks/pre-proxy-reboot.sample +3 -0
- data/.kamal/secrets +17 -0
- data/.rubocop.yml +17 -0
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +73 -0
- data/Dockerfile +77 -0
- data/LICENSE +21 -0
- data/README.md +64 -0
- data/Rakefile +6 -0
- data/SECURITY.md +23 -0
- data/app/assets/images/.keep +0 -0
- data/app/assets/stylesheets/application.css +10 -0
- data/app/controllers/application_controller.rb +4 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/helpers/application_helper.rb +2 -0
- data/app/javascript/application.js +3 -0
- data/app/javascript/controllers/application.js +9 -0
- data/app/javascript/controllers/hello_controller.js +7 -0
- data/app/javascript/controllers/index.js +4 -0
- data/app/jobs/application_job.rb +7 -0
- data/app/mailers/application_mailer.rb +4 -0
- data/app/models/application_record.rb +3 -0
- data/app/models/concerns/.keep +0 -0
- data/app/views/layouts/application.html.erb +28 -0
- data/app/views/layouts/mailer.html.erb +13 -0
- data/app/views/layouts/mailer.text.erb +1 -0
- data/app/views/pwa/manifest.json.erb +22 -0
- data/app/views/pwa/service-worker.js +26 -0
- data/assets/fibery.png +0 -0
- data/assets/superfast.png +0 -0
- data/assets/zulip.png +0 -0
- data/bin/brakeman +7 -0
- data/bin/bundle +109 -0
- data/bin/bundle.cmd +112 -0
- data/bin/dev +2 -0
- data/bin/docker-entrypoint +14 -0
- data/bin/importmap +4 -0
- data/bin/jobs +6 -0
- data/bin/kamal +27 -0
- data/bin/kamal.cmd +30 -0
- data/bin/rails +4 -0
- data/bin/rake +4 -0
- data/bin/rubocop +8 -0
- data/bin/setup +34 -0
- data/bin/thrust +5 -0
- data/config/application.rb +27 -0
- data/config/boot.rb +4 -0
- data/config/cable.yml +17 -0
- data/config/cache.yml +16 -0
- data/config/credentials.yml.enc +1 -0
- data/config/database.yml +102 -0
- data/config/deploy.yml +116 -0
- data/config/environment.rb +5 -0
- data/config/environments/development.rb +72 -0
- data/config/environments/production.rb +91 -0
- data/config/environments/test.rb +53 -0
- data/config/importmap.rb +8 -0
- data/config/initializers/assets.rb +7 -0
- data/config/initializers/content_security_policy.rb +25 -0
- data/config/initializers/filter_parameter_logging.rb +8 -0
- data/config/initializers/inflections.rb +16 -0
- data/config/locales/en.yml +31 -0
- data/config/puma.rb +41 -0
- data/config/queue.yml +18 -0
- data/config/recurring.yml +10 -0
- data/config/routes.rb +14 -0
- data/config/storage.yml +34 -0
- data/config.ru +6 -0
- data/db/cable_schema.rb +11 -0
- data/db/cache_schema.rb +14 -0
- data/db/queue_schema.rb +129 -0
- data/db/schema.rb +17 -0
- data/db/seeds.rb +9 -0
- data/lib/superfast/version.rb +5 -0
- data/lib/superfast.rb +8 -0
- data/lib/tasks/.keep +0 -0
- data/log/.keep +0 -0
- data/public/400.html +114 -0
- data/public/404.html +114 -0
- data/public/406-unsupported-browser.html +114 -0
- data/public/422.html +114 -0
- data/public/500.html +114 -0
- data/public/icon.png +0 -0
- data/public/icon.svg +3 -0
- data/public/robots.txt +1 -0
- data/script/.keep +0 -0
- data/storage/.keep +0 -0
- data/superfast.gemspec +48 -0
- data/tmp/.keep +0 -0
- data/tmp/pids/.keep +0 -0
- data/tmp/storage/.keep +0 -0
- data/vendor/.keep +0 -0
- data/vendor/javascript/.keep +0 -0
- metadata +298 -0
data/config/database.yml
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# PostgreSQL. Versions 9.3 and up are supported.
|
2
|
+
#
|
3
|
+
# Install the pg driver:
|
4
|
+
# gem install pg
|
5
|
+
# On macOS with Homebrew:
|
6
|
+
# gem install pg -- --with-pg-config=/usr/local/bin/pg_config
|
7
|
+
# On Windows:
|
8
|
+
# gem install pg
|
9
|
+
# Choose the win32 build.
|
10
|
+
# Install PostgreSQL and put its /bin directory on your path.
|
11
|
+
#
|
12
|
+
# Configure Using Gemfile
|
13
|
+
# gem "pg"
|
14
|
+
#
|
15
|
+
default: &default
|
16
|
+
adapter: postgresql
|
17
|
+
encoding: unicode
|
18
|
+
# For details on connection pooling, see Rails configuration guide
|
19
|
+
# https://guides.rubyonrails.org/configuring.html#database-pooling
|
20
|
+
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
|
21
|
+
username: postgres
|
22
|
+
password: superfast
|
23
|
+
host: localhost
|
24
|
+
port: 5432
|
25
|
+
|
26
|
+
|
27
|
+
development:
|
28
|
+
<<: *default
|
29
|
+
database: superfast_development
|
30
|
+
|
31
|
+
# The specified database role being used to connect to PostgreSQL.
|
32
|
+
# To create additional roles in PostgreSQL see `$ createuser --help`.
|
33
|
+
# When left blank, PostgreSQL will use the default role. This is
|
34
|
+
# the same name as the operating system user running Rails.
|
35
|
+
username: postgres
|
36
|
+
|
37
|
+
# The password associated with the PostgreSQL role (username).
|
38
|
+
password: superfast
|
39
|
+
|
40
|
+
# Connect on a TCP socket. Omitted by default since the client uses a
|
41
|
+
# domain socket that doesn't need configuration. Windows does not have
|
42
|
+
# domain sockets, so uncomment these lines.
|
43
|
+
host: localhost
|
44
|
+
|
45
|
+
# The TCP port the server listens on. Defaults to 5432.
|
46
|
+
# If your server runs on a different port number, change accordingly.
|
47
|
+
port: 5432
|
48
|
+
|
49
|
+
# Schema search path. The server defaults to $user,public
|
50
|
+
#schema_search_path: myapp,sharedapp,public
|
51
|
+
|
52
|
+
# Minimum log levels, in increasing order:
|
53
|
+
# debug5, debug4, debug3, debug2, debug1,
|
54
|
+
# log, notice, warning, error, fatal, and panic
|
55
|
+
# Defaults to warning.
|
56
|
+
#min_messages: notice
|
57
|
+
|
58
|
+
# Warning: The database defined as "test" will be erased and
|
59
|
+
# re-generated from your development database when you run "rake".
|
60
|
+
# Do not set this db to the same as development or production.
|
61
|
+
test:
|
62
|
+
<<: *default
|
63
|
+
database: superfast_test
|
64
|
+
|
65
|
+
# As with config/credentials.yml, you never want to store sensitive information,
|
66
|
+
# like your database password, in your source code. If your source code is
|
67
|
+
# ever seen by anyone, they now have access to your database.
|
68
|
+
#
|
69
|
+
# Instead, provide the password or a full connection URL as an environment
|
70
|
+
# variable when you boot the app. For example:
|
71
|
+
#
|
72
|
+
# DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase"
|
73
|
+
#
|
74
|
+
# If the connection URL is provided in the special DATABASE_URL environment
|
75
|
+
# variable, Rails will automatically merge its configuration values on top of
|
76
|
+
# the values provided in this file. Alternatively, you can specify a connection
|
77
|
+
# URL environment variable explicitly:
|
78
|
+
#
|
79
|
+
# production:
|
80
|
+
# url: <%= ENV["MY_APP_DATABASE_URL"] %>
|
81
|
+
#
|
82
|
+
# Read https://guides.rubyonrails.org/configuring.html#configuring-a-database
|
83
|
+
# for a full overview on how database connection configuration can be specified.
|
84
|
+
#
|
85
|
+
production:
|
86
|
+
primary: &primary_production
|
87
|
+
<<: *default
|
88
|
+
database: superfast_production
|
89
|
+
username: superfast
|
90
|
+
password: <%= ENV["SUPERFAST_DATABASE_PASSWORD"] %>
|
91
|
+
cache:
|
92
|
+
<<: *primary_production
|
93
|
+
database: superfast_production_cache
|
94
|
+
migrations_paths: db/cache_migrate
|
95
|
+
queue:
|
96
|
+
<<: *primary_production
|
97
|
+
database: superfast_production_queue
|
98
|
+
migrations_paths: db/queue_migrate
|
99
|
+
cable:
|
100
|
+
<<: *primary_production
|
101
|
+
database: superfast_production_cable
|
102
|
+
migrations_paths: db/cable_migrate
|
data/config/deploy.yml
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
# Name of your application. Used to uniquely configure containers.
|
2
|
+
service: superfast
|
3
|
+
|
4
|
+
# Name of the container image.
|
5
|
+
image: your-user/superfast
|
6
|
+
|
7
|
+
# Deploy to these servers.
|
8
|
+
servers:
|
9
|
+
web:
|
10
|
+
- 192.168.0.1
|
11
|
+
# job:
|
12
|
+
# hosts:
|
13
|
+
# - 192.168.0.1
|
14
|
+
# cmd: bin/jobs
|
15
|
+
|
16
|
+
# Enable SSL auto certification via Let's Encrypt and allow for multiple apps on a single web server.
|
17
|
+
# Remove this section when using multiple web servers and ensure you terminate SSL at your load balancer.
|
18
|
+
#
|
19
|
+
# Note: If using Cloudflare, set encryption mode in SSL/TLS setting to "Full" to enable CF-to-app encryption.
|
20
|
+
proxy:
|
21
|
+
ssl: true
|
22
|
+
host: app.example.com
|
23
|
+
|
24
|
+
# Credentials for your image host.
|
25
|
+
registry:
|
26
|
+
# Specify the registry server, if you're not using Docker Hub
|
27
|
+
# server: registry.digitalocean.com / ghcr.io / ...
|
28
|
+
username: your-user
|
29
|
+
|
30
|
+
# Always use an access token rather than real password when possible.
|
31
|
+
password:
|
32
|
+
- KAMAL_REGISTRY_PASSWORD
|
33
|
+
|
34
|
+
# Inject ENV variables into containers (secrets come from .kamal/secrets).
|
35
|
+
env:
|
36
|
+
secret:
|
37
|
+
- RAILS_MASTER_KEY
|
38
|
+
clear:
|
39
|
+
# Run the Solid Queue Supervisor inside the web server's Puma process to do jobs.
|
40
|
+
# When you start using multiple servers, you should split out job processing to a dedicated machine.
|
41
|
+
SOLID_QUEUE_IN_PUMA: true
|
42
|
+
|
43
|
+
# Set number of processes dedicated to Solid Queue (default: 1)
|
44
|
+
# JOB_CONCURRENCY: 3
|
45
|
+
|
46
|
+
# Set number of cores available to the application on each server (default: 1).
|
47
|
+
# WEB_CONCURRENCY: 2
|
48
|
+
|
49
|
+
# Match this to any external database server to configure Active Record correctly
|
50
|
+
# Use superfast-db for a db accessory server on same machine via local kamal docker network.
|
51
|
+
# DB_HOST: 192.168.0.2
|
52
|
+
|
53
|
+
# Log everything from Rails
|
54
|
+
# RAILS_LOG_LEVEL: debug
|
55
|
+
|
56
|
+
# Aliases are triggered with "bin/kamal <alias>". You can overwrite arguments on invocation:
|
57
|
+
# "bin/kamal logs -r job" will tail logs from the first server in the job section.
|
58
|
+
aliases:
|
59
|
+
console: app exec --interactive --reuse "bin/rails console"
|
60
|
+
shell: app exec --interactive --reuse "bash"
|
61
|
+
logs: app logs -f
|
62
|
+
dbc: app exec --interactive --reuse "bin/rails dbconsole"
|
63
|
+
|
64
|
+
|
65
|
+
# Use a persistent storage volume for sqlite database files and local Active Storage files.
|
66
|
+
# Recommended to change this to a mounted volume path that is backed up off server.
|
67
|
+
volumes:
|
68
|
+
- "superfast_storage:/rails/storage"
|
69
|
+
|
70
|
+
|
71
|
+
# Bridge fingerprinted assets, like JS and CSS, between versions to avoid
|
72
|
+
# hitting 404 on in-flight requests. Combines all files from new and old
|
73
|
+
# version inside the asset_path.
|
74
|
+
asset_path: /rails/public/assets
|
75
|
+
|
76
|
+
# Configure the image builder.
|
77
|
+
builder:
|
78
|
+
arch: amd64
|
79
|
+
|
80
|
+
# # Build image via remote server (useful for faster amd64 builds on arm64 computers)
|
81
|
+
# remote: ssh://docker@docker-builder-server
|
82
|
+
#
|
83
|
+
# # Pass arguments and secrets to the Docker build process
|
84
|
+
# args:
|
85
|
+
# RUBY_VERSION: ruby-3.3.6
|
86
|
+
# secrets:
|
87
|
+
# - GITHUB_TOKEN
|
88
|
+
# - RAILS_MASTER_KEY
|
89
|
+
|
90
|
+
# Use a different ssh user than root
|
91
|
+
# ssh:
|
92
|
+
# user: app
|
93
|
+
|
94
|
+
# Use accessory services (secrets come from .kamal/secrets).
|
95
|
+
# accessories:
|
96
|
+
# db:
|
97
|
+
# image: mysql:8.0
|
98
|
+
# host: 192.168.0.2
|
99
|
+
# # Change to 3306 to expose port to the world instead of just local network.
|
100
|
+
# port: "127.0.0.1:3306:3306"
|
101
|
+
# env:
|
102
|
+
# clear:
|
103
|
+
# MYSQL_ROOT_HOST: '%'
|
104
|
+
# secret:
|
105
|
+
# - MYSQL_ROOT_PASSWORD
|
106
|
+
# files:
|
107
|
+
# - config/mysql/production.cnf:/etc/mysql/my.cnf
|
108
|
+
# - db/production.sql:/docker-entrypoint-initdb.d/setup.sql
|
109
|
+
# directories:
|
110
|
+
# - data:/var/lib/mysql
|
111
|
+
# redis:
|
112
|
+
# image: redis:7.0
|
113
|
+
# host: 192.168.0.2
|
114
|
+
# port: 6379
|
115
|
+
# directories:
|
116
|
+
# - data:/data
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require "active_support/core_ext/integer/time"
|
2
|
+
|
3
|
+
Rails.application.configure do
|
4
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
5
|
+
|
6
|
+
# Make code changes take effect immediately without server restart.
|
7
|
+
config.enable_reloading = true
|
8
|
+
|
9
|
+
# Do not eager load code on boot.
|
10
|
+
config.eager_load = false
|
11
|
+
|
12
|
+
# Show full error reports.
|
13
|
+
config.consider_all_requests_local = true
|
14
|
+
|
15
|
+
# Enable server timing.
|
16
|
+
config.server_timing = true
|
17
|
+
|
18
|
+
# Enable/disable Action Controller caching. By default Action Controller caching is disabled.
|
19
|
+
# Run rails dev:cache to toggle Action Controller caching.
|
20
|
+
if Rails.root.join("tmp/caching-dev.txt").exist?
|
21
|
+
config.action_controller.perform_caching = true
|
22
|
+
config.action_controller.enable_fragment_cache_logging = true
|
23
|
+
config.public_file_server.headers = { "cache-control" => "public, max-age=#{2.days.to_i}" }
|
24
|
+
else
|
25
|
+
config.action_controller.perform_caching = false
|
26
|
+
end
|
27
|
+
|
28
|
+
# Change to :null_store to avoid any caching.
|
29
|
+
config.cache_store = :memory_store
|
30
|
+
|
31
|
+
# Store uploaded files on the local file system (see config/storage.yml for options).
|
32
|
+
config.active_storage.service = :local
|
33
|
+
|
34
|
+
# Don't care if the mailer can't send.
|
35
|
+
config.action_mailer.raise_delivery_errors = false
|
36
|
+
|
37
|
+
# Make template changes take effect immediately.
|
38
|
+
config.action_mailer.perform_caching = false
|
39
|
+
|
40
|
+
# Set localhost to be used by links generated in mailer templates.
|
41
|
+
config.action_mailer.default_url_options = { host: "localhost", port: 3000 }
|
42
|
+
|
43
|
+
# Print deprecation notices to the Rails logger.
|
44
|
+
config.active_support.deprecation = :log
|
45
|
+
|
46
|
+
# Raise an error on page load if there are pending migrations.
|
47
|
+
config.active_record.migration_error = :page_load
|
48
|
+
|
49
|
+
# Highlight code that triggered database queries in logs.
|
50
|
+
config.active_record.verbose_query_logs = true
|
51
|
+
|
52
|
+
# Append comments with runtime information tags to SQL queries in logs.
|
53
|
+
config.active_record.query_log_tags_enabled = true
|
54
|
+
|
55
|
+
# Highlight code that enqueued background job in logs.
|
56
|
+
config.active_job.verbose_enqueue_logs = true
|
57
|
+
|
58
|
+
# Raises error for missing translations.
|
59
|
+
# config.i18n.raise_on_missing_translations = true
|
60
|
+
|
61
|
+
# Annotate rendered view with file names.
|
62
|
+
config.action_view.annotate_rendered_view_with_filenames = true
|
63
|
+
|
64
|
+
# Uncomment if you wish to allow Action Cable access from any origin.
|
65
|
+
# config.action_cable.disable_request_forgery_protection = true
|
66
|
+
|
67
|
+
# Raise error when a before_action's only/except options reference missing actions.
|
68
|
+
config.action_controller.raise_on_missing_callback_actions = true
|
69
|
+
|
70
|
+
# Apply autocorrection by RuboCop to files generated by `bin/rails generate`.
|
71
|
+
# config.generators.apply_rubocop_autocorrect_after_generate!
|
72
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
require "active_support/core_ext/integer/time"
|
2
|
+
|
3
|
+
Rails.application.configure do
|
4
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
5
|
+
|
6
|
+
# Code is not reloaded between requests.
|
7
|
+
config.enable_reloading = false
|
8
|
+
|
9
|
+
# Eager load code on boot for better performance and memory savings (ignored by Rake tasks).
|
10
|
+
config.eager_load = true
|
11
|
+
|
12
|
+
# Full error reports are disabled.
|
13
|
+
config.consider_all_requests_local = false
|
14
|
+
|
15
|
+
# Turn on fragment caching in view templates.
|
16
|
+
config.action_controller.perform_caching = true
|
17
|
+
|
18
|
+
# Cache assets for far-future expiry since they are all digest stamped.
|
19
|
+
config.public_file_server.headers = { "cache-control" => "public, max-age=#{1.year.to_i}" }
|
20
|
+
|
21
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
22
|
+
# config.asset_host = "http://assets.example.com"
|
23
|
+
|
24
|
+
# Store uploaded files on the local file system (see config/storage.yml for options).
|
25
|
+
config.active_storage.service = :local
|
26
|
+
|
27
|
+
# Assume all access to the app is happening through a SSL-terminating reverse proxy.
|
28
|
+
config.assume_ssl = true
|
29
|
+
|
30
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
31
|
+
config.force_ssl = true
|
32
|
+
|
33
|
+
# Skip http-to-https redirect for the default health check endpoint.
|
34
|
+
# config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } }
|
35
|
+
|
36
|
+
# Log to STDOUT with the current request id as a default log tag.
|
37
|
+
config.log_tags = [ :request_id ]
|
38
|
+
config.logger = ActiveSupport::TaggedLogging.logger(STDOUT)
|
39
|
+
|
40
|
+
# Change to "debug" to log everything (including potentially personally-identifiable information!)
|
41
|
+
config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info")
|
42
|
+
|
43
|
+
# Prevent health checks from clogging up the logs.
|
44
|
+
config.silence_healthcheck_path = "/up"
|
45
|
+
|
46
|
+
# Don't log any deprecations.
|
47
|
+
config.active_support.report_deprecations = false
|
48
|
+
|
49
|
+
# Replace the default in-process memory cache store with a durable alternative.
|
50
|
+
config.cache_store = :solid_cache_store
|
51
|
+
|
52
|
+
# Replace the default in-process and non-durable queuing backend for Active Job.
|
53
|
+
config.active_job.queue_adapter = :solid_queue
|
54
|
+
config.solid_queue.connects_to = { database: { writing: :queue } }
|
55
|
+
|
56
|
+
|
57
|
+
# Ignore bad email addresses and do not raise email delivery errors.
|
58
|
+
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
59
|
+
# config.action_mailer.raise_delivery_errors = false
|
60
|
+
|
61
|
+
# Set host to be used by links generated in mailer templates.
|
62
|
+
config.action_mailer.default_url_options = { host: "example.com" }
|
63
|
+
|
64
|
+
# Specify outgoing SMTP server. Remember to add smtp/* credentials via rails credentials:edit.
|
65
|
+
# config.action_mailer.smtp_settings = {
|
66
|
+
# user_name: Rails.application.credentials.dig(:smtp, :user_name),
|
67
|
+
# password: Rails.application.credentials.dig(:smtp, :password),
|
68
|
+
# address: "smtp.example.com",
|
69
|
+
# port: 587,
|
70
|
+
# authentication: :plain
|
71
|
+
# }
|
72
|
+
|
73
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
74
|
+
# the I18n.default_locale when a translation cannot be found).
|
75
|
+
config.i18n.fallbacks = true
|
76
|
+
|
77
|
+
# Do not dump schema after migrations.
|
78
|
+
config.active_record.dump_schema_after_migration = false
|
79
|
+
|
80
|
+
# Only use :id for inspections in production.
|
81
|
+
config.active_record.attributes_for_inspect = [ :id ]
|
82
|
+
|
83
|
+
# Enable DNS rebinding protection and other `Host` header attacks.
|
84
|
+
# config.hosts = [
|
85
|
+
# "example.com", # Allow requests from example.com
|
86
|
+
# /.*\.example\.com/ # Allow requests from subdomains like `www.example.com`
|
87
|
+
# ]
|
88
|
+
#
|
89
|
+
# Skip DNS rebinding protection for the default health check endpoint.
|
90
|
+
# config.host_authorization = { exclude: ->(request) { request.path == "/up" } }
|
91
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
# The test environment is used exclusively to run your application's
|
2
|
+
# test suite. You never need to work with it otherwise. Remember that
|
3
|
+
# your test database is "scratch space" for the test suite and is wiped
|
4
|
+
# and recreated between test runs. Don't rely on the data there!
|
5
|
+
|
6
|
+
Rails.application.configure do
|
7
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
8
|
+
|
9
|
+
# While tests run files are not watched, reloading is not necessary.
|
10
|
+
config.enable_reloading = false
|
11
|
+
|
12
|
+
# Eager loading loads your entire application. When running a single test locally,
|
13
|
+
# this is usually not necessary, and can slow down your test suite. However, it's
|
14
|
+
# recommended that you enable it in continuous integration systems to ensure eager
|
15
|
+
# loading is working properly before deploying your code.
|
16
|
+
config.eager_load = ENV["CI"].present?
|
17
|
+
|
18
|
+
# Configure public file server for tests with cache-control for performance.
|
19
|
+
config.public_file_server.headers = { "cache-control" => "public, max-age=3600" }
|
20
|
+
|
21
|
+
# Show full error reports.
|
22
|
+
config.consider_all_requests_local = true
|
23
|
+
config.cache_store = :null_store
|
24
|
+
|
25
|
+
# Render exception templates for rescuable exceptions and raise for other exceptions.
|
26
|
+
config.action_dispatch.show_exceptions = :rescuable
|
27
|
+
|
28
|
+
# Disable request forgery protection in test environment.
|
29
|
+
config.action_controller.allow_forgery_protection = false
|
30
|
+
|
31
|
+
# Store uploaded files on the local file system in a temporary directory.
|
32
|
+
config.active_storage.service = :test
|
33
|
+
|
34
|
+
# Tell Action Mailer not to deliver emails to the real world.
|
35
|
+
# The :test delivery method accumulates sent emails in the
|
36
|
+
# ActionMailer::Base.deliveries array.
|
37
|
+
config.action_mailer.delivery_method = :test
|
38
|
+
|
39
|
+
# Set host to be used by links generated in mailer templates.
|
40
|
+
config.action_mailer.default_url_options = { host: "example.com" }
|
41
|
+
|
42
|
+
# Print deprecation notices to the stderr.
|
43
|
+
config.active_support.deprecation = :stderr
|
44
|
+
|
45
|
+
# Raises error for missing translations.
|
46
|
+
# config.i18n.raise_on_missing_translations = true
|
47
|
+
|
48
|
+
# Annotate rendered view with file names.
|
49
|
+
# config.action_view.annotate_rendered_view_with_filenames = true
|
50
|
+
|
51
|
+
# Raise error when a before_action's only/except options reference missing actions.
|
52
|
+
config.action_controller.raise_on_missing_callback_actions = true
|
53
|
+
end
|
data/config/importmap.rb
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# Pin npm packages by running ./bin/importmap
|
2
|
+
|
3
|
+
pin "application"
|
4
|
+
pin "@hotwired/turbo-rails", to: "turbo.min.js"
|
5
|
+
pin "@hotwired/stimulus", to: "stimulus.min.js"
|
6
|
+
pin "@hotwired/strada"
|
7
|
+
pin "@hotwired/stimulus-loading", to: "stimulus-loading.js"
|
8
|
+
pin_all_from "app/javascript/controllers", under: "controllers"
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Version of your assets, change this if you want to expire all your assets.
|
4
|
+
Rails.application.config.assets.version = "1.0"
|
5
|
+
|
6
|
+
# Add additional assets to the asset load path.
|
7
|
+
# Rails.application.config.assets.paths << Emoji.images_path
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Define an application-wide content security policy.
|
4
|
+
# See the Securing Rails Applications Guide for more information:
|
5
|
+
# https://guides.rubyonrails.org/security.html#content-security-policy-header
|
6
|
+
|
7
|
+
# Rails.application.configure do
|
8
|
+
# config.content_security_policy do |policy|
|
9
|
+
# policy.default_src :self, :https
|
10
|
+
# policy.font_src :self, :https, :data
|
11
|
+
# policy.img_src :self, :https, :data
|
12
|
+
# policy.object_src :none
|
13
|
+
# policy.script_src :self, :https
|
14
|
+
# policy.style_src :self, :https
|
15
|
+
# # Specify URI for violation reports
|
16
|
+
# # policy.report_uri "/csp-violation-report-endpoint"
|
17
|
+
# end
|
18
|
+
#
|
19
|
+
# # Generate session nonces for permitted importmap, inline scripts, and inline styles.
|
20
|
+
# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
|
21
|
+
# config.content_security_policy_nonce_directives = %w(script-src style-src)
|
22
|
+
#
|
23
|
+
# # Report violations without enforcing the policy.
|
24
|
+
# # config.content_security_policy_report_only = true
|
25
|
+
# end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file.
|
4
|
+
# Use this to limit dissemination of sensitive information.
|
5
|
+
# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors.
|
6
|
+
Rails.application.config.filter_parameters += [
|
7
|
+
:passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn, :cvv, :cvc
|
8
|
+
]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
2
|
+
|
3
|
+
# Add new inflection rules using the following format. Inflections
|
4
|
+
# are locale specific, and you may define rules for as many different
|
5
|
+
# locales as you wish. All of these examples are active by default:
|
6
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
7
|
+
# inflect.plural /^(ox)$/i, "\\1en"
|
8
|
+
# inflect.singular /^(ox)en/i, "\\1"
|
9
|
+
# inflect.irregular "person", "people"
|
10
|
+
# inflect.uncountable %w( fish sheep )
|
11
|
+
# end
|
12
|
+
|
13
|
+
# These inflection rules are supported but not enabled by default:
|
14
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
15
|
+
# inflect.acronym "RESTful"
|
16
|
+
# end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Files in the config/locales directory are used for internationalization and
|
2
|
+
# are automatically loaded by Rails. If you want to use locales other than
|
3
|
+
# English, add the necessary files in this directory.
|
4
|
+
#
|
5
|
+
# To use the locales, use `I18n.t`:
|
6
|
+
#
|
7
|
+
# I18n.t "hello"
|
8
|
+
#
|
9
|
+
# In views, this is aliased to just `t`:
|
10
|
+
#
|
11
|
+
# <%= t("hello") %>
|
12
|
+
#
|
13
|
+
# To use a different locale, set it with `I18n.locale`:
|
14
|
+
#
|
15
|
+
# I18n.locale = :es
|
16
|
+
#
|
17
|
+
# This would use the information in config/locales/es.yml.
|
18
|
+
#
|
19
|
+
# To learn more about the API, please read the Rails Internationalization guide
|
20
|
+
# at https://guides.rubyonrails.org/i18n.html.
|
21
|
+
#
|
22
|
+
# Be aware that YAML interprets the following case-insensitive strings as
|
23
|
+
# booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings
|
24
|
+
# must be quoted to be interpreted as strings. For example:
|
25
|
+
#
|
26
|
+
# en:
|
27
|
+
# "yes": yup
|
28
|
+
# enabled: "ON"
|
29
|
+
|
30
|
+
en:
|
31
|
+
hello: "Hello world"
|
data/config/puma.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# This configuration file will be evaluated by Puma. The top-level methods that
|
2
|
+
# are invoked here are part of Puma's configuration DSL. For more information
|
3
|
+
# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html.
|
4
|
+
#
|
5
|
+
# Puma starts a configurable number of processes (workers) and each process
|
6
|
+
# serves each request in a thread from an internal thread pool.
|
7
|
+
#
|
8
|
+
# You can control the number of workers using ENV["WEB_CONCURRENCY"]. You
|
9
|
+
# should only set this value when you want to run 2 or more workers. The
|
10
|
+
# default is already 1.
|
11
|
+
#
|
12
|
+
# The ideal number of threads per worker depends both on how much time the
|
13
|
+
# application spends waiting for IO operations and on how much you wish to
|
14
|
+
# prioritize throughput over latency.
|
15
|
+
#
|
16
|
+
# As a rule of thumb, increasing the number of threads will increase how much
|
17
|
+
# traffic a given process can handle (throughput), but due to CRuby's
|
18
|
+
# Global VM Lock (GVL) it has diminishing returns and will degrade the
|
19
|
+
# response time (latency) of the application.
|
20
|
+
#
|
21
|
+
# The default is set to 3 threads as it's deemed a decent compromise between
|
22
|
+
# throughput and latency for the average Rails application.
|
23
|
+
#
|
24
|
+
# Any libraries that use a connection pool or another resource pool should
|
25
|
+
# be configured to provide at least as many connections as the number of
|
26
|
+
# threads. This includes Active Record's `pool` parameter in `database.yml`.
|
27
|
+
threads_count = ENV.fetch("RAILS_MAX_THREADS", 3)
|
28
|
+
threads threads_count, threads_count
|
29
|
+
|
30
|
+
# Specifies the `port` that Puma will listen on to receive requests; default is 3000.
|
31
|
+
port ENV.fetch("PORT", 3000)
|
32
|
+
|
33
|
+
# Allow puma to be restarted by `bin/rails restart` command.
|
34
|
+
plugin :tmp_restart
|
35
|
+
|
36
|
+
# Run the Solid Queue supervisor inside of Puma for single-server deployments
|
37
|
+
plugin :solid_queue if ENV["SOLID_QUEUE_IN_PUMA"]
|
38
|
+
|
39
|
+
# Specify the PID file. Defaults to tmp/pids/server.pid in development.
|
40
|
+
# In other environments, only set the PID file if requested.
|
41
|
+
pidfile ENV["PIDFILE"] if ENV["PIDFILE"]
|
data/config/queue.yml
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
default: &default
|
2
|
+
dispatchers:
|
3
|
+
- polling_interval: 1
|
4
|
+
batch_size: 500
|
5
|
+
workers:
|
6
|
+
- queues: "*"
|
7
|
+
threads: 3
|
8
|
+
processes: <%= ENV.fetch("JOB_CONCURRENCY", 1) %>
|
9
|
+
polling_interval: 0.1
|
10
|
+
|
11
|
+
development:
|
12
|
+
<<: *default
|
13
|
+
|
14
|
+
test:
|
15
|
+
<<: *default
|
16
|
+
|
17
|
+
production:
|
18
|
+
<<: *default
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# production:
|
2
|
+
# periodic_cleanup:
|
3
|
+
# class: CleanSoftDeletedRecordsJob
|
4
|
+
# queue: background
|
5
|
+
# args: [ 1000, { batch_size: 500 } ]
|
6
|
+
# schedule: every hour
|
7
|
+
# periodic_command:
|
8
|
+
# command: "SoftDeletedRecord.due.delete_all"
|
9
|
+
# priority: 2
|
10
|
+
# schedule: at 5am every day
|
data/config/routes.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
Rails.application.routes.draw do
|
2
|
+
# Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html
|
3
|
+
|
4
|
+
# Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500.
|
5
|
+
# Can be used by load balancers and uptime monitors to verify that the app is live.
|
6
|
+
get "up" => "rails/health#show", as: :rails_health_check
|
7
|
+
|
8
|
+
# Render dynamic PWA files from app/views/pwa/* (remember to link manifest in application.html.erb)
|
9
|
+
# get "manifest" => "rails/pwa#manifest", as: :pwa_manifest
|
10
|
+
# get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker
|
11
|
+
|
12
|
+
# Defines the root path route ("/")
|
13
|
+
# root "posts#index"
|
14
|
+
end
|
data/config/storage.yml
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
test:
|
2
|
+
service: Disk
|
3
|
+
root: <%= Rails.root.join("tmp/storage") %>
|
4
|
+
|
5
|
+
local:
|
6
|
+
service: Disk
|
7
|
+
root: <%= Rails.root.join("storage") %>
|
8
|
+
|
9
|
+
# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
|
10
|
+
# amazon:
|
11
|
+
# service: S3
|
12
|
+
# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
|
13
|
+
# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
|
14
|
+
# region: us-east-1
|
15
|
+
# bucket: your_own_bucket-<%= Rails.env %>
|
16
|
+
|
17
|
+
# Remember not to checkin your GCS keyfile to a repository
|
18
|
+
# google:
|
19
|
+
# service: GCS
|
20
|
+
# project: your_project
|
21
|
+
# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
|
22
|
+
# bucket: your_own_bucket-<%= Rails.env %>
|
23
|
+
|
24
|
+
# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
|
25
|
+
# microsoft:
|
26
|
+
# service: AzureStorage
|
27
|
+
# storage_account_name: your_account_name
|
28
|
+
# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
|
29
|
+
# container: your_container_name-<%= Rails.env %>
|
30
|
+
|
31
|
+
# mirror:
|
32
|
+
# service: Mirror
|
33
|
+
# primary: local
|
34
|
+
# mirrors: [ amazon, google, microsoft ]
|