Windows+cygwin+sshで”Could not create directory”が出るとき

エラーメッセージでは

Could not create directory ‘/home/(ユーザ名)/.ssh’.

とか出ますが、cygwinが認識するあなたのホームディレクトリはC:ドライブのルートとかではなくてcygwinのインストールディレクトリなので、たとえば、

C:/cygwin/home/akky/.ssh/

というディレクトリを作れば、そこにsshの設定を書き込んでくれます。

‘.ssh’というドットで始まるディレクトリの作り方は、.htaccessとかのファイルの時と同様ですが、GUIでは作れない(エラーになる。ムキー)ので、”ssh”とでもして作っておいて、コマンドプロンプトでその”ssh”があるディレクトリへ移動して、

> ren ssh .ssh

でその名前にできます。

cygwinの設定ファイルを変更してまったく別のディレクトリを使う手もあると思います。あくまで一例。

symfonyのsync(1.0の場合)、project:deploy(1.2の場合)がsshを呼び出す場合に上のエラーが気になる場合の対処でした。

[symfony] プラグインを簡単に作るためのプラグインsfTaskExtraPlugin

symfonyのプラグインはPEARのパッケージシステムを使っているのですけど、PEARのパッケージングって結構面倒で、僕はあまり好きではありません。PEARにもパッケージを作るためのツールがあるのですが、PHPのスクリプトを書くことになります。

symfony1.2には、symfonyのパッケージを作ることに特化したタスクがsfTaskExtraPluginという名前で提供されています

まだalpha版なので、alphaを明に指定してインストールします


$ symfony plugin:install -s alpha sfTaskExtraPlugin

このプラグインの中のパッケージ作成コマンドを呼ぶと、plugins/ディレクトリの下にある特定のプラグインを、PEARパッケージにしてそこに作ってくれます。


$ symfony plugin:package sfFaqPlugin

これだけで、plugins/sfFaqPlugin/sfFaqPlugin-1.1.0.tgz ができます。(プラグイン名やバージョン番号はサンプル)

プラグインになっていれば、symfonyコマンドでinstall/uninstallを管理できます。


$ symfony plugin:install /sandbox12/plugins/sfFaqPlugin/sfFaqPlugin-1.1.0.tgz

そこにあるpackage.xmlを使ってパッキングしてくれるので、xmlを開いて適度に編集することでバージョンや含むファイルを変えることができます。package.xmlが無い場合は、対話形式でpluginの説明や開発者の名前などが尋ねられるので、順番に入れていくとpackage.xmlも作成してくれます。

なので、たとえば、symfony1.0でしか動かないとpackage.xmlに書いてあるせい「だけで」symfony1.2にインストールできないpluginがあったとしたら、それをtarでplugins以下に展開して、package.xmlのrequire versionだけ1.3未満までオッケーにし、このタスクでパックすれば、1.2対応のpluginができるということです。

もしそういう風に1.2非対応のプラグインを1.2で使って、実績もあるなら、前のエントリで書いたように開発者になって公式サイトにアップするのもいいでしょう。

sfTaskExtraPluginには他に、pluginsの下に一からプラグインを作るためのgenerate:plugin、pluginの中にmoduleを追加するgenerate:plugin-moduleがあります。これらで生成したスケルトンには、テストコードの枠組みも最初からついてきます。

[symfony] 既存プラグインの書き換えを手伝うには

symfony公式サイトの”Plugins”に行くと、数百個のプラグインが提供されています。これらは、インストールするだけでsymfony製のサイトに新しい機能を付け加えるものです。

プラグインを作って登録したり、既にあるプラグインの開発に参加したり、バグ報告をするには、まずsymfony-projectサイトのユーザ登録をする必要があります。メールアドレスだけあれば、右サイドバーの”Create an account”から誰でもユーザ登録ができます。

ログインした状態でプラグインの個別ページ(例 sfFaqPlugin )へ行くと、”Contribute(貢献する)”というタブがあります。ここで、

  • developer: svnにアクセスできる開発者
  • packager: developerに加えて、プラグインの新バージョンをリリースできる開発者
  • leader: 全権限を持つプラグイン開発のリーダー

のどれになりたいかを選び、下のコメント欄には「何をどう直したいか」を書き込んで送信すると、既存の開発者に連絡が行きます。

symfony1.0でしか動かないプラグインは、元の開発者がメンテナンスを止めている場合もあるので、パッケージの1.2対応をしたいと思ったら、ここからどんどん申請して開発チームに入ることができるようです。

[symfony] admin generatorでデザインがあたらないとき

symfony1.2の管理画面自動生成機能を使うと、

$ symfony propel:generate-admin backend Post

だけで、Postクラスのオブジェクトを一覧して追加表示更新削除する画面を作ってくれますが、なぜか画面にデフォルトの管理画面のデザインが適用されず、アイコン類も出ないというのでつまりました。

呼べていない画像に/sfPropelPlugin/というパスがついてるので、それで検索をかけたら、同じ問題ではまってる人が公式フォーラムに。しかし、二人居て二人ともすぐに自己解決してます。

「脚注じゃなくて本文に書いてよ」とボヤかれていたので、マニュアルを見返したら、ちゃんとマニュアルに書いてありました。

$ symfony plugin:publish-assets

これを呼ばないと、generatorで作られた管理画面から呼ばれるCSSや画像ファイルがアプリの/web以下にコピーされないんですね。プラグインに含まれているCSS, 画像, Javascriptなんかを見える場所に移してくれるのがこのコマンドでした。

symfonyの主要ドキュメントがPDFでも提供開始

オフラインでもドキュメントを参照しやすいように、PDF版の提供が開始されました。

Jobeetチュートリアルは、symfony1.2の新しい本として出版されたPractical symfonyと同じものですね。バックエンドのORMでpropelを使う場合[pdf]のとDoctrineを使う場合[pdf]のと両方あります。

その他、sfFormの使い方を解説したForms bookやcookbook、symfony1.2への移行ガイドなどもpdfで入手できます。詳細は公式ブログで。