symfony 1.1にアップグレードしよう!
既存のプロジェクトのアップグレード
前回は簡単にsymfony 1.1の新機能について紹介しましたが、今回は既存のプロジェクトをアップグレードする場合の注意点などを解説していきたいと思います。
symfony 1.1がリリースされたので、現在symfony 1.0を使って開発しているプロジェクトをどうするのかを考えている方も多いでしょう。取り得る対応策としては、「アップグレードしない」「アップグレードするが、互換性は有効とする」「アップグレードもして、互換性も基本的に使用しない」の3つになるでしょう。
もちろん作業量は順に増えていきます。アップグレードしない場合は基本的に何もしないわけですから何も作業する必要はありません。残りの2つの作業量はいかほどなのか、というのが今回の主題になります。結論から先に言うと、まずアップグレードしてすぐ動いたら互換性有効の状態で動かすとよいでしょう。
互換性を使用しない場合、多少大げさに聞こえるかもしれませんが、新しく環境を作り直した方が楽かもしれない、ということを覚悟したほうがよいでしょう。そのため、事前に作業を把握しておく必要があります。
では、早速symfonyのバージョンアップをする方法を紹介しましょう。ドキュメントは英語(http://trac.symfony-project.com/browser/branches/1.1/UPGRADE)、日本語(http://code.google.com/p/symfony-doc-ja/wiki/Upgrade_from_1_0_to_1_1)で用意されているので、詳細についてはそちらを参照してください。このドキュメントに大きな変更点がほとんど記述されているので、じっくりこのドキュメントを読めば移行に必要な知識は手に入れることができます。
symfony 1.1にアップグレードしてみよう
すでにsymfony 1.0がインストールされている場合、アップグレードするとすべてのプロジェクトに影響を与えてしまうので、既存のsymfony 1.0とは別の場所にインストールします。今回の解説では/usr/local/symfonyにインストールしますので、適宜ご自分の環境に合わせてパスを変換してください。
さてインストールと言っても以下のようにsymfonyをダウンロードして、展開するだけです。
$ cd /usr/local/symfony
$ wget http://www.symfony-project.org/get/symfony-1.1.0RC1.tgz
$ tar xzf symfony-1.1.0RC1.tgz
これで、準備が整ったので既存のプロジェクトをsymfony 1.1に切り替える作業に入ります。なお、アップグレードする場合はきちんと既存プロジェクトはバックアップしておきましょう。
最初にドキュメントにあるように、プロジェクトディレクトリ直下にあるsymfonyファイルを以下のように入れ替えます。このファイルはsymfonyコマンドをプロジェクト単位で実行するためのファイルです。今回のように/usr/local/symfonyにライブラリを展開した場合、実行ファイルがコピーされないので、symfonyコマンドの実行にこのファイルを使用します。
$ cp /usr/local/symfony/symfony-1.1.0RC1/lib/task/generator/skeleton/project/symfony symfony
このファイルでは、config/ProjectConfiguration.class.phpというファイルが読み込まれます。このファイルは以前までのconfig/config.phpに代わるもので、アップグレードする場合は自分で作成する必要があります(図1)。なお、sfCoreAutoload.class.phpのパスは自分で修正する必要があるので注意してください。
上記のファイルを作成すれば、symfonyコマンドを実行することができます。以下に示すようにインストールされているsymfonyコマンドとプロジェクトのsymfonyコマンドのバージョンが違うことを確認しておきましょう。以後は、プロジェクトディレクトリ直下にあるsymfonyファイルをコマンドとして使用します。
$ symfony -V
symfony version 1.0.15
$ ./symfony -V
symfony version 1.1.0-RC1 (/usr/local/symfony/symfony-1.1.0RC1/lib)