Попытка миграции с WordPress на GitHub.com

06 November 2010 #jekyll#wordpress#ruby

Не мало уже статей написал про платформу Github.com. И постоянно готовил себя к переносу сайта.

После некоторых тестов, возник вопрос о переносе существующих записей на новый движок. В разделе Blog migrations официальной документации jekyll представлены примеры миграции с различных платформ. Решил попробовать, так ли все безоблачно?

Так как миграция проходит с непосредственным обращением к базе данных, то либо приходиться ставить jekyll на сервер, либо переносить базу на локальный компьютер. Я решил совершить всю операцию непосредственно на сервере.

Предварительно нужно подготовить сервер установкой ряда пакетов:

$ sudo gem install sequel
$ sudo apt-get install libmysql-ruby

Теперь вытягиваем с помощью Git последнюю версию jekyll (можно этого и не делать, ведь мы уже устанавливали jekyll на сервер, и просто скопировать требуемые файлы из /usr/lib/ruby/gems/1.8/gems/jekyll-0.7.0/, это кому как проще), и создаем директорию для работы:

$ cd
$ mkdir temp; cd temp
$ git clone https://github.com/mojombo/jekyll.git

И проводим сам импорт, вместо соответствующих значений подставляя свои:

$ export DB=my_wpdb
$ export USER=dbuser 
$ export PASS=dbpass 
$ ruby -r './jekyll/lib/jekyll/migrators/wordpress' -e 'Jekyll::WordPress.process( "#{ENV["DB"]}", "#{ENV["USER"]}", "#{ENV["PASS"]}")'

Если префикс таблиц базы данных не менялся, то все пройдет достаточно спокойно. В противном случае экспорт закончится сообщением об ошибке соединения с таблицей базы данных wp_post, что у меня и произошло.

Для решения данной проблемы, открываем файл jekyll/lib/jekyll/migrators/wordpress.rb и в 19 строке меняем префикс таблицы на свой (для примера from wp_post => from sec_post). После чего запускаем последнюю из приведенных выше команд снова и получаем каталог _post, который будет содержать в себе все импортируемые записи. Обращаю внимание на то, что обрабатываются только те записи, что имеют статус опубликованных. Все черновики пропускаются.

И вот тут появляется проблема, решения которой я пока не нашел. Все файлы, которые создаются в результате миграции (а это обычные текстовые файлы в разметке markdown), имеют кодировку 7bit ASCII characters, все русские символы, естественно пропадают. Если бы все статьи были бы на английском языке, то проблем бы не возникло. Но тут, вся информация теряется.

Очередная проблема, которая требует своего решения. Будем копать!