diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 29ae927..eceae76 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -5,11 +5,11 @@ class ApplicationController < BaseController helper_method :protect - @@test_host - @@test_location + # @@test_host + # @@test_location def default_url_options - { host: "#{request.protocol}#{request.host_with_port}" } + { host: "#{request.protocol}#{request.host_with_port}", trailing_slash: true } end def capture_page_info @@ -82,17 +82,17 @@ class ApplicationController < BaseController @is_policy_page = true end - def self.set_host(host) - @@test_host = host - end + # def self.set_host(host) + # @@test_host = host + # end - def self.set_location(location) - @@test_location = location - end + # def self.set_location(location) + # @@test_location = location + # end - def self.get_location() - @@test_location - end + # def self.get_location() + # @@test_location + # end def js_error # send and email if this is production @@ -118,7 +118,7 @@ class ApplicationController < BaseController requestHash['env'][key.to_s] = value.to_s end - UserMailer.error_report( + UserMailer.send_mail(:error_report, "A JavaScript error has occurred", report, params[:message], @@ -127,7 +127,7 @@ class ApplicationController < BaseController params, current_user, Time.now.strftime("%d/%m/%Y %H:%M") - ).deliver_later! + ) end rescue Exception => exception2 logger.info exception2.to_s @@ -193,7 +193,7 @@ class ApplicationController < BaseController request.env.each do | key, value | requestHash['env'][key.to_s] = value.to_s end - UserMailer.error_report( + UserMailer.send_mail(:error_report, "An error has occurred in #{Rails.env}", nil, exception.to_s, @@ -202,7 +202,7 @@ class ApplicationController < BaseController params, current_user, Time.now.strftime("%d/%m/%Y %H:%M") - ).deliver_later! + ) end end @@ -234,21 +234,21 @@ class ApplicationController < BaseController end end - UserMailer.contact( + UserMailer.send_mail(:contact, current_user || params[:email], params[:subject], params[:message], email_list - ).deliver_later + ) request_info = session['request_info'] || { 'request' => request, 'params' => params } - UserMailer.contact_details( + UserMailer.send_mail(:contact_details, current_user || params[:email], params[:subject], params[:message], request_info['request'], request_info['params'] - ).deliver_later + ) redirect_to contact_sent_path end @@ -323,7 +323,7 @@ class ApplicationController < BaseController object.get_translators(data, locale).each do |id, user| if user.id != current_user.id && user.id != translator_id LinguaFranca.with_locale user.locale do - UserMailer.send(mailer, object.id, data, locale, user.id, translator.id).deliver_later + UserMailer.send_mail(:send, mailer, object.id, data, locale, user.id, translator.id) end end end @@ -337,7 +337,7 @@ class ApplicationController < BaseController object.get_translators(data).each do |id, user| if user.id != current_user.id LinguaFranca.with_locale user.locale do - UserMailer.send(mailer, object.id, data, user.id, current_user.id) + UserMailer.send_mail(:send, mailer, object.id, data, user.id, current_user.id) end end end @@ -360,7 +360,7 @@ class ApplicationController < BaseController request.env.each do | key, value | requestHash['env'][key.to_s] = value.to_s end - UserMailer.error_report( + UserMailer.send_mail(:error_report, "A missing translation found in #{Rails.env}", "

A translation for #{key} in #{locale.to_s} was found. The text that was rendered to the user was:

