Categories
open all | close allTags
名称 | OpenID | RESTful | ドキュメント | スキンエンジン | Subversion | タグ | アクセス制御 | CSRF | Aptana | Flash | フォーム | モデル | rake | デュアル・コア | テスト | 国際化 | 認証 | パソコン | MigrationSearch
デフォルト・テンプレートを実装
実際にホスティングのサーバー上で動かしてみるとやはりローカルのテストでは出てこなかったバグが表面化するもので,調整に追われています。中でも苦労しているのが認証関係で,標準の状態ではApacheがRailsにHTTP認証関係のヘッダを渡してくれないため,認証が失敗してしまいます。いろいろ調べるとFastCGIを使うときはRuby on Rails/apache2+FastCGIでBASIC認証という記事にあるようにRewriteRule ^(.*)$ dispatch.fcgi [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
を.htaccessに入れると動くのですが,CGI版でもそれでいいかとやってみると動かないのです。FastCGIだとプログラム修正時にプロセスを殺さないといけないなど,面倒なので,当面はCGIで動かそうと思っていたのですが,目論見どおりにはいかないものです。しょうがないので今はFCGIにしています。
そんなバグ取りをしながら,デフォルト・テンプレートの機能だけは投入しました。おかげでテンプレートの修正なしにタグの表示ができて楽チンです。
ページスイッチ部分の仕様
Foodynの公開をしてから,そういえばカテゴリー部分のクエリーを実装していなかったことに気付き,作業中です。それだけならたいした手間ではないのですが,以前から頭のどこかにあったページスイッチ部分を実装しようかと思い,遠回り中です。ページスイッチは,NucleusだとShowBlogsが生成するものをそのまま使っている人が多いと思いますが,ここのページにあるようないろいろなデザインができないのが残念なところ。また,配置もアイテム表示の直前か直後に固定されてしまいます。
ページスイッチを表示するスキン変数を別途用意すればいいのですが,表示内容の指定などをblog変数に合わせないといけません。そこで,Foodynではデータセットという概念を導入して,二重指定を不要にしようと思っています。ページスイッチのスキン変数かblog変数かどちらか先に指定したものの表示内容(1ページに表示するアイテムの数など)をデータセットとして,他方はデータの指示なしに表示できるようにします。表示機能なしで,データセットの指定だけするスキン変数も用意します。
頭の中では,この機能を応用して,1ページ内に複数のページスイッチを別の用途で置けるようにする実装もできているのですが,ちょっと面倒な点がいくつかあるので,後でやることになると思います。
なお,テンプレートのデフォルト値やインライン・テンプレートのアイディアはページスイッチのスキン変数を考える際に思いついたもの。脈絡ないようですが,実はあるのです。
テンプレート機能を使いやすくする
Nucleusの柔軟性を高めているのと同時に分かりにくいと言われる原因でもあるのがテンプレートのところだと思います。一つのテンプレートの中にも,アイテム表示に関連する部分,カテゴリーリストに関連する部分,コメントに関連する部分,画像表示に関連する部分など,いろいろな部分があることがさらに分かりにくさに拍車をかけています。Foodynでは二つの新しい機能を使ってこの部分を少し使いやすいものにしようと考えています。一つはデフォルト機能。「conifg/default_template.yml」というYAMLのファイルを用意し,それに各テンプレート・パーツのデフォルト値を置けるようにします。これによって,テンプレート指定なしでも,全く表示がないといったことがなくなります。
もう一つはインライン・テンプレートの機能。どちらかというとプラグインなどからの利用を想定していますが,YAMLの表記ルール(あるいはJSON)を使って,ユーザーが利用できるようにすることもあり得るでしょう。これはデータベースにテンプレートを入れなくてもテンプレート機能を使えるようにするもの。例えばプラグインからパラメータによって,テンプレートを変えて出力するといった使い方が簡単にできるようになります。ユーザーレベルではスキンにこれを記述できるようにすると,テンプレートなしで書けるようになります。そちらは実装するかどうか未定。
Rails2.1対応
Rails2.1に対応しようとしたら,ちょっとトラブリましたが,今は無事に動いています。Sourceforgeの方も修正済みなので,Rails2.1で動くはずです。ついでにこのサーバーでも動かそうとしているのですが
Application error
Rails application failed to start properly"
というエラーが出てしまい,うまく行きません。サーバーのエラーログも見ているのですが,理由がよく分かりません。困った困った。
一応公開しました
Sourceforgeのページはこちら。Subversionでダウンロードおよびブラウズができます。
サンプルで付けているデータベース接続用ファイルがsqlite3になっていたり(修正済み),このままでは使い方が分からないと思うので,ドキュメント作ります。
とりあえず最低限のことを。
Windowsの方はXAMPP使うよりInstantRails入れるのが吉だと思います。PHPも動くし。僕はそれにRadRails入れて使ってます。CPUが遅いとつらいかもしれないけど,いろいろ楽なのは確かです。
Macでの環境構築はこちらが参考になるでしょう。
それとDB接続の設定をしてrake db:migrateすれば一応動くようになります。
それから念のため,今のところNucleusのDBがあることを前提にしています。なくても動きますが,管理画面がほとんどできていないので自分でレコード作らないといけないから。Nucleusのデータを使う場合,佐藤(な)さんのDBCopyプラグインを使うのがお勧めです。
Railsの国際化機能
Rails2.2に国際化の機能が入ることになったので,Foodynでもそちらを使う方向で考えることにしました。これまで使う予定だったSimple Localizationも開発を終了するとのことです。というわけで,そこをはずしたりしてSubversionのプラグイン・ディレクトリをいじっていたら,うっかりしてサンプルプラグインを消してしまいました。まあ大部分のことはこのブログ中に書いてあるのでいいのですが,ちょっとショック。アイテムの書き込みと編集
リポジトリ公開する前に,あと一息だったアイテムの新規追加と編集機能を実装していました。後はアイテムリストのページ切り替えを付けるだけのところまで一応完成。あ,完成というには実際は程遠いですが,タイトルとbody,moreの編集とカテゴリ,タグの編集だけできます。今の作業ディレクトリは余計なものがいっぱい入っているので,ちゃんと整理してリポジトリ公開するのがちょっと大変かも。
覚書
パーサーはブログごとに選択・登録できるようにする(アイテムごとにしたい気持ちもあるけど,管理が煩雑になりそう)。したがって複数ブログにまたがった表示をするときはアイテムごとにパーサーを調べる必要がある。管理画面のスキン変数化とロジックの分離
Nucleus界隈で,管理画面をスキン変数にして,デザインを自由にいじれるようにしようという動きがあります。FoodynではRailsの標準のヘルパー機能(例えばフォームとオブジェクトを結び付ける機能)などを使うために,そこまでドラスチックなことは考えていないのですが,表示部分とロジックとは極力分離したいと思っています。現状はレイアウトを使うことでビューの中のロジックは独立した形になっていますが,それでもいくらか表示部分がビューに入ってきます。例えば,表を使って表示するときに1行ごとにスタイルを変えるとしたら,その部分はビューの中に書くことになります。ヘルパーやモデルのメソッドを使って完全にロジックを分離できるかどうか。ちょっと面倒そうです。
Subversionのホスティング
Google Codeっていう手もあったな。というかそれが一番手軽だったかも。追記:Google Codeでは,気にする必要はないんだろうけど「you have a lifetime creation limit of 10 projects in total」というのがちょっと引っかかります。一生で10個で足りるんだろうか(足りるだろうけど)。
さらに追記:Sourceforgeでプロジェクトの承認が降りました。将来,Rubyforgeを安心して使えるようになったら,乗り換えるかもしれませんが,とりあえずはSourceforgeで始めようと思います。.jpではなく.netの方なのでお間違えなく。