2007年05月06日

Blogツール

そうだった。最初は、この休み中にBlogツールを変更しようと思っていたのだった。

今使っているのは、MovableType 2.64と旧世代の遺跡ですが、前はそれほど更新もせず、書いても短い文章だけだったため、特に不便を感じていなかった。
まる2年、休止している間に、世の中はフリーのBlogツールで溢れ、おれおれサーバ(人聞きが悪い)上で動くBlogツールも先日ちょっと調べただけでも複数見つかる。良い世の中だ。

当初の目的をすっかり忘れて、休日はRuby on Railsを楽しんでしまったが、Blogツールを自分で作ろうとしてRailsを一生懸命やっているわけではない。
#typoにちょっとクラっときてカスタマイズして使おうかと思ったのは確かだが…
今のところNucleus CMSが第一候補です。

この旧MTは友人用にずっと、動かしておいて、私だけが使うために設置するなら、マルチBlogでなくても良いのでWordPressppBlogP_BLOG Projectも魅力的。みんなデフォルトのデザインでもちゃんと使えそうだ。見た目は大事だ

しかし、これらはPHPでできている。使うだけなら、別に何で実装されていようと気にすることはないはずである。が、このMTを自分でカリカリ、カスタマイズしたりした経験上、PHP以外がありがたいことは確かだ。何故か。PHPが好きじゃないから。

とすると、adiaryが俄然、浮上してくる。こちらは最初に見た目を頑張って作らないといけなそうですが、Perlってのは素敵。そういう意味ではRubyであるtDiary.orgもあるが、もうあまりアクティブじゃないように見えるのがちょっと。

そんなわけで、Ruby on Railsも楽しいし作りたい物もあるので、まだしばらくは、このままかな。

投稿者 iwazawa : 21:52 | コメント (0) | トラックバック

amazon-ecs

ライド・オン・Rails ですが、面白そうなので、リファレンス系のページはばっさり飛ばして、「Amazon Webサービスとの連携」やってみます。

本ではruby-amazonを使っての説明ですが、ちょっと調べると、amazon-ecs がよさげ。gemで簡単にインストールできます。

gem install amazon-ecs

そうするとサンプルも書き直さないといけない。こんな感じか。

def amazon_search @books = [] if request.post? require 'rubygems' require 'amazon/ecs' access_key = "your access key" associate_id = "your associate id" country = :jp Amazon::Ecs.options = { :aWS_access_key_id => [access_key], :associate_tag => [associate_id], :country => country } res = Amazon::Ecs.item_search(params[:keyword], { :search_index => 'Books', :sort => 'salesrank', :response_group => 'Medium' } ) if res.has_error? flash[:notice] = "Amazon ECSよりエラー:" + res.error return end res.items.each do |item| book = Book.new book.isbn = item.get('isbn') book.name = item.get('title') book.author = item.get('author') smallimage = item.get_hash('smallimage') if smallimage book.small_img_url = smallimage[:url] else book.small_img_url = 'noimage.gif' end book.manufacturer = item.get('publisher') book.release_on = item.get('publicationdate') @books.push book end end

本ではruby-amazonが返すオブジェクトをそのまま使ってビューをレンダリングしてるが、amazon-ecsはイメージURLの持ち方が単純でないので、Bookモデルに詰め替えることにします。small_img_urlというフィールドを勝手に追加してます。
この辺、Rubyに慣れてないんでアドホックですが、たぶんそのうちクールな方法を習得するはず。今は一杯一杯。

Ruby Amazon E-Commerce REST Service API (amazon-ecs)によると、

# or you can also do it this way atts = item.get('itemattributes') atts.get('title') # get only returns the first element of an array atts.get('author') # 'Author 1'

という風に、AmazonのAPIドキュメントAttributes of Items in the Book Storeに忠実に取得できて気持ちいいと思い、使おうとしたのですが、

atts = item.get('itemattributes')

が返すオブジェクトがgetメソッドがないと仰る…それで色々と試した結果、itemオブジェクトから直接getはできる様なのでそっちでやりました。

そして、これを表示するビューは、こんな感じか、

<%= form_tag %> keyword: <%= text_field_tag 'keyword', params[:keyword] %> <%= submit_tag 'search' %> <%= end_form_tag %> <table> <tr> <th>ISBN</th> <th>authors</th> <th>image (small)</th> <th>manufacturer</th> <th>product_name</th> <th>release_date</th> </tr> <% @books.each do |book| -%> <tr> <td><%=h book.isbn %></td> <td><%=h book.author %></td> <td><%=image_tag book.small_img_url %></td> <td><%=h book.manufacturer %></td> <td><%=h book.name %></td> <td><%=h book.release_on %></td> </tr> <% end -%> </table>

まだまだ拙いが、なんとなく分ってきたかな。

早くRuby on Railsを自由自在に使いこなしてアプリを作り始めたいのだが、そうこうしているうちに大連休の最終日夕方(死)
やはり、そう甘くはないと言うことで(笑)しかしRuby on Railsはこの先、相当な武器になりそうなので、やっていく。

投稿者 iwazawa : 18:31 | コメント (0) | トラックバック

DynamicCalendarHelper

まだまだライド・オン・Rails 頑張ってます。この本、もう少し先の「Railsエッセンシャルズ」という章を先読みしたのですが、リファレンスとしても、非常に優れてました。解説も非常に分りやすいし、記載の内容が少し古い(書籍では仕方ないですね)以外は、とても満足してます。買って良かった。

グラフィカルなカレンダーを表示するという所で、CalendarHelperというのが紹介されていて、実際にサンプルを動かすのですが、記載のサイトに行ってみると、DynamicCalendarHelperと、名前もグレードアップしている雰囲気です。

本では.rbファイルをダウンロードしてきて所定のフォルダにコピーというインストール方法で説明されていますが、プラグインのインストールに対応したようです。

ruby script/plugin install http://topfunky.net/svn/plugins/calendar_helper/

で、サクっとインストール完了。

しかし、ということは、本の通りにはいかないということで、やはり最初の例でつまずく。
まずは


vendor/plugins/calendar_helper/README

を読んでみると、
script/generate calendar_styles

をしとくようだ。あとはRDocを読めと書いてある…Rails、というかRuby初心者には、すぐにはどうして良いのかわからない。

今までの経験を元に、application.rbにrequire 'calendar_helper'を、application_helper.rbにinclude CalendarHelperを追加したところ、なんと成功!

投稿者 iwazawa : 02:10 | コメント (0) | トラックバック