#{str || 'nil'}
", exception.to_s, @@ -369,7 +369,7 @@ class ApplicationController < BaseController params, current_user.id, Time.now.strftime("%d/%m/%Y %H:%M") - ).deliver_later! + ) rescue Exception => exception2 logger.info exception2.to_s logger.info exception2.backtrace.join("\n") @@ -636,6 +636,6 @@ class ApplicationController < BaseController # send the confirmation email and make sure it get sent as quickly as possible def send_confirmation(confirmation) - UserMailer.email_confirmation(confirmation.id).deliver_now + UserMailer.send_mail(:email_confirmation, confirmation.id) end end diff --git a/app/controllers/conference_administration_controller.rb b/app/controllers/conference_administration_controller.rb index 432d21a..39ee9a1 100644 --- a/app/controllers/conference_administration_controller.rb +++ b/app/controllers/conference_administration_controller.rb @@ -1015,13 +1015,13 @@ class ConferenceAdministrationController < ApplicationController @register_template = :administration if params[:button] == 'send' view_context.broadcast_to(@send_to).each do |user| - UserMailer.broadcast( + UserMailer.send_mail(:broadcast, "#{request.protocol}#{request.host_with_port}", @subject, @body, user.id, @this_conference.id - ).deliver_later + ) end redirect_to administration_step_path(@this_conference.slug, :broadcast_sent) return true @@ -1030,13 +1030,13 @@ class ConferenceAdministrationController < ApplicationController @broadcast_step = :preview elsif params[:button] == 'test' @broadcast_step = :test - UserMailer.broadcast( + UserMailer.send_mail(:broadcast, "#{request.protocol}#{request.host_with_port}", @subject, @body, current_user.id, @this_conference.id - ).deliver_later + ) @send_to_count = view_context.broadcast_to(@send_to).size end return false diff --git a/app/controllers/workshops_controller.rb b/app/controllers/workshops_controller.rb index e835e70..c23dd80 100644 --- a/app/controllers/workshops_controller.rb +++ b/app/controllers/workshops_controller.rb @@ -217,7 +217,7 @@ class WorkshopsController < ApplicationController # create the request by making the user a facilitator but making their role 'requested' WorkshopFacilitator.create(user_id: current_user.id, workshop_id: workshop.id, role: :requested) - UserMailer.workshop_facilitator_request(workshop.id, current_user.id, params[:message]).deliver_later + UserMailer.send_mail(:workshop_facilitator_request, workshop.id, current_user.id, params[:message]) redirect_to sent_facilitate_workshop_url(@this_conference.slug, workshop.id) end @@ -251,7 +251,7 @@ class WorkshopsController < ApplicationController f.role = :collaborator f.save LinguaFranca.with_locale(user.locale) do - UserMailer.workshop_facilitator_request_approved(workshop.id, user.id).deliver_later + UserMailer.send_mail(:workshop_facilitator_request_approved, workshop.id, user.id) end return redirect_to view_workshop_url(@this_conference.slug, workshop.id) end @@ -261,7 +261,7 @@ class WorkshopsController < ApplicationController :workshop_id => workshop.id, :user_id => user_id) LinguaFranca.with_locale user.locale do - UserMailer.workshop_facilitator_request_denied(workshop.id, user.id).deliver_later + UserMailer.send_mail(:workshop_facilitator_request_denied, workshop.id, user.id) end return redirect_to view_workshop_url(@this_conference.slug, workshop.id) end @@ -309,7 +309,7 @@ class WorkshopsController < ApplicationController WorkshopFacilitator.create(user_id: user.id, workshop_id: workshop.id, role: :collaborator) LinguaFranca.with_locale user.locale do - UserMailer.workshop_facilitator_request_approved(workshop.id, user.id).deliver_later + UserMailer.send_mail(:workshop_facilitator_request_approved, workshop.id, user.id) end end @@ -329,7 +329,7 @@ class WorkshopsController < ApplicationController unless comment.user.id == current_user.id LinguaFranca.with_locale comment.user.locale do - UserMailer.workshop_comment(workshop.id, new_comment.id, comment.user.id).deliver_later + UserMailer.send_mail(:workshop_comment, workshop.id, new_comment.id, comment.user.id) end end elsif params[:button] = 'add_comment' @@ -338,7 +338,7 @@ class WorkshopsController < ApplicationController workshop.active_facilitators.each do | u | unless u.id == current_user.id LinguaFranca.with_locale u.locale do - UserMailer.workshop_comment(workshop.id, new_comment.id, u.id).deliver_later + UserMailer.send_mail(:workshop_comment, workshop.id, new_comment.id, u.id) end end end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index bdd9ea2..7a616ee 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -167,6 +167,14 @@ class UserMailer < ActionMailer::Base mail to: 'goodgodwin@hotmail.com', subject: @subject end + def self.send_mail(*args) + if Rails.env.preview? || Rails.env.production? + delay(Rails.env).send(*args) + else + send(*args).deliver_now + end + end + private def set_host(*args) if Rails.env.production? diff --git a/config/application.rb b/config/application.rb index 835f28b..ff374bc 100644 --- a/config/application.rb +++ b/config/application.rb @@ -21,7 +21,6 @@ module BikeBike # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded. # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s] - config.action_controller.default_url_options = { :trailing_slash => true } config.i18n.default_locale = :en config.i18n.enforce_available_locales = false self.paths['config/database'] = Rails.root.join('config', 'database.yml') diff --git a/config/environments/development.rb b/config/environments/development.rb index dce186a..1754556 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -58,4 +58,5 @@ BikeBike::Application.configure do config.action_mailer.delivery_method = :letter_opener Paypal.sandbox! + config.action_controller.default_url_options = { trailing_slash: true } end diff --git a/config/environments/preview.rb b/config/environments/preview.rb index 8c77f27..bca5fd7 100644 --- a/config/environments/preview.rb +++ b/config/environments/preview.rb @@ -1,105 +1,107 @@ BikeBike::Application.configure do - # Settings specified here will take precedence over those in config/application.rb. + # 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 thread 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 Rails's static asset server (Apache or nginx will already do 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 - - # Generate digests for assets URLs. - config.assets.digest = true - - # Version of your assets, change this if you want to expire all your assets. - config.assets.version = '1.0101' - - # 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 - - # Set to :debug to see everything in the log. - config.log_level = :info - - #config.cache_classes = true - #config.serve_static_assets = true - #config.assets.compile = true - # config.assets.digest = true - - # 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 - - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = "http://assets.example.com" - - # Precompile additional assets. - # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. - # config.assets.precompile += %w( search.js ) - config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) - #config.action_controller.asset_host = "https://preview-cdn.bikebike.org" - - # 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 can not be found). - config.i18n.fallbacks = true - - # Send deprecation notices to registered listeners. - config.active_support.deprecation = :notify - - # Disable automatic flushing of the log to improve performance. - # config.autoflush_log = false - - # Use default logging formatter so that PID and timestamp are not suppressed. - config.log_formatter = ::Logger::Formatter.new - - config.action_mailer.delivery_method = :smtp - config.action_mailer.smtp_settings = { - :address => 'mail.bikebike.org', - :domain => 'preview.bikebike.org', - :port => 587, - :authentication => :plain, - :enable_starttls_auto => true, - :openssl_verify_mode => 'none', - :user_name => 'info@preview.bikebike.org', - :password => 'test' - } - config.action_mailer.raise_delivery_errors = true - config.action_mailer.perform_deliveries = true - - I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_SUBDOMAIN - I18n.config.subdomain_format = 'preview-%' - I18n.config.host_locale_regex = /^preview\-([a-z]{2})\.[^\.]+\..*$/ + # 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 thread 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 Rails's static asset server (Apache or nginx will already do 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 + + # Generate digests for assets URLs. + config.assets.digest = true + + # Version of your assets, change this if you want to expire all your assets. + config.assets.version = '1.0101' + + # 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 + + # Set to :debug to see everything in the log. + config.log_level = :info + + #config.cache_classes = true + #config.serve_static_assets = true + #config.assets.compile = true + # config.assets.digest = true + + # 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 + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = "http://assets.example.com" + + # Precompile additional assets. + # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. + # config.assets.precompile += %w( search.js ) + config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) + #config.action_controller.asset_host = "https://preview-cdn.bikebike.org" + + # 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 can not be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Disable automatic flushing of the log to improve performance. + # config.autoflush_log = false + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + config.action_mailer.delivery_method = :smtp + config.action_mailer.smtp_settings = { + :address => 'smtp.gmail.com', + :domain => 'bikebike.org', + :port => 587, + :authentication => :plain, + :enable_starttls_auto => true, + :openssl_verify_mode => 'none', + :user_name => '', + :password => '' + } + config.action_mailer.raise_delivery_errors = true + config.action_mailer.perform_deliveries = true + + I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_SUBDOMAIN + I18n.config.subdomain_format = 'preview-%' + I18n.config.host_locale_regex = /^preview\-([a-z]{2})\.[^\.]+\..*$/ + config.action_controller.default_url_options = { host: 'https://bikebike.org', trailing_slash: true } + Sidekiq::Extensions.enable_delay! end diff --git a/config/environments/production.rb b/config/environments/production.rb index 4bc609a..657c6a7 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -1,103 +1,105 @@ BikeBike::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 thread 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 Rails's static asset server (Apache or nginx will already do 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 - - # Generate digests for assets URLs. - config.assets.digest = true - - # Version of your assets, change this if you want to expire all your assets. - config.assets.version = '1.01' - - # 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 - - # Set to :debug to see everything in the log. - config.log_level = :info - - #config.cache_classes = true - #config.serve_static_assets = true - #config.assets.compile = true - # config.assets.digest = true - - # 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 - - # Enable serving of images, stylesheets, and JavaScripts from an asset server. - # config.action_controller.asset_host = "http://assets.example.com" - - # Precompile additional assets. - # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. - # config.assets.precompile += %w( search.js ) - #config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) - config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.svg) - #config.action_controller.asset_host = "https://cdn.bikebike.org" - - # 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 can not be found). - config.i18n.fallbacks = true - - # Send deprecation notices to registered listeners. - config.active_support.deprecation = :notify - - # Disable automatic flushing of the log to improve performance. - # config.autoflush_log = false - - # Use default logging formatter so that PID and timestamp are not suppressed. - config.log_formatter = ::Logger::Formatter.new - - config.action_mailer.delivery_method = :smtp - config.action_mailer.smtp_settings = { - :address => 'smtp.gmail.com', - :domain => 'bikebike.org', - :port => 587, - :authentication => :plain, - :enable_starttls_auto => true, - :openssl_verify_mode => 'none', - :user_name => '', - :password => '' - } - config.action_mailer.raise_delivery_errors = true - config.action_mailer.perform_deliveries = true - I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_SUBDOMAIN + # 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 thread 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 Rails's static asset server (Apache or nginx will already do 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 + + # Generate digests for assets URLs. + config.assets.digest = true + + # Version of your assets, change this if you want to expire all your assets. + config.assets.version = '1.01' + + # 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 + + # Set to :debug to see everything in the log. + config.log_level = :info + + #config.cache_classes = true + #config.serve_static_assets = true + #config.assets.compile = true + # config.assets.digest = true + + # 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 + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = "http://assets.example.com" + + # Precompile additional assets. + # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. + # config.assets.precompile += %w( search.js ) + #config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif) + config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.svg) + #config.action_controller.asset_host = "https://cdn.bikebike.org" + + # 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 can not be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Disable automatic flushing of the log to improve performance. + # config.autoflush_log = false + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + config.action_mailer.delivery_method = :smtp + config.action_mailer.smtp_settings = { + :address => 'smtp.gmail.com', + :domain => 'bikebike.org', + :port => 587, + :authentication => :plain, + :enable_starttls_auto => true, + :openssl_verify_mode => 'none', + :user_name => '', + :password => '' + } + config.action_mailer.raise_delivery_errors = true + config.action_mailer.perform_deliveries = true + I18n.config.language_detection_method = I18n::Config::DETECT_LANGUAGE_FROM_SUBDOMAIN + config.action_controller.default_url_options = { host: 'https://bikebike.org', trailing_slash: true } + Sidekiq::Extensions.enable_delay! end