diff --git a/Capfile b/Capfile index da85f9d98..961d5b90b 100644 --- a/Capfile +++ b/Capfile @@ -18,7 +18,7 @@ require 'capistrano/deploy' require 'capistrano/rails' stage = ARGV.first -if stage == 'staging' # Sorry, production is not ready yet +if stage != 'production' # Sorry, production is not ready yet require 'capistrano/rbenv' end diff --git a/config/database.yml b/config/database.yml index 590d9d50e..83e46dd15 100644 --- a/config/database.yml +++ b/config/database.yml @@ -33,3 +33,7 @@ staging: production: # Set DATABASE_URL environment variable url: <%= ENV['DATABASE_URL'] %> + +next: + <<: *defaults + database: <%= ENV.fetch('DATABASE_NAME', 'timeoverflow_production') %> diff --git a/config/deploy.rb b/config/deploy.rb index cfe7362b2..eb4d44cf7 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -57,3 +57,14 @@ end end end + +task "deploy:db:load" do + on primary :db do + within release_path do + with rails_env: fetch(:rails_env) do + execute :rake, "db:schema:load" + end + end + end +end +before "deploy:migrate", "deploy:db:load" if ENV["COLD"] diff --git a/config/deploy/next.rb b/config/deploy/next.rb new file mode 100644 index 000000000..6b603eb07 --- /dev/null +++ b/config/deploy/next.rb @@ -0,0 +1 @@ +server 'next.timeoverflow.org', user: 'timeoverflow', roles: %w(app db web) diff --git a/config/environments/next.rb b/config/environments/next.rb new file mode 100644 index 000000000..1ba241c29 --- /dev/null +++ b/config/environments/next.rb @@ -0,0 +1,98 @@ +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 + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Enable Rack::Cache to put a simple HTTP cache in front of your application + # Add `rack-cache` to your Gemfile before enabling this. + # For large-scale production use, consider using a caching reverse proxy like + # NGINX, varnish or squid. + # config.action_dispatch.rack_cache = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.serve_static_files = true + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = true # false + + # Asset digests allow you to set far-future HTTP expiration dates on all assets, + # yet still be able to expire them through the digest params. + config.assets.digest = true + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # 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 + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + # config.log_tags = [ :subdomain, :uuid ] + + # Use a different logger for distributed setups. + # config.logger = ActiveSupport::TaggedLogging.new(SyslogLogger.new) + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + config.cache_store = :dalli_store + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # 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.delivery_method = :smtp + config.action_mailer.default_url_options = { + host: ENV["MAIL_LINK_HOST"], + protocol: (ENV["MAIL_LINK_PROTO"] || "https") + } + + # Retrieve SMTP configuration from environment variables + # starting with `SMTP_` + smtp_env = Hash[ENV.map do |k,v| + if /^SMTP_(.*)$/ === k + [$1.downcase.to_sym, YAML.load(v)] + end + end.compact] + + if smtp_env.present? + config.action_mailer.smtp_settings = smtp_env + end + + # 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 + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/config/secrets.yml b/config/secrets.yml index f915c5e4c..8dc976e9c 100644 --- a/config/secrets.yml +++ b/config/secrets.yml @@ -9,3 +9,6 @@ staging: production: secret_key_base: <%= ENV['SECRET_TOKEN'] %> + +next: + secret_key_base: <%= ENV['SECRET_TOKEN'] %>