mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
Guard against calls to the database during db:create
Rails 5.2 has changed the way initializers are called during certain rake tasks including `db:create`. Initializers that were previously not loaded are now loaded (basically the whole app is loaded). This means any calls to #table_exists? that appear in the app will throw fatal errors as the database doesn't exist yet during that task, but those calls are made before `db:create` has even started, which means the database can't be created. There are also a few other places in Spree code where #table_exists? is called, and they already call #connected? first to guard against this issue.
This commit is contained in:
@@ -79,7 +79,8 @@ module Openfoodnetwork
|
||||
initializer 'ofn.spree_locale_settings', before: 'spree.promo.environment' do |app|
|
||||
Spree::Config['checkout_zone'] = ENV['CHECKOUT_ZONE']
|
||||
Spree::Config['currency'] = ENV['CURRENCY']
|
||||
if Spree::Country.table_exists?
|
||||
|
||||
if ActiveRecord::Base.connected? && Spree::Country.table_exists?
|
||||
country = Spree::Country.find_by(iso: ENV['DEFAULT_COUNTRY_CODE'])
|
||||
Spree::Config['default_country_id'] = country.id if country.present?
|
||||
else
|
||||
|
||||
@@ -9,6 +9,8 @@ module Spree
|
||||
# It also adds a validation on the input format.
|
||||
# It accepts as arguments a variable number of attribute as symbols
|
||||
def localize_number(*attributes)
|
||||
return unless connected?
|
||||
|
||||
validate :validate_localizable_number
|
||||
|
||||
attributes.each do |attribute|
|
||||
|
||||
Reference in New Issue
Block a user