開発

index付け。挙動変更。

Railsのデフォルトの挙動が index__on_... なので、too long と怒られまくった件。 とりあえず、index というprefixもいらないだろうし、もそのテーブルに対するインデックス付けなので、いらない、ってことで。オリジナルの実装が module ActiveRecord modu…

次に狙うのは、いきなりGoogle Gadget

Gagget の XML の仕様さえちゃんと理解すればできそう。まずは、既存のGoogle Gadgetを貼付けられるようにすることから。JBoss Portal のサンプルデモをみてみたが、、、Portal の編集画面で選ぶより、http://www.google.com/ig/directory?synd=open から選…

国際化方針

gettext でいけそうなので、これを基本として、 _(), n_() の中身(msgid)は基本日本語 で。というのもmsgidを英語にして変な英語を書いてしまってmsgidを変更する、というのは影響度が大きいし、かといって、viewやcontrollerには msg000010 とかそういうコ…

ついでにユーザープロファイル項目の...

サイト管理者が自由に設定できるように変更した。実際、3つぐらいの場所で必要があってこのアプリケーションを作っている訳ですが、プロファイルの項目を固定にするとちょっと役に立ちそうがないので。一応、lang パラメーターで国際化できていることを確認…

国際化...

gettext を入れる。またインストール段階で依存するパッケージが増えた。。。問題は、component配下の、アプリケーション稼働時に動的に追加/削除されるpoをどうするか。基本は、po を分割しておいて、makemoするときだけ、cat でつなぐのがいいのかな。あ…

スケジュール

7月中にリファクタリングが完成。 8月中にBlog, RSS, Calendar, Sticky, Schedulerなど個人で必要なツール類をコンポーネント実装する。 9月に入ったら、SNS的なfunctionを使った何か実装。ちょっと、スケジュールがきびしめです、最近は土日も開発に当て…

ユーザーモデルのリファクタリング完了。

ロールベースのユーザーモデルに加えて、リレーションモデル、というのも入れてみました。 User A は User Bの友人である、とか。勢い余って、is_anti なるフィールドも。 つまり、嫌いな人間も登録できるSNS。 (普通に、迷惑リストなわけですが)、ユーザー…

MigrationでデータのCRUD操作を行う。

普通に、Model.new なり Model.create なりをすればいいのですが、それだと標準出力にログを残すためのメッセージを書かないといけない。これは面倒。というわけで、データ操作のためのDataStatementsクラスを記述する(スキーマ操作(create_table, add_index…

コントローラーはデータじゃない。

http://d.hatena.ne.jp/yssk22/20070608#1181321445 は我ながらあほだ。。

り・ふぁくたりんぐ

yssk22@webjourney.org [trunk]> find . -name '*.rb' | xargs wc | tail -n1 11815 38164 443377 totalこれぐらいならいける!と思って、RSpecを導入し、仕様を記述しながら一から作り直してます。でもそれほどつらい作業ではないのはなんでだろう。むしろ…

DSLで。

class HogeController < ApplicationController is_widget { display_name "Hogehoge" permissions {...} } end のほうがいいか。書いていて、permissionsがpermission key と role array のハッシュで記述するため、さらにその外側にHashを設けると{}が入り…

DRY descriptorファイルの情報量削減。

Widgetの情報やらページの情報をdescriptorファイルやmigrationファイルに書くのはDRYに反する(ActionControllerの定義とdescriptor定義で重複する部分がある、ということで class HogeWidgetController < ActionController::Base is_widget {:display_name …

リファクタリング・URL再考

/installed_widgets/add_page_widget_window/ というURLがある。これは、ユーザーがページに追加するwidgetを選択する画面のURLだ。 しかし、このURLだと、あたかもここにアクセスすることでpage_widget_widnowをaddするように見えてしまう。renameする。/in…

リファクタリング

コンポーネント周りから。 Rails 2.0でなくなったときに、代替策を考えられるように、Railsのコンポーネントに依存している部分を極力集中化させる。 WjInstalledComponent#install(component_name) #uninstall(component_name) の実装を放置していたので実…

再開

1ヶ月ぐらいコードに触れず、ほかのツールなどを触っていました。 で、次のバージョンアップを「GW明けに」と考えていたら、気がつけばGW直前です。とりあえずは、Widgetの管理ページ(Blogへの投稿とかRSSの登録とか)を、既存のWidgetインスタンスとは別の…

RMagic::Image#thumbnail!

強いなぁ、これ。例外処理省略して書くとこんな感じで、ajax っぽいuploader作りました。ポイントは、dummy フレームを使って、multipartのフォームをpostする点と、画像の表示更新にURIクエリでタイムスタンプを付与しているところ。タイムスタンプを付与し…

RMagick

画像のサムネイル処理などが必要になってきたので、いれました。RMagick 自体はgemでインストールできるのでいいのですが、ImageMagickなどのprerequistic なものもインストールが必要で、ちょっと敷居が高くなってしまったように思います。yumとかでインス…

ticket #9 fixed

vim 設定周りがまだ手になじんでいませんが、徐々に開発再開。0.2 => 0.3 は結構機能追加するつもりなので、GW明けぐらいにリリースしたいなぁ、と考えています。GWは旅行しながらプログラミングwhttp://trac.webjourney.org/webjourney/ticket/9パーミッシ…