PCRE не поддерживает синтаксис \uXXXX
. Используйте вместо этого \x{XXXX}
. См. здесь .
Ваш диапазон \u2e80-\u9fff
также эквивалентен
\p{InCJK_Radicals_Supplement}\p{InKangxi_Radicals}\p{InIdeographic_Description_Characters}\p{InCJK_Symbols_and_Punctuation}\p{InHiragana}\p{InKatakana}\p{InBopomofo}\p{InHangul_Compatibility_Jamo}\p{InKanbun}\p{InBopomofo_Extended}\p{InKatakana_Phonetic_Extensions}\p{InEnclosed_CJK_Letters_and_Months}\p{InCJK_Compatibility}\p{InCJK_Unified_Ideographs_Extension_A}\p{InYijing_Hexagram_Symbols}\p{InCJK_Unified_Ideographs}
Не забудьте добавить модификатор u
(/regex here/u
), если вы имеете дело с UTF -8. Если вы имеете дело с другой многобайтовой кодировкой, вы должны сначала преобразовать ее в UTF-8.
Вы хотите ActiveRecord :: Base # install_connection . Вы, вероятно, захотите использовать его в абстрактном подклассе, чтобы модели, использующие ручные подключения, не мешали использованию подключения остальной частью вашего приложения:
class LogBase < ActiveRecord::Base
self.abstract_class = true
end
class LogItem < LogBase
...
end
LogItem.establish_connection { ... }
LogItem.find_by_ ...
Если у вас когда-либо будет только одна модель, которая выполняет ручные подключения, абстрактный класс не нужен.
Знаете ли вы полный набор баз данных, к которым вы можете подключиться? В таком случае database.yml может быть вам полезен. Вы можете поместить всю информацию туда в виде каталога, присвоив каждой базе данных имя, а затем динамически выбрать, с какой из них установить_connection в приложении, используя эти имена:
# database.yml
atlanta:
host: atlantadb.foo.com
# foo.rb
LogItem.establish_connection :atlanta
Установка соединений может быть довольно сложной задачей, вдвойне, если сайты разделены глобальной сетью. Я' d подумайте, имеет ли смысл использовать подход «извлечение-преобразование-загрузка» и использование ежечасного / ежедневного задания cron для копирования данных на сайт централизованной отчетности. Это самая простая форма хранилища данных и очень часто используемый подход. Если вы используете MySql, Maatkit Sync - это небольшой изящный инструмент, такой как rsync для таблиц. В качестве альтернативы вы, вероятно, используете базу данных, которая поддерживает репликацию главный-подчиненный, хотя это может быть значительно сложнее в обслуживании.
Rails пока не поддерживает сразу несколько баз данных (кто знает, может, никогда не поддержит). Вам придется каким-то образом перехватить соединение с базой данных в ActiveRecord для этой модели.
Здесь - документация по активной записи для этого, а здесь специфическая документация , которую вам придется переопределить.
Этот действительно хорошо объясняет процесс.
Есть также несколько полупроизводственных проектов , решающих эту проблему.