diff --git a/Capfile b/Capfile index 961d5b90b..0f81c1684 100644 --- a/Capfile +++ b/Capfile @@ -16,11 +16,7 @@ require 'capistrano/deploy' # https://github.com/capistrano/passenger # require 'capistrano/rails' - -stage = ARGV.first -if stage != 'production' # Sorry, production is not ready yet - require 'capistrano/rbenv' -end +require 'capistrano/rbenv' # Load custom tasks from `lib/capistrano/tasks` if you have any defined Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } diff --git a/Gemfile b/Gemfile index f8b962925..76bb04c84 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,6 @@ gem 'has_scope' gem 'pundit', '~> 2.0.0' gem 'pg', '0.21.0' gem 'hstore_translate' -gem 'dalli' gem 'devise', '~> 4.5.0' gem "http_accept_language", '~> 2.1.1' gem 'unicorn' diff --git a/Gemfile.lock b/Gemfile.lock index 0e5810de5..400b860bc 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -107,7 +107,6 @@ GEM concurrent-ruby (1.1.5) connection_pool (2.2.1) crass (1.0.4) - dalli (2.7.2) database_cleaner (1.6.2) debug_inspector (0.0.3) devise (4.5.0) @@ -405,7 +404,6 @@ DEPENDENCIES capistrano-rbenv (~> 2.1) capybara (~> 3.15) coffee-rails - dalli database_cleaner (= 1.6.2) devise (~> 4.5.0) dotenv-rails (~> 2.7.1) diff --git a/app/models/concerns/lazy_recoverable.rb b/app/models/concerns/lazy_recoverable.rb deleted file mode 100644 index 897fdcab1..000000000 --- a/app/models/concerns/lazy_recoverable.rb +++ /dev/null @@ -1,18 +0,0 @@ -# Overrides part of Devise::Models::Recoverable -# -# If the devised model has a recent enough token, just use it again! -# This way, the user will get the same token even if they receive two -# password recover email. -module LazyRecoverable - extend ActiveSupport::Concern - - RESET_PASSWORD_TOKEN_LAZINESS = 20.minutes - - def set_reset_password_token - # Just cache it! :) - cache_key = "reset_password_token_hash:#{self.reset_password_token}" - Rails.cache.fetch(cache_key, expires_in: RESET_PASSWORD_TOKEN_LAZINESS) do - super - end - end -end diff --git a/app/models/user.rb b/app/models/user.rb index fca0fdff6..11e194e7d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,6 +1,4 @@ class User < ActiveRecord::Base - include LazyRecoverable - devise *[ :database_authenticatable, :recoverable, diff --git a/app/views/devise/passwords/new.html.erb b/app/views/devise/passwords/new.html.erb index 3a1d0144b..fe217bb68 100644 --- a/app/views/devise/passwords/new.html.erb +++ b/app/views/devise/passwords/new.html.erb @@ -18,7 +18,7 @@
- <%= f.submit t(".send_instructions"), class: "btn btn-primary btn-lg col-xs-12" %> + <%= f.submit t(".send_instructions"), class: "btn btn-primary btn-lg col-xs-12", data: { disable_with: '...' } %>
diff --git a/config/database.yml b/config/database.yml index 83e46dd15..cc142aa2d 100644 --- a/config/database.yml +++ b/config/database.yml @@ -31,8 +31,8 @@ staging: database: <%= ENV.fetch('DATABASE_NAME', 'timeoverflow_staging') %> production: - # Set DATABASE_URL environment variable - url: <%= ENV['DATABASE_URL'] %> + <<: *defaults + database: <%= ENV.fetch('DATABASE_NAME', 'timeoverflow_production') %> next: <<: *defaults diff --git a/config/deploy.rb b/config/deploy.rb index eb4d44cf7..ba4e81a33 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -47,13 +47,20 @@ # Default value for keep_releases is 5 # set :keep_releases, 5 -namespace :deploy do - after :restart, :clear_cache do - on roles(:web), in: :groups, limit: 3, wait: 10 do - # Here we can do anything such as: - # within release_path do - # execute :rake, 'cache:clear' - # end +namespace :unicorn do + desc 'reload Unicorn' + task :reload do + on roles(:app) do + execute "sudo systemctl reload timeoverflow" + end + end +end + +namespace :sidekiq do + desc 'reload Sidekiq' + task :restart do + on roles(:app) do + execute "sudo systemctl restart sidekiq" end end end @@ -67,4 +74,8 @@ end end end + before "deploy:migrate", "deploy:db:load" if ENV["COLD"] + +after "deploy:finishing", "unicorn:reload" +after "deploy:finishing", "sidekiq:restart" diff --git a/config/environments/next.rb b/config/environments/next.rb deleted file mode 100644 index 1ba241c29..000000000 --- a/config/environments/next.rb +++ /dev/null @@ -1,98 +0,0 @@ -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/environments/next.rb b/config/environments/next.rb new file mode 120000 index 000000000..0c153beb0 --- /dev/null +++ b/config/environments/next.rb @@ -0,0 +1 @@ +config/environments/production.rb \ No newline at end of file diff --git a/config/environments/production.rb b/config/environments/production.rb index 63287d136..a08c2828b 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -56,7 +56,6 @@ # 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' diff --git a/config/environments/staging.rb b/config/environments/staging.rb index 1ba241c29..1020fbbbf 100644 --- a/config/environments/staging.rb +++ b/config/environments/staging.rb @@ -56,7 +56,6 @@ # 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'