« 2008年2月 | トップページ | 2008年4月 »

2008年3月

2008年3月24日 (月)

ポカリスウェット CM

SMAP vs おじいちゃんズ

空き地らしき場所で、SMAPとおじいちゃんズが向かいあう。

ラグビーを始めるんだが、SMAPを振りきってトライを決めるおじいちゃん。
走るSMAPにタックルを決めるおじいちゃん。
SMAPを引きずって走るおじいちゃん。

SMAPを圧倒してます。

最後の決めセリフは

「まだ、できるかな?」

面白い!!

| | コメント (0) | トラックバック (0)

コンタック600プラス CM

カフーン、カフーンと、杉と思われる怪物がサラリーマンに襲いかかると、Mr.CONTAC(はじめて名前知った…。)が颯爽とあらわれて、怪物を撃退!

老舗メーカーの鼻炎薬のCMなんですが、怪物の造型が面白い。
杉花粉症の人には、笑えないCMかもしれないが、花粉に苦しむ人には、まさに杉はこんな怪物に見えているのかもしれません。

| | コメント (0) | トラックバック (0)

2008年3月18日 (火)

サントリー 黒烏龍茶 CM

おじちゃん達が、なんとも可愛らしいこのCM。

クロを飲んでいれば、どんな油モノだって大丈夫!ってな調子で美味しそうに料理を食べています。
目がいいんですよ、輝いてる。

私が好きなのは、初代(?)の皆で歌を歌ってるヤツなのですが、このおじちゃん達と曲が流れるとついつい目がテレビに向きます。

