LoginSignup
7
5

More than 5 years have passed since last update.

vccwのWordmoveを最新にする(Rubyバージョンをアップデート)

Last updated at Posted at 2017-11-20

Wordpressの管理(デプロイ etc)にはvccwにお世話になっています。
ただ、最近データベースをデプロイする時に以下のエラーがよく発生します。

wordmove/sql_adapter.rb:44:in `gsub!': invalid byte sequence in UTF-8 (ArgumentError)

vccw内でデプロイを行う場合、Wordmoveというライブラリを使用しています。
WordmoveではWordpressのデータベースに含まれているホスト名を自動で置換してくれる処理が含まれているのですが、この処理でエラーが発生しているようです。

対策としてvccw内のWordmoveをアップデートしてWordpress cli(wp search-replace)を使った置換方式に変更します。

なお、きちんと確認はしていませんが以下のようにエラーが発生しているようです。

  1. Wordpressのデータベースをmysqldumpを使用してテキストに出力
  2. dumpファイル(テキスト)をデプロイ先にアップロード
  3. dumpファイル内にあるhost名をruby内で置換
  4. dumpファイルにUTF-8形式以外の文字列が含まれているためエラー

インストール済みのRubyを削除する

まずはvccw内のubuntuに含まれているオリジナルのrubyを削除します。2017.11現在ubuntuのRubyバージョンは2.3ですが、Wordmoveの最新バージョンではRubyバージョン2.4が必要となります。

$ sudo apt-get remove ruby

brightboxのレポジトリを追加

brightboxのレポジトリを追加します。
Rubyを一からビルドするのが面倒なのでビルド済みのパッケージを使用します。brightboxはUKのCloud Hosting会社のようですが、信用ならない人は一からビルドすることをおすすめします。

$ sudo apt-add-repository ppa:brightbox/ruby-ng
$ sudo apt-get update

Ruby packages for Ubuntu

Ruby2.4をインストール

Rubyバージョン2.4をインストールします。rubyという名前のパッケージではなくruby2.4というバージョンを含んだ形の名前になっていますので注意して下さい。

$ sudo apt-get install ruby2.4 ruby2.4-dev

Rubyバージョンの確認

rubyコマンドが問題なく使用できるか確認します。

$ ruby -v
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux-gnu]

なお、ruby2.4というコマンドでもRubyが使えるようです。
また、複数のバージョンをインストールしてもrbenvのようにバージョンを切り替える方法も備えているようです。ruby-switchを確認してみて下さい。

Gemを使用してWordmoveをインストール

Gemを使用してWordmoveをインストールします。vccwではWordmoveの他にbundlerもインストールしていたのでインストールしておきます。

$ gem install bundler
$ gem install wordmove

bundler がどのように使用されているか確認できていません。もしかするとbundlerのバージョンが異なることでエラーが起きるかもしれません。

Wordmoveの設定を変更してデプロイ

最新のWordmoveではMovefileに以下の設定が追加となっています。

Movefile
global:
  sql_adapter: "default"

defaultはrubyを使ったテキスト置換処理となります。wordpress cliを使用した置換に変更したい場合は以下のようにします。

Movefile
global:
  sql_adapter: "wpcli"

この状態で push or pull を実行するとwordmove内でwp search-replaceを使用した置換処理を実行してくれます。

7
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
5