From b5b03e44960ef031e2297bc03052cff95df7e8a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Javi=20Mart=C3=ADn?= Date: Fri, 29 Mar 2024 16:37:38 +0100 Subject: [PATCH] Base staging configuration on the production one There was only one different line between these two lines, and we really want these two files to be as similar as possible, so testing on a staging server we get the same results we'll get on production. This duplication made it easy to forget to update the staging.rb file when updating the production.rb, particularly when upgrading to a new version of Rails, which automatically changes the production.rb file but not the staging.rb one. So, now that we're getting ready to upgrade to Rails 7.0, we're basing the staging configuration on the production one, just like we based the preproduction configuration on the staging one in commit 7b91adb16. --- config/environments/custom/production.rb | 6 +- config/environments/staging.rb | 133 +---------------------- 2 files changed, 6 insertions(+), 133 deletions(-) diff --git a/config/environments/custom/production.rb b/config/environments/custom/production.rb index ffdddca82..e1ad2f4a8 100644 --- a/config/environments/custom/production.rb +++ b/config/environments/custom/production.rb @@ -1,4 +1,8 @@ Rails.application.configure do # Overwrite settings for the production environment or add your own - # custom settings for this environment. + # custom settings for this environment. Note these changes will + # also affect the staging and preproduction environments, so edit the + # `config/environments/custom/staging.rb` and/or + # `config/environments/custom/preproduction.rb` files if you don't + # want these changes to be applied there as well. end diff --git a/config/environments/staging.rb b/config/environments/staging.rb index 5c53afc8e..b18206e7c 100644 --- a/config/environments/staging.rb +++ b/config/environments/staging.rb @@ -1,138 +1,7 @@ -require "active_support/core_ext/integer/time" +require Rails.root.join("config", "environments", "production") Rails.application.configure do - # Settings specified here will take precedence over those in config/application.rb. - - # Code is not reloaded between requests. - config.cache_classes = true - - # 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 - - # Because autoloading is disabled in production environments with Rails 5, - # using autoload_paths will not load needed classes from specified paths. - # The solution to this, is to ask Rails to eager load classes. - config.eager_load_paths += ["#{config.root}/lib"] - - # 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 either ENV["RAILS_MASTER_KEY"] - # or in config/master.key. This key is used to decrypt credentials (and other encrypted files). - # config.require_master_key = true - - # Disable serving static files from the `/public` folder by default since - # Apache or NGINX already handles this. - config.public_file_server.enabled = ENV["RAILS_SERVE_STATIC_FILES"].present? - - # Compress JavaScripts and CSS. - config.assets.js_compressor = Uglifier.new(harmony: true) - # config.assets.css_compressor = :sass - - # Do not fallback 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 - - # 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.*/ ] - - # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. - # Configure force_ssl in secrets.yml - config.force_ssl = Rails.application.secrets.force_ssl - - # Include generic and useful information about system operation, but avoid logging too much - # information to avoid inadvertent exposure of personally identifiable information (PII). config.log_level = :debug - - # Prepend all log lines with the following tags. - config.log_tags = [:request_id] - - # Use a different cache store in production. - config.cache_store = :mem_cache_store, { namespace: proc { Tenant.current_schema }} - - # 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 = "consul_#{Rails.env}" - - 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 = true - config.action_mailer.default_url_options = { host: Rails.application.secrets.server_name } - - # Configure your SMTP service credentials in secrets.yml - if Rails.application.secrets.smtp_settings - config.action_mailer.delivery_method = Rails.application.secrets.mailer_delivery_method || :smtp - config.action_mailer.smtp_settings = Rails.application.secrets.smtp_settings - end - - # Disable locale fallbacks for I18n - # (prevents using fallback locales set in application.rb). - # config.i18n.fallbacks = false - - # Send deprecation notices to registered listeners. - config.active_support.deprecation = :notify - - # Log disallowed deprecations. - config.active_support.disallowed_deprecation = :log - - # Tell Active Support which deprecation messages to disallow. - config.active_support.disallowed_deprecation_warnings = [] - - # Use default logging formatter so that PID and timestamp are not suppressed. - config.log_formatter = ::Logger::Formatter.new - - # Rotate logger - logger = ActiveSupport::Logger.new(config.default_log_file, "daily") - logger.formatter = config.log_formatter - config.logger = ActiveSupport::TaggedLogging.new(logger) - - # Use a different logger for distributed setups. - # require "syslog/logger" - # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name") - - if ENV["RAILS_LOG_TO_STDOUT"].present? - logger = ActiveSupport::Logger.new(STDOUT) - logger.formatter = config.log_formatter - config.logger = ActiveSupport::TaggedLogging.new(logger) - end - - # Do not dump schema after migrations. - config.active_record.dump_schema_after_migration = false - - # Inserts middleware to perform automatic connection switching. - # The `database_selector` hash is used to pass options to the DatabaseSelector - # middleware. The `delay` is used to determine how long to wait after a write - # to send a subsequent read to the primary. - # - # The `database_resolver` class is used by the middleware to determine which - # database is appropriate to use based on the time delay. - # - # The `database_resolver_context` class is used by the middleware to set - # timestamps for the last write to the primary. The resolver uses the context - # class timestamps to determine how long to wait before reading from the - # replica. - # - # By default Rails will store a last write timestamp in the session. The - # DatabaseSelector middleware is designed as such you can define your own - # strategy for connection switching and pass that into the middleware through - # these configuration options. - # config.active_record.database_selector = { delay: 2.seconds } - # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver - # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session end require Rails.root.join("config", "environments", "custom", "staging")