自分用もあって忘れないために WordPress.org へプラグインの公開の仕方をメモ。プラグインの作り方ではなく公開の仕方限定。
必要な知識
- PHP – WordPress 自体が PHP なのでこれは必須
- WordPress – WordPress のプラグインを書くためには WordPress の内部構造などを知っていないと難しい
- Subversion – WordPress.org は各種プラグインを SVN で管理している
プラグイン作った。次は?
- WordPress.org のアカウントを持っていなければ取得
- WordPress › Requests にて、プラグインの名前と説明と任意でプラグインのアドレスを書いてリクエスト送信
- リクエストが承認されると Subversion のアドレスが送られてくるので、そのリポジトリにプラグインをインポート
- 適切な readme.txt を作り、プラグインの本体ファイルに適切なコメントをつける(後述)
- リリースバーションごとに readme.txt などを編集し、SVN のタグ付けをする(後述)
- WordPress.org が15分毎に巡回してくれて、正しくコメントが付けられていればプラグインディレクトリーに掲載される
readme.txt とコメントとは?
WordPress.org はプラグインの更新のチェックに trunk/readme.txt と本体ファイルのコメントを使用する。
readme.txt は書式が決まっていて、readme.txt の例を参照。WordPress/BBPress Plugin readme.txt Validator を使用すればバリデートできる。
本体ファイルのコメントは、PHPファイルの先頭に次のようなコメントを書く。
/*
Plugin Name: Example Plugin
Plugin URI: http://example.com/foo
Description: This plugin is an example.
Version: 1.0
Author: Bar
Author URI: http://example.com
*/
他のプラグインを参考にすれば大体OK。
プラグインをリリースしたい
プラグインのリリースは SVN のタグ付けを使う。
readme.txt と 本体ファイルのコメントのそれぞれ Stable tag と Version の項目をリリースするバージョンにあわせる。
必要なファイルを編集したら SVN でタグ付け。タグ名は数字とピリオドのみを使ったほうが良いと公式のドキュメントには書いてある(1.2.3はOK、ver1.2RC1などはNG← 実際は可能)。
あとは巡回で更新が認識されればプラグインディレクトリーに載る。
参考になるドキュメント
だいぶ時間がたってしまい、新機能をずらずらと並べてもしかたありませんので、使ってみて一番気に入った機能を紹介します。
それは・・・速いこと!
カスタマイズ系のアプリケーションによくある弱点がカスタマイズしすぎると重くなるということですが、アドオンを大量に入れても重くならずに使えるというのはこれはもう機能なんじゃないかと。
ブックマークにタグが導入されたなどいろいろありますが、やはり速いのは一番気に入ってます。
ついに来ましたFirefox3。全世界が待ち望んでいた(?)日です。そんなわけで早速ギネスに貢献してきました。私が見たときでは一分間に5000回ダウンロードという数字を出していました。
まず使った感想は、早い!軽い!です。Gmailがトップスピードで開きます。メモリ使用量も改善され、私の環境ではFirefox2が使うメモリのピーク時の半分以下になってます。
これだけではなくまだまだ盛りだくさんなのですが、詳しいことは後でポストしたいと思います。
SVNのログでチケットの操作ができるとっても便利なtrac-post-commit-hookですが、DreamHostで使うには難がありました。
最大の難点は post-commit が dhapacheというユーザーで実行されるということで、これが数々の問題を引き起こします。
色々と実験して解決策を見つけたのでポストします。
なお、解決策は SQLite を使っている場合と MySQL を使っている場合で異なります。
SQLite と MySQL の共通 post-commit
コミット後にスクリプトを実行するため、/home/***/svn/projectid/hooks に post-commit という名前のファイルを作成します。
このファイルがコミット後に実行されるわけですが、dhapache によって実行されるため環境変数の再設定が必要になります。
それなので、.bash_profile などから必要な変数をコピーします。
そして、trac のソースの contrib ディレクトリから trac-post-commit-hook を post-commit と同じディレクトリにコピーします。
さらにsvn_commit_jp.mdから svnlog2utf8 を取得してパスの通るところに置いて実行権を与えます。
post-commitの例(パスなどは適宜変えてください):
#!/bin/sh
HOME=‘/home/***’
export PYTHONPATH="$HOME/local/lib/python: $HOME/local/lib/python/site-packages"
export LD_LIBRARY_PATH="$HOME/local/lib"
export PYTHON_EGG_CACHE="$HOME/tmp"
export PATH="$HOME/local/bin:$PATH"
REPOS="$1"
REV="$2"
LOG=`svnlook log -r $REV $REPOS | svnlog2utf8`
AUTHOR=`svnlook author -r $REV $REPOS | svnlog2utf8`
TRAC_ENV="$HOME/trac_sites/projectid/"
TRAC_URL="http://trac.example.com/projectid/"
python $REPOS/hooks/trac-post-commit-hook \
-p "$TRAC_ENV" \
-r "$REV" \
-u "$AUTHOR" \
-m "$LOG" \
-s "$TRAC_URL"
SQLiteの場合
SQLiteの場合は dhapache が trac のディレクトリの /db/trac.db(デフォルト) へアクセスする権限を持っていないため、エラーになります。
この場合は trac.db に「chmod o+rw」するしか方法がないと思います。書き込み権限を与えるのはやだなと思うときはMySQLの移行も考えてください(MySQLへのパスワードも dhapache が読み取れる必要があるので同じっていえば同じですが)。
MySQLの場合
MySQLの場合は、上で設定した「PYTHON_EGG_CACHE」の値が dhapache が書き込みできるディレクトリを指定していて、trac.ini を読み込めればOKです。
SQLite から MySQLへの移行
SQLite から MySQLへの移行は SqliteToPgScript を使うと便利です。
SqliteToPgScript でMySQLインポートしたら、trac.ini の database の指定を「mysql://user:password@host/database」のようにすればOKです。
6/4にCakePHPの1.2RC1が出ましたが、そこでBETWEENの挙動が変更になったのでメモ。
以前は
$conditions =
array(
‘Model.field’ =>
‘BETWEEN ‘ .
$start .
‘ AND ‘ .
$end
);
でBETWEENができましたが、RC1ではANDの両側にクォーテーションマークが付かなくなって、上記のコードではエラーがでます。そこで以下のコードでうまくいきます。
$conditions =
array(
‘Model.field >=’ =>
$start,
‘Model.field <=’ =>
$end
);
ちょっとハマったので気をつけましょう。
CakePHP 1.2 RC1からfindの条件指定方法が変更となった – Technote – by sizuhikoにて詳しい解説がありました。「?」がコツのようです。
DreamHostにはPHPが元々入ってますが、PECLなどの拡張ライブラリが使用できません。
加えてバージョンが古いのです。そこでPHPを自分でコンパイルしてインストールしました。
参考にしたのは、Installing PHP5 – DreamHost。
基本は上のページのスクリプトでインストールできるのですが、インストール場所を変えるためと依存パッケージを新しくするために書き直しました。
変更点は以下の通りで、
- PHP 5.2.6
- インストール先を $HOME/local に変更
- php.iniの場所を ${HOME}/etc/php5 に変更
- パッケージを最新のものに変更
- パッケージのURLを修正
などです。
まず PHP5インストールスクリプト をダウンロードして中身を解凍し、php5-install.sh の中の INSTALLDIR などを好きなように設定します。
初期状態でインストールした場合は /home/*****/local/bin/php がPHPバイナリとなります。
php5-install.sh を実行し、問題が無ければPHPが指定した場所へインストールされます。
後はサイト毎のfcgiファイルでexecの部分を「exec /home/*****/local/bin/php-cgi」と指定すればFastCGIでカスタムPHPが動きます。
「php-cgi」が要で、CLI版を指定してしまうとFastCGIが動きません。
このあとPECLなどを使う場合はパスが通っている必要があるので .bash_profile などに「export PATH=$HOME/local/bin:$PATH」などと指定しておきます。
スクリプトが途中で止まる・・・などあったらコメント下さい。
ちょっと前の話ですが、5月9日より、au携帯での送受信メールがGmail(au one メール)に自動保存できるようになりました。
自動保存の設定は、トップページ » メール » 携帯メール自動保存設定 にあります。
自動保存を設定するとau携帯のメールでの送受信メールがコピーされて自動保存されるようになります。これは便利です。
私は、普通のメールもジョークメールでも送信メールも含めてなんでも保存したがる派なので、携帯のメールには不満がありました。
そこで、microSDに手動で移して保存していました。
しかしこれは手動で移さなければならず、後で見返すという観点から見ても非常に使いづらいものです。
一般的ではない形式で保存されるため、PCにmicroSDを挿して見ようにも快適には見られません。
そんなわけで私にとっては嬉しいサービスなわけです。
保存するメールのフィルタリングなどがあるとなおいいですね。
ただ、今忙しいのと、携帯にメール送ってくれる友達が少ないので効果のほどはチェックしていませんが・・・
今後も携帯の欠点を補ってくれるサービスが、どんどん登場してくれることを願います。
Recent Comments