このCMは、サントリーのサイトで見られます。
それだけではなく、歴代CMや中国語の歌詞まで見られて、サービス満点です。
これで、カラオケでも歌えます。(爆

| | コメント (0) | トラックバック (0)

2008年3月17日 (月)

ANA スーパーエコ割 CM

奥さん:「週末、シンガポールにマーライオンに会いに行こうよ」
旦那さん:「そんなの、向こうから来てもらえよ」

翌日(?)、居間にマーライオンの置きもの(?)があらわれて、旦那さんに水をはきかけてる。

旦那さん:「やっぱり、週末行こうか?」

吹き出しました。
温水さんが良い味出し過ぎです。

| | コメント (0) | トラックバック (0)

2008年3月13日 (木)

はじめようRuby on Rails(初版)をRails2.xでやってみる STEP-4-1(7章-1)

1. Calendar Helper 設置、設定

calendar_helperですが、本ではサイトにアクセスして取得、設置するよう書かれていますが、現在はplugin insatllで簡単に入ります。

> ruby script/plugin install http://topfunky.net/svn/plugins/calendar_helper/
+ ./History.txt
+ ./MIT-LICENSE
+ ./Manifest.txt
+ ./README.txt
+ ./Rakefile
+ ./about.yml
+ ./generators/calendar_styles/calendar_styles_generator.rb
+ ./generators/calendar_styles/templates/blue/style.css
+ ./generators/calendar_styles/templates/grey/style.css
+ ./generators/calendar_styles/templates/red/style.css
+ ./init.rb
+ ./lib/calendar_helper.rb
+ ./test/test_calendar_helper.rb

本の通りに進めるとp95のブラウザで確認でエラーが…。

ActiveRecord::RecordNotFound in SchedulesController#show
Couldn't find Schedule with ID=month

'month'アクションを呼んでるのに、'show'が呼ばれて、IDとしてアクション名を渡してる…。

> rake routes

で確認してみると、確かに'month'はない。

rails2.xからは、controllerにアクションを直接記述しただけでは、アクションとして認識されていない。

試行錯誤の結果、個別表示(schedule/1 など)のないアクションを追加したい場合、map.resourcesに、collectionオプションを指定する事で、下記のようなroutesが追加される。
HTTPメソッドは指定しないとエラーになる。

> vi [RAILSROOT]/config/routes.rb
ActionController::Routing::Routes.draw do |map|
#  map.resources :schedules
  map.resources :schedules, :collection => { :month => :get }
  # Install the default routes as the lowest priority.
  map.connect ':controller/:action/:id'
  map.connect ':controller/:action/:id.:format'
end

> rake routes | grep month
          month_schedules /schedules/month {:controller=> "schedules", :action=>"month"}
formatted_month_schedules /schedules/month.:format {:controller=> "schedules", :action=>"month"}

resources(ActionController::Resources)の内容はRDOCと下記サイトを参考にさせて頂き
ました。

参考サイト
ザリガニがみていた…。 2.0のmap.resourcesのオプション設定いろいろ

routes問題はやり過ごしたが、 本のままだとObjectがnilだとエラーが出る。

> vi [RAILSROOT]/app/schedules_controller.rb(抜粋)
  # Month (use CalendarHelper)
  def month
    @year  = params[:year]  ? params[:year].to_i  : Time.now.year
    @month = params[:month] ? params[:month].to_i : Time.now.month

本のProgramでは@paramsはインスタンス変数で、ブラウザから渡された値をハッシュのキーで引いている感じなのだが、現在の仕組みではGET、POSTともにparamsメソッドを使って値を取り出すようだ。

他に気になる部分として、他の言語から入ってきた人には当り前だが、うん年前(爆)、私がProgram入門時は意味不明だったことを書いておく。

@year  = params[:year]  ? params[:year].to_i  : Time.now.year

上記は三項演算子といって、if文とほぼ同じ意味を持ち下記と同じになります。

if params[:year]
  @year = params[:year].to_i
else
  @year = Time.now.year
end

value = 式 ? value1 : value2
式が真ならvalue1、偽ならvalue2がvalueに代入されます。

詳細はRubyのリファレンスを参照。

[RAILSROOT]/test/functional/schedules_controller_test.rb
の追記は特に問題なし。

p98の[RAILSROOT]/app/controllers/schedules_controller.rbの追加部分、findメソッドの中のconditionsで、置換えらしき記述がある。(赤字部分)
? 部分に、それぞれ、@this, @nextが入るんようだ。
RDOCのActiveRecord::Baseに詳しい記述がある。

> vi [RAILSROOT]/app/controllers/schedules_controller.rb(抜粋)

    Schedule.find(:all, :conditions => ['datetime >= ? AND datetime < ?', @this,
@next]
).each do |schedule|

本ではstylesheetを置くように書いてあるので、[RAILSROOT]/vender/plugin/calendar_helperに探しにいくと。
READMEに下記コマンドで、cssファイルを作れと書いてある。

> ruby script/generate calendar_styles
      create  public/stylesheets/calendar
      create  public/stylesheets/calendar/red
      create  public/stylesheets/calendar/red/style.css
      create  public/stylesheets/calendar/blue
      create  public/stylesheets/calendar/blue/style.css
      create  public/stylesheets/calendar/grey
      create  public/stylesheets/calendar/grey/style.css

[RAILSROOT]/app/views/layouts/schedules.html.erbを"calendar/red/style"を参照する
ように変更したのだが、見た目がかなり違う。
諦めて、参照してたstyle.cssをcalendar.cssにコピーして、本に合わせて編集。

参考文献 : はじめようRub on Rails 高橋征義 監修 かずひこ、喜多川豪著 ASCII 刊

| | コメント (0) | トラックバック (0)

2008年3月 6日 (木)

はじめようRuby on Rails(初版)をRails2.xでやってみる 番外編(付録A) RDOC(gem server)

RDOCなどのDocumentを読みたいと思って、本の通りにgem_serverと打つと

> gem_server
gem_server: Command not found.

となってしまう。

RDOCが読めないと学習が進まないしどうしようかと思ったら…。

> gem server

で、問題なく立ち上がった。

'_'(アンダーバー)と' '(スペース)の差。

正誤表には載っていないので、gemの方で整理されたのかも知れない。
これは、わからなくて大変だったのでメモ。

参考文献 : はじめようRub on Rails 高橋征義 監修 かずひこ、喜多川豪著 ASCII 刊

| | コメント (0) | トラックバック (0)

はじめようRuby on Rails(初版)をRails2.xでやってみる STEP-3-2,3(6章-2,3)

2. DB登録条件(Validation)

何がどうなった場合に問題になるのかを、テストに記述してから、機能を実装するのがRailsのやり方のようです。

まずValidationのテスト項目を記述するように書いてあります。
これは、どこかから呼ばれるのかと思ったのですが、rake時は、SchedulesControllerTestクラスのメソッドは全て呼ばれるようです。
面倒じゃなくていいですが…。

scaffoldの雛型に合わせたもの(抜粋)

> vi [RAILSROOT]/test/functional/schedules_controller_test.rb
  def test_should_create_success_schedule
    assert_difference('Schedule.count') do
      post :create, :schedule => {:title => 'テスト'}
    end

    assert_response :redirect
    assert_redirected_to schedule_path(assigns(:schedule))
  end

  def test_should_create_failure_schedule
    assert_no_difference('Schedule.count') do
      post :create, :schedule => { }
    end

    assert_template 'new'
  end

assert_difference()は、Programの文脈からは、do~end内のpostの実行前後で値が変わってるかを見ているとわかります。
defaultでは+1でtrue、def test_should_destroy_scheduleをみると、差分を引数として渡すことも可能みたい。

do~end内の実行前後で、値が変わっていない場合にtrueになるのはassert_no_difference()、命名規則のせいかわかりやすいかな。

rakeでテストして、本の通りtest_create_failureで失敗することを確認して先へ

参考サイト
has_many :through

Validationはmodelクラスで実装

p87までのコードを加えてrakeでテスト

> rake
/usr/local/bin/ruby18 -Ilib:test "/usr/local/lib/ruby/gems/1.8/gems/rake-0.8.1/l
ib/rake/rake_test_loader.rb" "test/unit/schedule_test.rb"
/usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original
_require': /scheduler/app/models/schedule.rb:6: syntax error, unexpected $end, expecting kEND (SyntaxError)

error発生
errors.add 後のUnless条件式の途中に改行があると、errorが発生する。
よく考えれば、rubyの式の終了条件が';'(セミコロン)か改行なので当然。(^^;
※改行前の文字がバックスラッシュの場合は1文と解される。

ひょっとして本の間違い?
って、案の定ありました。

一番先に調べるべきところが違いますね。orz

> vi [RAILSROOT]/app/models
class Schedule < ActiveRecord::Base
  def validate
    errors.add(:title, "入力されていません") unless attribute_present?(:title)
  end
end

再度rake

> rake



Finished in 2.559977 seconds.
8 tests, 17 assertions, 0 failures, 0 errors

著者ページ正誤表
http://wiki.fdiary.net/rails/?hajimeyo_rails


3. データの削除

scaffoldが作った雛型を確認していくだけで終了なのだが、結構違う。

schedules_controller.rbはredirect_toの部分がrespond_toで柔軟に対応できるようになっているようなのだが、ツッコミ過ぎるとハマるので取りあえず先へ。

動作自体は、本の通りで問題ない。

参考文献 : はじめようRub on Rails 高橋征義 監修 かずひこ、喜多川豪著 ASCII 刊

| | コメント (0) | トラックバック (0)

2008年3月 1日 (土)

はじめようRuby on Rails(初版)をRails2.xでやってみる STEP-3-1(6章-1)

1. 登録画面カスタマイズ(render)

rails1.xと2.xの差が凄いのか、これでもかってぐらい違う…。
本では[RAILSROOT]/app/views/schedules/new.rhtml(→new.html.erb)を見ながら、renderの役割を学習するのだが、rails2.xのscaffoldが作り出す雛型には、renderなんて見当たらないし、"_form.rhtml"に相当するものもありません。

newの中身を見てみるとform部分は、form_for(ActionView::FormHelper)によってそれぞれに書かれています。
diffをとってみるとnew、editがほとんど同じものですね。

viewをそれぞれいじるっていうのが、現実的な解なのかもしれませんが、DRYって感じがしないし、new.html.erb、edit.html.erbをそれぞれいじるのも芸がないので、renderを使って本に近づけてみます。

以下のようにしてみました。

> vi [RAILSROOT]/app/views/schedules/_form.html.erb
<% form_for(@schedule) do |f| %>
  <p>
    <b>日付</b><br />
    <%= f.datetime_select :datetime, :use_month_numbers => true %>
  </p>

  <p>
    <b>タイトル</b><br />
    <%= f.text_field :title %>
  </p>

  <p>
    <b>内容</b><br />
    <%= f.text_area :content, :cols => 40, :rows => 10 %>
  </p>

  <p>
    <%= f.submit button_value %>
  </p>
<% end %>

> vi [RAILSROOT]/app/views/schedules/new.html.erb
<h1>New schedule</h1>

<%= error_messages_for :schedule %>

<%= render :partial=>'form', :locals=>{ :button_value=>'新規作成'} %>
<%= link_to '戻る', schedules_path %>

edit.html.erbも同様に合わせます。

下記サイトを参考にさせていただきました。

参照サイト:
ザリガニが見ていた...。 form_forブロックの中のrender :partialの悩み

参考文献 : はじめようRub on Rails 高橋征義 監修 かずひこ、喜多川豪著 ASCII 刊

| | コメント (0) | トラックバック (0)

モバイルスイカで新幹線 CM

ノリノリ、前回のCMが好評だったのか、スイカペンギンの動きが、エアギターの人のような激しい動きに。

頭の上で携帯弾いてるのが、お気に入り(爆)

| | コメント (0) | トラックバック (0)

« 2008年2月 | トップページ | 2008年4月 »