2015年4月12日日曜日

web2py アップグレード豆知識

web2pyアップグレード
作成したアプリケーションを、新しいバージョンの web2py に適用する場合は、幾つか方法があります。代表的な方法は、
  1. web2py管理画面の「アップグレード」ボタンを押す
  2. 新しいバージョンのweb2pyをダウンロードし、applicationsフォルダに作成したアプリケーションのフォルダを丸ごとコピーする
  3. (デベロッパー版web2pyを利用している場合) git pull コマンドで更新する

一番目の方法(a)は、web2pyの管理画面にあるアップグレードボタンを押すと、更新が完了します。
※追記
アップグレードボタンを押しても、エラーで更新されない時があります。この場合、web2pyフォルダーにある web2py_src_downloaded.zip ファイルを削除してみてください。前回アップグレード時に使用した更新用ファイルが、削除できないのが原因です。

しかし元のweb2pyのバージョンが古い場合など、更新が上手く行われない場合があります。その場合は、2番目の方法(b)でアップグレードすることが必要です。

アプリは別の場所で管理して、applicationsフォルダー下にシンボリック・リンクを貼るだけでも大丈夫です。

三番目の方法(c)は、GitHub のリポジトリにある web2py デベロッパー版を使用している場合に可能です。以前は GoogleCode で Mercurial で管理されていましたが、現在は Git で管理されています(昨年末位に変更になりました)。

アップグレード後の新規アプリケーションの注意点
新規アプリは、 welcome アプリをひな形に生成されます。しかしアップグレード後に新規アプリを生成しても、アップグレードが反映されていない時があります。その場合 web2py フォルダーの次のファイルを削除してください。

welcome.w2p

これは welcomeアプリのパッケージなのですが、アップグレード時に何らかの原因で削除されないまま残ると、アップグレードが反映されないということが起こります。新規アプリケーション作成時に wlecome.w2p ファイルがないと、welcomeアプリから自動生成されます。

アップグレード後の既存アプリケーションの注意点
アップグレードしても、アプリ・フォルダにある既存のファイルの変更は行われません。特に web2py 2.10.1 以降は Bootstrap3 に変更になりましたが、web2py をアップグレードしても既存アプリは Bootstrap2 のままという状態になります。

もし既存のアプリにもアップグレードを反映させたい場合は、アプリ・フォルダー内のファイルを手動で更新していく必要があります。このためアプリの作成時には、将来のアップグレードも考えて、記述方法を考えておく必要があります。例えば、次のようなことを考慮する必要があります。

  • 新規アプリ作成時の既存のファイルには、なるべく変更を加えない。モデル・コントローラ・ビューなどは、アプリ用に新しいファイルを生成して記述する。
  • 既存ファイルに記述する必要がある場合は、コメントを付けるなど変更点が後日わかるようにしておく。


以上簡単ですが、アップグレードの豆知識を書いておきます。