mirror of
https://github.com/codeninjasllc/discourse.git
synced 2024-11-30 10:58:31 -05:00
FIX: Couldn't migrate database from nothing due to I18n
Since I18n has a DB backend now, I've introduced a helper we can use to skip overrides in certain situations. Otherwise migration from empty databases was broken.
This commit is contained in:
parent
c9c083108a
commit
810a069cfd
7 changed files with 45 additions and 20 deletions
|
@ -1,11 +1,13 @@
|
||||||
class AddLoungeCategory < ActiveRecord::Migration
|
class AddLoungeCategory < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
unless Rails.env.test?
|
return if Rails.env.test?
|
||||||
|
|
||||||
|
I18n.backend.overrides_disabled do
|
||||||
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'lounge_category_id'"
|
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'lounge_category_id'"
|
||||||
if result.count == 0
|
if result.count == 0
|
||||||
description = I18n.t('vip_category_description')
|
description = I18n.t('vip_category_description', skip_overrides: true)
|
||||||
|
|
||||||
default_name = I18n.t('vip_category_name')
|
default_name = I18n.t('vip_category_name', skip_overrides: true)
|
||||||
name = if Category.exec_sql("SELECT 1 FROM categories where name = '#{default_name}'").count == 0
|
name = if Category.exec_sql("SELECT 1 FROM categories where name = '#{default_name}'").count == 0
|
||||||
default_name
|
default_name
|
||||||
else
|
else
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
class AddMetaCategory < ActiveRecord::Migration
|
class AddMetaCategory < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
unless Rails.env.test?
|
return if Rails.env.test?
|
||||||
|
|
||||||
|
I18n.backend.overrides_disabled do
|
||||||
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'meta_category_id'"
|
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'meta_category_id'"
|
||||||
if result.count == 0
|
if result.count == 0
|
||||||
description = I18n.t('meta_category_description')
|
description = I18n.t('meta_category_description')
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
class AddStaffCategory < ActiveRecord::Migration
|
class AddStaffCategory < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
unless Rails.env.test?
|
return if Rails.env.test?
|
||||||
|
|
||||||
|
I18n.backend.overrides_disabled do
|
||||||
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'staff_category_id'"
|
result = Category.exec_sql "SELECT 1 FROM site_settings where name = 'staff_category_id'"
|
||||||
if result.count == 0
|
if result.count == 0
|
||||||
description = I18n.t('staff_category_description')
|
description = I18n.t('staff_category_description')
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
class FixTosName < ActiveRecord::Migration
|
class FixTosName < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
execute ActiveRecord::Base.sql_fragment('UPDATE user_fields SET name = ? WHERE name = ?', I18n.t('terms_of_service.title'), I18n.t("terms_of_service.signup_form_message"))
|
I18n.backend.overrides_disabled do
|
||||||
|
execute ActiveRecord::Base.sql_fragment('UPDATE user_fields SET name = ? WHERE name = ?', I18n.t('terms_of_service.title'), I18n.t("terms_of_service.signup_form_message"))
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,9 +1,11 @@
|
||||||
class MigrateOldModeratorPosts < ActiveRecord::Migration
|
class MigrateOldModeratorPosts < ActiveRecord::Migration
|
||||||
|
|
||||||
def migrate_key(action_code)
|
def migrate_key(action_code)
|
||||||
text = I18n.t("topic_statuses.#{action_code.gsub('.', '_')}")
|
I18n.backend.overrides_disabled do
|
||||||
|
text = I18n.t("topic_statuses.#{action_code.gsub('.', '_')}")
|
||||||
|
|
||||||
execute "UPDATE posts SET action_code = '#{action_code}', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = #{ActiveRecord::Base.connection.quote(text)}"
|
execute "UPDATE posts SET action_code = '#{action_code}', raw = '', cooked = '', post_type = 3 where post_type = 2 AND raw = #{ActiveRecord::Base.connection.quote(text)}"
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def up
|
def up
|
||||||
|
|
|
@ -1,16 +1,18 @@
|
||||||
class MigrateAutoClosePosts < ActiveRecord::Migration
|
class MigrateAutoClosePosts < ActiveRecord::Migration
|
||||||
def up
|
def up
|
||||||
strings = []
|
I18n.backend.overrides_disabled do
|
||||||
%w(days hours lastpost_days lastpost_hours lastpost_minutes).map do |k|
|
strings = []
|
||||||
strings << I18n.t("topic_statuses.autoclosed_enabled_#{k}.one")
|
%w(days hours lastpost_days lastpost_hours lastpost_minutes).map do |k|
|
||||||
strings << I18n.t("topic_statuses.autoclosed_enabled_#{k}.other").sub("%{count}", "\\d+")
|
strings << I18n.t("topic_statuses.autoclosed_enabled_#{k}.one")
|
||||||
|
strings << I18n.t("topic_statuses.autoclosed_enabled_#{k}.other").sub("%{count}", "\\d+")
|
||||||
|
end
|
||||||
|
|
||||||
|
sql = "UPDATE posts SET action_code = 'autoclosed.enabled', post_type = 3 "
|
||||||
|
sql << "WHERE post_type = 2 AND ("
|
||||||
|
sql << strings.map {|s| "raw ~* #{ActiveRecord::Base.connection.quote(s)}" }.join(' OR ')
|
||||||
|
sql << ")"
|
||||||
|
|
||||||
|
execute sql
|
||||||
end
|
end
|
||||||
|
|
||||||
sql = "UPDATE posts SET action_code = 'autoclosed.enabled', post_type = 3 "
|
|
||||||
sql << "WHERE post_type = 2 AND ("
|
|
||||||
sql << strings.map {|s| "raw ~* #{ActiveRecord::Base.connection.quote(s)}" }.join(' OR ')
|
|
||||||
sql << ")"
|
|
||||||
|
|
||||||
execute sql
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -5,6 +5,10 @@ module I18n
|
||||||
class DiscourseI18n < I18n::Backend::Simple
|
class DiscourseI18n < I18n::Backend::Simple
|
||||||
include I18n::Backend::Pluralization
|
include I18n::Backend::Pluralization
|
||||||
|
|
||||||
|
def initialize
|
||||||
|
@overrides_enabled = true
|
||||||
|
end
|
||||||
|
|
||||||
def available_locales
|
def available_locales
|
||||||
# in case you are wondering this is:
|
# in case you are wondering this is:
|
||||||
# Dir.glob( File.join(Rails.root, 'config', 'locales', 'client.*.yml') )
|
# Dir.glob( File.join(Rails.root, 'config', 'locales', 'client.*.yml') )
|
||||||
|
@ -30,6 +34,15 @@ module I18n
|
||||||
@overrides[locale]
|
@overrides[locale]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# In some environments such as migrations we don't want to use overrides.
|
||||||
|
# Use this to disable them over a block of ruby code
|
||||||
|
def overrides_disabled
|
||||||
|
@overrides_enabled = false
|
||||||
|
yield
|
||||||
|
ensure
|
||||||
|
@overrides_enabled = true
|
||||||
|
end
|
||||||
|
|
||||||
# force explicit loading
|
# force explicit loading
|
||||||
def load_translations(*filenames)
|
def load_translations(*filenames)
|
||||||
unless filenames.empty?
|
unless filenames.empty?
|
||||||
|
@ -42,7 +55,7 @@ module I18n
|
||||||
end
|
end
|
||||||
|
|
||||||
def translate(locale, key, options = {})
|
def translate(locale, key, options = {})
|
||||||
overrides_for(locale)[key] || super(locale, key, options)
|
(@overrides_enabled && overrides_for(locale)[key]) || super(locale, key, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
def exists?(locale, key)
|
def exists?(locale, key)
|
||||||
|
|
Loading…
Reference in a new issue