Showing posts with label Rails. Show all posts
Showing posts with label Rails. Show all posts

Tuesday, 20 November 2012

Twitter Bootstrapで素早くUI開発

Twitter Bootstrapを今作っているウェブアプリケーションに導入しています。

Twitter Bootstrapはグリッドやテンプレート、マルチデバイスサポートのレイアウトやボタン、またGlyphiconsも無料で使える契約をTwitterがしてくれています。

CSSエンジンのLess、HTMLの構造などを調べればかなり速く、フレキシブルなUI の構築ができます。Railsでも使えるgemが出ていますし、多分他のウェブ開発フレームワークでも使えるようにしてくれている人がいると思います。

Thursday, 8 November 2012

RailsとRubyのエラーハンドリングの違い

ウェブアプリケーションを作っていると

if !object.method
  do_this
else
  do_that
end

という方法でユーザを誘導する習慣が付いていますが、Rubyで組み込みやデスクトップアプリケーションなどを開発する際には下のようにする人が多いのではないでしょうか?

begin
  do_this
  do_that
rescue
  error_handling_method($!)
end

こうしておいて

def do_this
  raise 'Specific error message' if !some_method
end

などとそれぞれのメソッドの中でRuntime errorを発生させれば最後のrescueの所でまとめてエラーを処理できるので便利でした。例えばSTDOUTに表示させるとか、ログにまとめるとか、メールでエラーを報告するなどなど。

ちなみにRSpecではこのサイトに書いてある通り

it "should raise" do
 expect{Object.non_existent_message}.to raise_error(NameError) end

とすればテストが書けます。

Railsでも同じようにエラーの処理はできると思いますが、通常begin, rescue, endは使わないですね。ディベロッパー向けのAPI以外では、ウェブアプリケーションはエラーメッセージは極力詳細は出さない事もセキュリティー上大切なのでこのような設計になるのでしょうね。例外が発生したら多くの場合シンプルにbreakして500を返しますもんね…。ウェブサービスでもREST APIを作る人はもっと複雑なエラーハンドリングを開発しているんでしょうね。お疲れさまです。

Wednesday, 24 October 2012

Railsでたくさんページがあるサイトを作る時はパーツをwidget化すると便利ではないでしょうか?

apotomoというwidgetを表示するgemがありました。ページがたくさんあるサイトはサイドバーに幾つかのページで共通のwidgetがあるのが一般的ではないでしょうか?

できるだけコードを少なくして手間を少なくするのはプログラマーの一般的習性かと思います。viewのお掃除には勿論Railsのサブレイアウトを使う手段がありますが同時に、レイアウト間で共通に使用するアイテムはwidget化してしまうのも一つの手段です。

使い方は制作者のサイトにスクリーンキャストがあるので、見せてもらいました。

以下、全く本文とは関係無いトピックです。一つのスクリーンキャストを見終わった時に全然関係無いLinuxのスクリーンキャスト作成ツールを紹介するスクリーンキャストが出てきたのですが、このスクリーンキャストがまたスイートです。テック系でこんなスイートなスクリーンキャストを見る事ができるのは素晴らしいアイデアですね。ノックアウトという感じです…。