superfast 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/.dockerignore +47 -0
  3. data/.kamal/hooks/docker-setup.sample +3 -0
  4. data/.kamal/hooks/post-deploy.sample +14 -0
  5. data/.kamal/hooks/post-proxy-reboot.sample +3 -0
  6. data/.kamal/hooks/pre-build.sample +51 -0
  7. data/.kamal/hooks/pre-connect.sample +47 -0
  8. data/.kamal/hooks/pre-deploy.sample +109 -0
  9. data/.kamal/hooks/pre-proxy-reboot.sample +3 -0
  10. data/.kamal/secrets +17 -0
  11. data/.rubocop.yml +17 -0
  12. data/.ruby-version +1 -0
  13. data/CHANGELOG.md +5 -0
  14. data/CODE_OF_CONDUCT.md +73 -0
  15. data/Dockerfile +77 -0
  16. data/LICENSE +21 -0
  17. data/README.md +64 -0
  18. data/Rakefile +6 -0
  19. data/SECURITY.md +23 -0
  20. data/app/assets/images/.keep +0 -0
  21. data/app/assets/stylesheets/application.css +10 -0
  22. data/app/controllers/application_controller.rb +4 -0
  23. data/app/controllers/concerns/.keep +0 -0
  24. data/app/helpers/application_helper.rb +2 -0
  25. data/app/javascript/application.js +3 -0
  26. data/app/javascript/controllers/application.js +9 -0
  27. data/app/javascript/controllers/hello_controller.js +7 -0
  28. data/app/javascript/controllers/index.js +4 -0
  29. data/app/jobs/application_job.rb +7 -0
  30. data/app/mailers/application_mailer.rb +4 -0
  31. data/app/models/application_record.rb +3 -0
  32. data/app/models/concerns/.keep +0 -0
  33. data/app/views/layouts/application.html.erb +28 -0
  34. data/app/views/layouts/mailer.html.erb +13 -0
  35. data/app/views/layouts/mailer.text.erb +1 -0
  36. data/app/views/pwa/manifest.json.erb +22 -0
  37. data/app/views/pwa/service-worker.js +26 -0
  38. data/assets/fibery.png +0 -0
  39. data/assets/superfast.png +0 -0
  40. data/assets/zulip.png +0 -0
  41. data/bin/brakeman +7 -0
  42. data/bin/bundle +109 -0
  43. data/bin/bundle.cmd +112 -0
  44. data/bin/dev +2 -0
  45. data/bin/docker-entrypoint +14 -0
  46. data/bin/importmap +4 -0
  47. data/bin/jobs +6 -0
  48. data/bin/kamal +27 -0
  49. data/bin/kamal.cmd +30 -0
  50. data/bin/rails +4 -0
  51. data/bin/rake +4 -0
  52. data/bin/rubocop +8 -0
  53. data/bin/setup +34 -0
  54. data/bin/thrust +5 -0
  55. data/config/application.rb +27 -0
  56. data/config/boot.rb +4 -0
  57. data/config/cable.yml +17 -0
  58. data/config/cache.yml +16 -0
  59. data/config/credentials.yml.enc +1 -0
  60. data/config/database.yml +102 -0
  61. data/config/deploy.yml +116 -0
  62. data/config/environment.rb +5 -0
  63. data/config/environments/development.rb +72 -0
  64. data/config/environments/production.rb +91 -0
  65. data/config/environments/test.rb +53 -0
  66. data/config/importmap.rb +8 -0
  67. data/config/initializers/assets.rb +7 -0
  68. data/config/initializers/content_security_policy.rb +25 -0
  69. data/config/initializers/filter_parameter_logging.rb +8 -0
  70. data/config/initializers/inflections.rb +16 -0
  71. data/config/locales/en.yml +31 -0
  72. data/config/puma.rb +41 -0
  73. data/config/queue.yml +18 -0
  74. data/config/recurring.yml +10 -0
  75. data/config/routes.rb +14 -0
  76. data/config/storage.yml +34 -0
  77. data/config.ru +6 -0
  78. data/db/cable_schema.rb +11 -0
  79. data/db/cache_schema.rb +14 -0
  80. data/db/queue_schema.rb +129 -0
  81. data/db/schema.rb +17 -0
  82. data/db/seeds.rb +9 -0
  83. data/lib/superfast/version.rb +5 -0
  84. data/lib/superfast.rb +8 -0
  85. data/lib/tasks/.keep +0 -0
  86. data/log/.keep +0 -0
  87. data/public/400.html +114 -0
  88. data/public/404.html +114 -0
  89. data/public/406-unsupported-browser.html +114 -0
  90. data/public/422.html +114 -0
  91. data/public/500.html +114 -0
  92. data/public/icon.png +0 -0
  93. data/public/icon.svg +3 -0
  94. data/public/robots.txt +1 -0
  95. data/script/.keep +0 -0
  96. data/storage/.keep +0 -0
  97. data/superfast.gemspec +48 -0
  98. data/tmp/.keep +0 -0
  99. data/tmp/pids/.keep +0 -0
  100. data/tmp/storage/.keep +0 -0
  101. data/vendor/.keep +0 -0
  102. data/vendor/javascript/.keep +0 -0
  103. metadata +298 -0
@@ -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,5 @@
1
+ # Load the Rails application.
2
+ require_relative "application"
3
+
4
+ # Initialize the Rails application.
5
+ Rails.application.initialize!
@@ -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
@@ -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
@@ -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 ]
data/config.ru ADDED
@@ -0,0 +1,6 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require_relative "config/environment"
4
+
5
+ run Rails.application
6
+ Rails.application.load_server