<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Foodyn CMS開発日誌</title>
    <link>http://www.matsubarafamily.com/lab/</link>
    <description></description>
    <!-- optional tags -->
    <language>ja</language>           <!-- valid langugae goes here -->
    <generator>Nucleus CMS v3.31SP1</generator>
    <copyright>ｩ</copyright>             <!-- Copyright notice -->
    <category>Weblog</category>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>http://www.matsubarafamily.com/lab//nucleus/nucleus2.gif</url>
      <title>Foodyn CMS開発日誌</title>
      <link>http://www.matsubarafamily.com/lab/</link>
    </image>
    

<item>
 <title><![CDATA[URL設定]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=496</link>
<description><![CDATA[年末から年明けにかけてMovable TypeのブログをWordPressに移行するブログ記事がいくつか出ていました。やっぱり長くやっているブログだとURLを変えずに移行するというのは大事でしょうね。<br />
<br />
Foodynでは現状のルーティングは割と固定的になっているのでパーマリンクに年月日を入れるような形式には対応していません。以前からここはどうしようか悩んでいるところではあったのですが，これらの記事を読むと，もっと自由度を高めるべきなのでしょうね。Railsのルーティングで認識する部分は最小限にして，Foodyn側で大部分の処理をするように変える必要があります。ちょっと悩ましいところですが，「いつかはやらないといけないんだろうなあ」と思っていた部分なので，後押しされた感じです。<br />
<br />
今は管理画面の方を優先しますが，その後で，そちらの調整をしたいと思います。<br />
]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=496</comments>
 <pubDate>Mon, 5 Jan 2009 17:52:53 +0900</pubDate>
</item><item>
 <title><![CDATA[Railsでダイジェスト認証サポート]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=494</link>
<description><![CDATA[Edge Rails（開発版）に<a href="http://weblog.rubyonrails.com/2009/1/2/this-week-in-edge-rails">ダイジェスト認証の機能が入った</a>そうです。これはうれしい。認証部分がプラグイン不要になります。<br />
<br />
前のエントリーで書いたRails Enginesについては組み込みはしたもののまだ使い方を調べ中。ルーティングにどのプラグインのルートを組み込むか書かないといけないようで，その部分をどうやって自動化させるかがちょっと面倒です。ルーティング設定中にActiveRecordを使うのはちょっと問題ありだし（Foodynで拡張している部分が読み込まれていないから）。<br />
<br />
それをどこに置くかも含めてルーティング部分を大幅改造中。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=494</comments>
 <pubDate>Mon, 5 Jan 2009 10:34:39 +0900</pubDate>
</item><item>
 <title><![CDATA[スキン･エンジンの基本部分＋Rails Enginesのインストール]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=492</link>
<description><![CDATA[スキン･エンジンを独立したものにするときに問題になるところの一つが，Railsにおけるビューとコントローラの連携部分が使いにくくなることです。今回はいろいろ試行錯誤の末，スキン･オブジェクトを呼び出すときに，コントローラをインスタンス変数として保持できるようにしました。これでフォームの表示はできるようになりました。<br />
<br />
次の問題はルーティング関係です。エンジンによって必要になる機能が違うため，共通のルーティングを使用するのはなかなか難しいところです。エンジンごとにルーティング指定できるといいのにと思っていたところ，Rails Enginesというプラグインにそういう機能があることが判明しました。とりあえずインストールして試してみます。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=492</comments>
 <pubDate>Sun, 4 Jan 2009 22:53:04 +0900</pubDate>
</item><item>
 <title><![CDATA[なかなか進みません]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=490</link>
<description><![CDATA[スキン周りは，スキン･エンジンの独立性を担保するため，インタフェースを大幅に制限しています。そのため，管理画面を作るところも不自由な面が出てしまうことはいなめません。ちょっと苦闘気味。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=490</comments>
 <pubDate>Sat, 3 Jan 2009 01:37:04 +0900</pubDate>
</item><item>
 <title><![CDATA[備忘メモ]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=489</link>
<description><![CDATA[スキンタイプに「css」を作る。スキン変数&lt;%css%&gt;で呼び出しできるようにする。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=489</comments>
 <pubDate>Tue, 30 Dec 2008 22:55:27 +0900</pubDate>
</item><item>
 <title><![CDATA[エラー処理を改善＆スキン･エンジンによる管理画面表示]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=487</link>
<description><![CDATA[権限チェックにひっかかったときの処理をどうするときれいになるか，ずっと悩んでいましたが，ちゃんとRailsが仕組みを用意していてくれたことが分かり，ようやくすっきりしました。<br />
<br />
これまでは権限がないことが分かるとエラー画面を出力し，チェックルーチンの結果を判定してそこでコントローラを終了するかどうかを見ていました。つまり，<br />
<br />
return unless check_sys_right :skin_management<br />
<br />
といった形で必ず「return unless」を付けないといけなかったのです。これが汚いのでいやだったのですが，Railsではコントローラで例外が発生したとき，まとめて捕捉できる仕組みがあったので，それを使えばいいことが分かりました。これだと，チェックルーチンでは問題があったときに例外を投げます。それを捕捉ルーチンでチェックしてエラー画面を出力するだけになります。上述の「return unless」が不要になるので，コードがすっきりします。<br />
<br />
<br />
このほか，スキン･エンジンを使った管理画面表示の仕組みの基本部分を作りました。例えば編集画面を出すときのコントローラの処理は次のようになります。<br />
<code class="codebeautifier">
<br />
&nbsp;&nbsp;<span class="reserved">def</span>&nbsp;edit<br />
&nbsp;&nbsp;&nbsp;&nbsp;check_sys_right&nbsp;:skin_management<br />
&nbsp;&nbsp;&nbsp;&nbsp;<var>@skin</var>&nbsp;=&nbsp;Skins.obj(params[:id])<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<var>@skin</var>.edit<br />
&nbsp;&nbsp;&nbsp;&nbsp;render&nbsp;:<a href="http://www.php.net/file">file</a>=&gt;<var>@skin</var>.edit_page,&nbsp;:layout=&gt;<span class="reserved">true</span><br />
&nbsp;&nbsp;<span class="reserved">end</span><br />
</code><br />
ここで，Skinsというのはスキン･エンジンのとりまとめのクラスになっており，Skins.objメソッドで実際に処理を行うオブジェクトを取得します。@skin.editで編集に関連する下処理をしておき，つぎのrenderで表示します。@skin.edit_pageの部分はスキン･エンジンの抽象クラスで処理され，ここでそのスキン･エンジンと同じディレクトリにある「edit.html.erb」を呼び出します。子クラスでオーバライドすれば，別のファイルを使うこともできます。レイアウトを使うようになっているため，実際の表示部分ではHTMLの装飾部分は気にせずに作れます。これでスキン･エンジンに依存しない形でコントローラ側の実装ができました。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=487</comments>
 <pubDate>Sun, 28 Dec 2008 03:44:24 +0900</pubDate>
</item><item>
 <title><![CDATA[備忘メモ]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=485</link>
<description><![CDATA[Rubyで現在のスクリプトのファイル名は「__FILE__」で得られる。ただし，コンテキストは認識してくれない。親クラスで定義されたものを子クラスで実行しても親クラスのファイル名になる。<br />
<br />
コントローラでのエラー処理はActionController::Rescueを使うとよい。これで権限チェックのところのコードがきれいになるはず。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=485</comments>
 <pubDate>Sat, 27 Dec 2008 03:18:25 +0900</pubDate>
</item><item>
 <title><![CDATA[RailsとMerbとの合併に思う]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=483</link>
<description><![CDATA[ここ数日，Rails界隈ではRails3がMerbベースになるというビッグ・ニュースでにぎわっています。これについては僕よりずっと詳しい人たちが，いろいろ書いていますので（<a href="http://d.hatena.ne.jp/kwatch/20081224/1230084095">参考1</a>，<a href="http://d.hatena.ne.jp/higayasuo/20081224/1230089435">参考2</a>，<a href="http://d.hatena.ne.jp/essa/20081225/p1">参考3</a>），今さら僕のような末端の開発者が論評を加えることもないわけですが，やっぱりすごいことだなあと思うので簡単に感想を。<br />
<br />
僕がFoodyn CMSのプラットフォームとしてRailsを選んだのは，フレームワークのエコシステムという面を重視したのが大きな理由です。フレームワークはそれ自体の機能がいくらよくてもそれだけではだめで，その周りに多くの開発者が集まり，プラグインなどをどんどん開発していくことで価値が上がると考えています。<br />
<br />
NucleusをPHPでフレームワークを使って書き直す話が出てきたとき，その第一候補になったのは<a href="http://solarphp.com/">Solar</a>でした。Solarを開発している人はZend Frameworkの初期にも携わっており，優秀な人だろうと思います。また，Solarを推薦した人もその理由があってのことだと思います。いかんせん，あまりにマイナーであり，Railsのようなエコシステムができることは望めません。他のPHPのフレームワークを見ても，そういった求心力は欠けているような気がします。PHPではPearもなんだか中途半端だし，フレームワーク時代？における姿がよく見えないのです。<br />
<br />
RubyでMerbが出てきたとき，すぐにRailsとの競争関係に入るとは思いませんでしたが，ばらばらな状況が生まれることは少し心配になりました。今回の合併は，そういった一抹の不安をかき消し，Railsの求心力を一層増していく効果があると思います。DHHを初めとする開発者の英断に感謝します。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=483</comments>
 <pubDate>Fri, 26 Dec 2008 10:58:38 +0900</pubDate>
</item><item>
 <title><![CDATA[正念場？]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=481</link>
<description><![CDATA[スキンの一覧表示はできるようになりました。問題は編集に移るところです。<br />
スキン・エンジンに編集画面をどうやって出力させるか，できるだけヘルパーを用意して管理画面のデザインからの抽象化をしておかないといけません。結構大変そうなところです。]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=481</comments>
 <pubDate>Mon, 22 Dec 2008 11:09:03 +0900</pubDate>
</item><item>
 <title><![CDATA[スキン管理に移る]]></title>
 <link>http://www.matsubarafamily.com/lab/index.php?itemid=480</link>
<description><![CDATA[アイテム（暫定），メンバー，ブログ，全体設定の管理画面が一応できたので，スキン管理に移ります。後は大きなところはプラグインとカテゴリー／タグ。12月中に一通り終わるのは厳しいなあ…<br />
<br />
特にスキン管理のところは，複数エンジンに対応するため，スキン・エンジンとのインタフェースをどうするかがなかなか難しいです。<br />
]]></description>
 <category>Foodyn</category>
<comments>http://www.matsubarafamily.com/lab/index.php?itemid=480</comments>
 <pubDate>Thu, 18 Dec 2008 10:21:31 +0900</pubDate>
</item>
  </channel>
</rss>