diff options
Diffstat (limited to 'config')
| -rw-r--r-- | config/application.rb | 27 | ||||
| -rw-r--r-- | config/boot.rb | 4 | ||||
| -rw-r--r-- | config/cable.yml | 10 | ||||
| -rw-r--r-- | config/credentials.yml.enc | 1 | ||||
| -rw-r--r-- | config/database.yml | 33 | ||||
| -rw-r--r-- | config/environment.rb | 5 | ||||
| -rw-r--r-- | config/environments/development.rb | 81 | ||||
| -rw-r--r-- | config/environments/production.rb | 102 | ||||
| -rw-r--r-- | config/environments/test.rb | 67 | ||||
| -rw-r--r-- | config/initializers/assets.rb | 12 | ||||
| -rw-r--r-- | config/initializers/content_security_policy.rb | 25 | ||||
| -rw-r--r-- | config/initializers/filter_parameter_logging.rb | 8 | ||||
| -rw-r--r-- | config/initializers/inflections.rb | 16 | ||||
| -rw-r--r-- | config/initializers/permissions_policy.rb | 13 | ||||
| -rw-r--r-- | config/locales/en.yml | 31 | ||||
| -rw-r--r-- | config/puma.rb | 34 | ||||
| -rw-r--r-- | config/routes.rb | 18 | ||||
| -rw-r--r-- | config/storage.yml | 34 | 
18 files changed, 521 insertions, 0 deletions
| diff --git a/config/application.rb b/config/application.rb new file mode 100644 index 0000000..badadab --- /dev/null +++ b/config/application.rb @@ -0,0 +1,27 @@ +require_relative "boot" + +require "rails/all" + +# Require the gems listed in Gemfile, including any gems +# you've limited to :test, :development, or :production. +Bundler.require(*Rails.groups) + +module Flacon +  class Application < Rails::Application +    # Initialize configuration defaults for originally generated Rails version. +    config.load_defaults 7.2 + +    # Please, add to the `ignore` list any other `lib` subdirectories that do +    # not contain `.rb` files, or that should not be reloaded or eager loaded. +    # Common ones are `templates`, `generators`, or `middleware`, for example. +    config.autoload_lib(ignore: %w[assets tasks]) + +    # Configuration for the application, engines, and railties goes here. +    # +    # These settings can be overridden in specific environments using the files +    # in config/environments, which are processed later. +    # +    # config.time_zone = "Central Time (US & Canada)" +    # config.eager_load_paths << Rails.root.join("extras") +  end +end diff --git a/config/boot.rb b/config/boot.rb new file mode 100644 index 0000000..988a5dd --- /dev/null +++ b/config/boot.rb @@ -0,0 +1,4 @@ +ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__) + +require "bundler/setup" # Set up gems listed in the Gemfile. +require "bootsnap/setup" # Speed up boot time by caching expensive operations. diff --git a/config/cable.yml b/config/cable.yml new file mode 100644 index 0000000..3154ec0 --- /dev/null +++ b/config/cable.yml @@ -0,0 +1,10 @@ +development: +  adapter: async + +test: +  adapter: test + +production: +  adapter: redis +  url: <%= ENV.fetch("REDIS_URL") { "redis://localhost:6379/1" } %> +  channel_prefix: flacon_production diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc new file mode 100644 index 0000000..73199f2 --- /dev/null +++ b/config/credentials.yml.enc @@ -0,0 +1 @@ +KhN3Ieue96jo6tB7+ZHvb1A3AeiCbf5H01MsCT/hq7jXGQK8tN5Q5O17xk8cmrBT5ieca7C7SdwFkYsiTRS8LYj4EkfeKKu94Ul/yhuSnJpXOKsecE0xpOl4E3t3rIXHOTtr9oL8EoaGnchoagE520cCRkWA3RVa5X+2nxPtgUZ48/N4JNWxzeE+nmo9YX+b2eF/1cfowxn7CSi3s6/e/86DTgAeh2A4UgTljakxFoYRSJejHYvNdzXjqy7P71X7cmEl5UIxJt7POl58M3+cQJrA0bbrEubZYQIPQtDlgAZmtI3V0ZDC6fESRscmiEjfgFHBJ4jGCu+u/L4TKHqfLj80E03KFSLJOfl418WjxUMx7wB0SZezH5IbhZgtWgHxqraoTKjMBZGejq5o1h0O3pVrYwBb--Wk+54CbLm/lxWq1G--6RcfEkefUkMV/XiO+XGS5w==
\ No newline at end of file diff --git a/config/database.yml b/config/database.yml new file mode 100644 index 0000000..fbf675e --- /dev/null +++ b/config/database.yml @@ -0,0 +1,33 @@ +# SQLite. Versions 3.8.0 and up are supported. +#   gem install sqlite3 +# +#   Ensure the SQLite 3 gem is defined in your Gemfile +#   gem "sqlite3" +# +default: &default +  adapter: sqlite3 +  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> +  timeout: 5000 + +development: +  <<: *default +  database: storage/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: +  <<: *default +  database: storage/test.sqlite3 + + +# SQLite3 write its data on the local filesystem, as such it requires +# persistent disks. If you are deploying to a managed service, you should +# make sure it provides disk persistence, as many don't. +# +# Similarly, if you deploy your application as a Docker container, you must +# ensure the database is located in a persisted volume. +production: +  <<: *default +  # database: path/to/persistent/storage/production.sqlite3 +  database: storage/production.sqlite3 diff --git a/config/environment.rb b/config/environment.rb new file mode 100644 index 0000000..cac5315 --- /dev/null +++ b/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative "application" + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/config/environments/development.rb b/config/environments/development.rb new file mode 100644 index 0000000..9b67360 --- /dev/null +++ b/config/environments/development.rb @@ -0,0 +1,81 @@ +require "active_support/core_ext/integer/time" + +Rails.application.configure do +  # Settings specified here will take precedence over those in config/application.rb. + +  # In the development environment your application's code is reloaded any time +  # it changes. This slows down response time but is perfect for development +  # since you don't have to restart the web server when you make code changes. +  config.enable_reloading = true + +  # Do not eager load code on boot. +  config.eager_load = false + +  # Show full error reports. +  config.consider_all_requests_local = true + +  # Enable server timing. +  config.server_timing = true + +  # Enable/disable caching. By default caching is disabled. +  # Run rails dev:cache to toggle caching. +  if Rails.root.join("tmp/caching-dev.txt").exist? +    config.action_controller.perform_caching = true +    config.action_controller.enable_fragment_cache_logging = true + +    config.cache_store = :memory_store +    config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{2.days.to_i}" } +  else +    config.action_controller.perform_caching = false + +    config.cache_store = :null_store +  end + +  # Store uploaded files on the local file system (see config/storage.yml for options). +  config.active_storage.service = :local + +  # Don't care if the mailer can't send. +  config.action_mailer.raise_delivery_errors = false + +  # Disable caching for Action Mailer templates even if Action Controller +  # caching is enabled. +  config.action_mailer.perform_caching = false + +  config.action_mailer.default_url_options = { host: "localhost", port: 3000 } + +  # Print deprecation notices to the Rails logger. +  config.active_support.deprecation = :log + +  # Raise exceptions for disallowed deprecations. +  config.active_support.disallowed_deprecation = :raise + +  # Tell Active Support which deprecation messages to disallow. +  config.active_support.disallowed_deprecation_warnings = [] + +  # Raise an error on page load if there are pending migrations. +  config.active_record.migration_error = :page_load + +  # Highlight code that triggered database queries in logs. +  config.active_record.verbose_query_logs = true + +  # Highlight code that enqueued background job in logs. +  config.active_job.verbose_enqueue_logs = true + +  # Suppress logger output for asset requests. +  config.assets.quiet = true + +  # Raises error for missing translations. +  # config.i18n.raise_on_missing_translations = true + +  # Annotate rendered view with file names. +  config.action_view.annotate_rendered_view_with_filenames = true + +  # Uncomment if you wish to allow Action Cable access from any origin. +  # config.action_cable.disable_request_forgery_protection = true + +  # Raise error when a before_action's only/except options reference missing actions. +  config.action_controller.raise_on_missing_callback_actions = true + +  # Apply autocorrection by RuboCop to files generated by `bin/rails generate`. +  # config.generators.apply_rubocop_autocorrect_after_generate! +end diff --git a/config/environments/production.rb b/config/environments/production.rb new file mode 100644 index 0000000..fcd58d7 --- /dev/null +++ b/config/environments/production.rb @@ -0,0 +1,102 @@ +require "active_support/core_ext/integer/time" + +Rails.application.configure do +  # Settings specified here will take precedence over those in config/application.rb. + +  # Code is not reloaded between requests. +  config.enable_reloading = false + +  # Eager load code on boot. This eager loads most of Rails and +  # your application in memory, allowing both threaded web servers +  # and those relying on copy on write to perform better. +  # Rake tasks automatically ignore this option for performance. +  config.eager_load = true + +  # Full error reports are disabled and caching is turned on. +  config.consider_all_requests_local = false +  config.action_controller.perform_caching = true + +  # Ensures that a master key has been made available in ENV["RAILS_MASTER_KEY"], config/master.key, or an environment +  # key such as config/credentials/production.key. This key is used to decrypt credentials (and other encrypted files). +  # config.require_master_key = true + +  # Disable serving static files from `public/`, relying on NGINX/Apache to do so instead. +  # config.public_file_server.enabled = false + +  # Compress CSS using a preprocessor. +  # config.assets.css_compressor = :sass + +  # Do not fall back to assets pipeline if a precompiled asset is missed. +  config.assets.compile = false + +  # Enable serving of images, stylesheets, and JavaScripts from an asset server. +  # config.asset_host = "http://assets.example.com" + +  # Specifies the header that your server uses for sending files. +  # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache +  # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX + +  # Store uploaded files on the local file system (see config/storage.yml for options). +  config.active_storage.service = :local + +  # Mount Action Cable outside main process or domain. +  # config.action_cable.mount_path = nil +  # config.action_cable.url = "wss://example.com/cable" +  # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ] + +  # Assume all access to the app is happening through a SSL-terminating reverse proxy. +  # Can be used together with config.force_ssl for Strict-Transport-Security and secure cookies. +  # config.assume_ssl = true + +  # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. +  config.force_ssl = true + +  # Skip http-to-https redirect for the default health check endpoint. +  # config.ssl_options = { redirect: { exclude: ->(request) { request.path == "/up" } } } + +  # Log to STDOUT by default +  config.logger = ActiveSupport::Logger.new(STDOUT) +    .tap  { |logger| logger.formatter = ::Logger::Formatter.new } +    .then { |logger| ActiveSupport::TaggedLogging.new(logger) } + +  # Prepend all log lines with the following tags. +  config.log_tags = [ :request_id ] + +  # "info" includes generic and useful information about system operation, but avoids logging too much +  # information to avoid inadvertent exposure of personally identifiable information (PII). If you +  # want to log everything, set the level to "debug". +  config.log_level = ENV.fetch("RAILS_LOG_LEVEL", "info") + +  # Use a different cache store in production. +  # config.cache_store = :mem_cache_store + +  # Use a real queuing backend for Active Job (and separate queues per environment). +  # config.active_job.queue_adapter = :resque +  # config.active_job.queue_name_prefix = "flacon_production" + +  # Disable caching for Action Mailer templates even if Action Controller +  # caching is enabled. +  config.action_mailer.perform_caching = false + +  # Ignore bad email addresses and do not raise email delivery errors. +  # Set this to true and configure the email server for immediate delivery to raise delivery errors. +  # config.action_mailer.raise_delivery_errors = false + +  # Enable locale fallbacks for I18n (makes lookups for any locale fall back to +  # the I18n.default_locale when a translation cannot be found). +  config.i18n.fallbacks = true + +  # Don't log any deprecations. +  config.active_support.report_deprecations = false + +  # Do not dump schema after migrations. +  config.active_record.dump_schema_after_migration = false + +  # Enable DNS rebinding protection and other `Host` header attacks. +  # config.hosts = [ +  #   "example.com",     # Allow requests from example.com +  #   /.*\.example\.com/ # Allow requests from subdomains like `www.example.com` +  # ] +  # Skip DNS rebinding protection for the default health check endpoint. +  # config.host_authorization = { exclude: ->(request) { request.path == "/up" } } +end diff --git a/config/environments/test.rb b/config/environments/test.rb new file mode 100644 index 0000000..0c616a1 --- /dev/null +++ b/config/environments/test.rb @@ -0,0 +1,67 @@ +require "active_support/core_ext/integer/time" + +# The test environment is used exclusively to run your application's +# test suite. You never need to work with it otherwise. Remember that +# your test database is "scratch space" for the test suite and is wiped +# and recreated between test runs. Don't rely on the data there! + +Rails.application.configure do +  # Settings specified here will take precedence over those in config/application.rb. + +  # While tests run files are not watched, reloading is not necessary. +  config.enable_reloading = false + +  # Eager loading loads your entire application. When running a single test locally, +  # this is usually not necessary, and can slow down your test suite. However, it's +  # recommended that you enable it in continuous integration systems to ensure eager +  # loading is working properly before deploying your code. +  config.eager_load = ENV["CI"].present? + +  # Configure public file server for tests with Cache-Control for performance. +  config.public_file_server.headers = { "Cache-Control" => "public, max-age=#{1.hour.to_i}" } + +  # Show full error reports and disable caching. +  config.consider_all_requests_local = true +  config.action_controller.perform_caching = false +  config.cache_store = :null_store + +  # Render exception templates for rescuable exceptions and raise for other exceptions. +  config.action_dispatch.show_exceptions = :rescuable + +  # Disable request forgery protection in test environment. +  config.action_controller.allow_forgery_protection = false + +  # Store uploaded files on the local file system in a temporary directory. +  config.active_storage.service = :test + +  # Disable caching for Action Mailer templates even if Action Controller +  # caching is enabled. +  config.action_mailer.perform_caching = false + +  # Tell Action Mailer not to deliver emails to the real world. +  # The :test delivery method accumulates sent emails in the +  # ActionMailer::Base.deliveries array. +  config.action_mailer.delivery_method = :test + +  # Unlike controllers, the mailer instance doesn't have any context about the +  # incoming request so you'll need to provide the :host parameter yourself. +  config.action_mailer.default_url_options = { host: "www.example.com" } + +  # Print deprecation notices to the stderr. +  config.active_support.deprecation = :stderr + +  # Raise exceptions for disallowed deprecations. +  config.active_support.disallowed_deprecation = :raise + +  # Tell Active Support which deprecation messages to disallow. +  config.active_support.disallowed_deprecation_warnings = [] + +  # Raises error for missing translations. +  # config.i18n.raise_on_missing_translations = true + +  # Annotate rendered view with file names. +  # config.action_view.annotate_rendered_view_with_filenames = true + +  # Raise error when a before_action's only/except options reference missing actions. +  config.action_controller.raise_on_missing_callback_actions = true +end diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb new file mode 100644 index 0000000..bd5bcd2 --- /dev/null +++ b/config/initializers/assets.rb @@ -0,0 +1,12 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = "1.0" + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w[ admin.js admin.css ] diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb new file mode 100644 index 0000000..b3076b3 --- /dev/null +++ b/config/initializers/content_security_policy.rb @@ -0,0 +1,25 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide content security policy. +# See the Securing Rails Applications Guide for more information: +# https://guides.rubyonrails.org/security.html#content-security-policy-header + +# Rails.application.configure do +#   config.content_security_policy do |policy| +#     policy.default_src :self, :https +#     policy.font_src    :self, :https, :data +#     policy.img_src     :self, :https, :data +#     policy.object_src  :none +#     policy.script_src  :self, :https +#     policy.style_src   :self, :https +#     # Specify URI for violation reports +#     # policy.report_uri "/csp-violation-report-endpoint" +#   end +# +#   # Generate session nonces for permitted importmap, inline scripts, and inline styles. +#   config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s } +#   config.content_security_policy_nonce_directives = %w(script-src style-src) +# +#   # Report violations without enforcing the policy. +#   # config.content_security_policy_report_only = true +# end diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb new file mode 100644 index 0000000..c010b83 --- /dev/null +++ b/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# Configure parameters to be partially matched (e.g. passw matches password) and filtered from the log file. +# Use this to limit dissemination of sensitive information. +# See the ActiveSupport::ParameterFilter documentation for supported notations and behaviors. +Rails.application.config.filter_parameters += [ +  :passw, :email, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn +] diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb new file mode 100644 index 0000000..3860f65 --- /dev/null +++ b/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +#   inflect.plural /^(ox)$/i, "\\1en" +#   inflect.singular /^(ox)en/i, "\\1" +#   inflect.irregular "person", "people" +#   inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +#   inflect.acronym "RESTful" +# end diff --git a/config/initializers/permissions_policy.rb b/config/initializers/permissions_policy.rb new file mode 100644 index 0000000..7db3b95 --- /dev/null +++ b/config/initializers/permissions_policy.rb @@ -0,0 +1,13 @@ +# Be sure to restart your server when you modify this file. + +# Define an application-wide HTTP permissions policy. For further +# information see: https://developers.google.com/web/updates/2018/06/feature-policy + +# Rails.application.config.permissions_policy do |policy| +#   policy.camera      :none +#   policy.gyroscope   :none +#   policy.microphone  :none +#   policy.usb         :none +#   policy.fullscreen  :self +#   policy.payment     :self, "https://secure.example.com" +# end diff --git a/config/locales/en.yml b/config/locales/en.yml new file mode 100644 index 0000000..6c349ae --- /dev/null +++ b/config/locales/en.yml @@ -0,0 +1,31 @@ +# Files in the config/locales directory are used for internationalization and +# are automatically loaded by Rails. If you want to use locales other than +# English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +#     I18n.t "hello" +# +# In views, this is aliased to just `t`: +# +#     <%= t("hello") %> +# +# To use a different locale, set it with `I18n.locale`: +# +#     I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# To learn more about the API, please read the Rails Internationalization guide +# at https://guides.rubyonrails.org/i18n.html. +# +# Be aware that YAML interprets the following case-insensitive strings as +# booleans: `true`, `false`, `on`, `off`, `yes`, `no`. Therefore, these strings +# must be quoted to be interpreted as strings. For example: +# +#     en: +#       "yes": yup +#       enabled: "ON" + +en: +  hello: "Hello world" diff --git a/config/puma.rb b/config/puma.rb new file mode 100644 index 0000000..03c166f --- /dev/null +++ b/config/puma.rb @@ -0,0 +1,34 @@ +# This configuration file will be evaluated by Puma. The top-level methods that +# are invoked here are part of Puma's configuration DSL. For more information +# about methods provided by the DSL, see https://puma.io/puma/Puma/DSL.html. + +# Puma starts a configurable number of processes (workers) and each process +# serves each request in a thread from an internal thread pool. +# +# The ideal number of threads per worker depends both on how much time the +# application spends waiting for IO operations and on how much you wish to +# to prioritize throughput over latency. +# +# As a rule of thumb, increasing the number of threads will increase how much +# traffic a given process can handle (throughput), but due to CRuby's +# Global VM Lock (GVL) it has diminishing returns and will degrade the +# response time (latency) of the application. +# +# The default is set to 3 threads as it's deemed a decent compromise between +# throughput and latency for the average Rails application. +# +# Any libraries that use a connection pool or another resource pool should +# be configured to provide at least as many connections as the number of +# threads. This includes Active Record's `pool` parameter in `database.yml`. +threads_count = ENV.fetch("RAILS_MAX_THREADS", 3) +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +port ENV.fetch("PORT", 3000) + +# Allow puma to be restarted by `bin/rails restart` command. +plugin :tmp_restart + +# Specify the PID file. Defaults to tmp/pids/server.pid in development. +# In other environments, only set the PID file if requested. +pidfile ENV["PIDFILE"] if ENV["PIDFILE"] diff --git a/config/routes.rb b/config/routes.rb new file mode 100644 index 0000000..96bbb49 --- /dev/null +++ b/config/routes.rb @@ -0,0 +1,18 @@ +Rails.application.routes.draw do +  root "wines#index" +   +  resources :wines + +  # Define your application routes per the DSL in https://guides.rubyonrails.org/routing.html + +  # Reveal health status on /up that returns 200 if the app boots with no exceptions, otherwise 500. +  # Can be used by load balancers and uptime monitors to verify that the app is live. +  get "up" => "rails/health#show", as: :rails_health_check + +  # Render dynamic PWA files from app/views/pwa/* +  get "service-worker" => "rails/pwa#service_worker", as: :pwa_service_worker +  get "manifest" => "rails/pwa#manifest", as: :pwa_manifest + +  # Defines the root path route ("/") +  # root "posts#index" +end diff --git a/config/storage.yml b/config/storage.yml new file mode 100644 index 0000000..4942ab6 --- /dev/null +++ b/config/storage.yml @@ -0,0 +1,34 @@ +test: +  service: Disk +  root: <%= Rails.root.join("tmp/storage") %> + +local: +  service: Disk +  root: <%= Rails.root.join("storage") %> + +# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key) +# amazon: +#   service: S3 +#   access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %> +#   secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %> +#   region: us-east-1 +#   bucket: your_own_bucket-<%= Rails.env %> + +# Remember not to checkin your GCS keyfile to a repository +# google: +#   service: GCS +#   project: your_project +#   credentials: <%= Rails.root.join("path/to/gcs.keyfile") %> +#   bucket: your_own_bucket-<%= Rails.env %> + +# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key) +# microsoft: +#   service: AzureStorage +#   storage_account_name: your_account_name +#   storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %> +#   container: your_container_name-<%= Rails.env %> + +# mirror: +#   service: Mirror +#   primary: local +#   mirrors: [ amazon, google, microsoft ] | 
