sub resources プラグインの紹介
こんにちは、大場です。
今日は、自作のプラグイン sub_resources (http://github.com/nay/sub_resources) を紹介します。
なお、これはRubyConf2009で初の英語プレゼンをした話題です。スライドは slideshare にあります。
こんにちは、大場です。
今日は、自作のプラグイン sub_resources (http://github.com/nay/sub_resources) を紹介します。
なお、これはRubyConf2009で初の英語プレゼンをした話題です。スライドは slideshare にあります。
こんにちは、@kukoです。
今日は私の苦手なRESTの話をしますね。
Rails1系から2系に上がった時に、頭を悩ませたのがRESTでした。
宗教じみてるし、なんか設定も複雑でやることが増えたような気がして、なかなかお友達になれない。
しかし、RoRのアプリを作っていくにあたって、どうしてもさけては通れない道でした。
私と同じように悩める方がいたらぜひ参考にして欲しくて、
RESTとは何か。
URLはどうあるべきか。
の、とっかかりとなる話をしたいと思います。
「RESTとは、ウェブのような分散ハイパーメディアシステムのためのソフトウェアアーキテクチャのスタイルのひとつである」
そんなこと言われても困ってしまいますよね。。
RESTは「リソース」を扱うための考え方であり、
URLというのは特定のリソースを指し示しているのです。
RESTを考えるときによく出てくるのが「リソース」という単語です。
「リソース」とは、例えば掲示板があったとしたら、
掲示板の大元の書き込みであったり、
掲示板につけられたコメントのことであったり、
もしくは添付されたファイルや画像であったり、
そんなひとつの「情報」として扱えるものを指しています。
RESTの考え方では、リソースはそれぞれ固有のURLを持っています。
/bbs/3/comments/7
例えば、これは、id3の掲示板につけられたコメントの1つを指し示すURLです。
そしてそのURLに対して、「何をするのか」、それを「GET」「POST」「PUT」「DELETE」という4種類のHTTPのメソッドで操作をするのです。
URLはメソッド(動作)をあらわさず、メソッドはHTTPメソッドが対応します。
これがRESTの原則です。
古いRailsではactionがURLに入っていましたが、これは先ほど説明した「URLはリソースを指し示す名詞であるべき」という原則とは違いますね。
きちんとしたRESTでは、アクション名はURLに出るべきではないのです。 なぜなら、アクション名は動詞であり、URLはリソースを表すため、名詞であるべきだからです。
少し実装の話に踏み込みますと、設計はURL設計から始めると良いです。
キレイなURLが作れれば、コントローラーの実装で悩むことも少なくなるでしょう。
気をつけたいのはI/Fのレイヤーと実装のレイヤーでギャップがある場合です。
I/Fのレイヤーでは
「何を」= URL = リソース
「どうする」=HTTPメソッド
であらわします。
たとえば、先ほどの掲示板bbs/3にお気に入りの星をつけたい場合、RESTfullに書くなら
bbs/3/stars
というURLにPOSTリクエストを送ります。ここで、bbs/3/stars/addや、bbs/3/add_starにしないのは、
URLは名詞であるという前提からです。
考え方としては「starをcreateする」と考えてください。
これに対して、実装のレイヤーでは
「何を」=主としてコントローラ名、補助的にアクション名
「どうする」=アクション名
となるので
BbsControllerのadd_starがアクション呼ばれるようにするかもしれません。
(もし複雑だったらBbsStarsControllerのaddメソッドにするかもしれませんが)
どうでしょうか。このとおり、この2つのレイヤーの間には少しギャップがありますが、この2つのレイヤーの構造を意識して、
RESTっぽいURL設計はどうあるべきかを考えて設計すると良いでしょう。
少しはRESTとお友達になれそうですか?^^
河野です! 今回は、 Rails で cron を使わずに cron っぽいことを行う方法をご紹介します! cron が使えないというケースはあまりないかもしれませんが、知っているといつか役に立つかもしれません。
こんにちは。@denpachiです。
今回は、私が開発をする上で使っているmocksmtpdというツールを紹介します。
メールを送信する動作確認やテストを行う際に、 GmailのSMTPを使ったり、実際に開発用のメールサーバを立てて メール送信のテストを行っている方も多いと思います。
それをもう少し手軽にテストできるような仕組みがmocksmtpdです。
mocksmtpdを立ち上げておくと、
メールをどこにも送信せずに、ローカルのディレクトリにHTML形式で保存してくれます。
(作者のこせきさん、本当にありがとうございます)
使い方は至って簡単です。
インストールはgemでパッケージが配布されているので、以下のコマンドを実行するだけです。
$ gem sources -a http://gems.github.com
$ sudo gem install koseki-mocksmtpd
初期設定と起動方法は次の通りです。
$ cd ~
$ mocksmtpd init
$ cd ./mocksmtpd
$ sudo mocksmtpd start
これで、SMTPサーバが立ちました。
送信されたメールを確認するには
~/mocksmtpd/inbox/index.html
を開くと、メールの内容を見る事ができます。
こんにちは@tatsuoSakuraiです!
snow leopardのクリーンインストール+カーネル64bit化やってみました!
・自宅の環境
・バックアップ用機器:100GB外付けHDD(容量が少なすぎて使い物にならない)
・無線Lan:Fon(最近不安定でほぼ毎回再起動にうんざり)
・Time Capsule安くなった(1TBのHDD & 無線Lan)
・snow leopardは3000円ちょい
・→思い切って買おう!(Time Capsule高かったけどいいもの買ったな!と思います)
(※作業前のバックアップをお忘れなく)
・Mac OS X Snow Leopardをクリーンインストールする方法。
ここを参考にさせてもらいました。写真付きでとてもわかりやすかったです。
インストールにかかった時間は40分くらいでした。
(Xcodeのインストールも忘れずに!)
ここまでは順調にいったのですが、カーネルが32bitのまま
うーん、せっかくだから64bit化したい!
調べたところ、どうやら僕のmacbookでは無理な感じです。。。(が、結論から言うとできました)
(ちなみに初代アルミマックとかlate2008とかMacBook5,1というらしいです)
・64bit完全対応のSnow Leopard、実はデフォルト起動は32bitカーネル!?
さらに調べました。
なんとかできそうです。(※要自己責任)
・MacBook (late2008) を64bit起動する
このときの作業メモ
HexEditorでアドレスが000266e0になるまでスクロールさせて、charを0x4と入力してenter
"保存できませんでした"とかでますが、なんとか保存された感じです
(「編集を許可する」のチェックをoff/onしました)
さて、なんとかカーネル64bitできました
速度感としては(あくまでもなんとなく)
アップグレード < クリーンインストール < カーネル64bit
と苦労した分だけ速くなった気がします!
自宅用macなのでとりあえず開発環境も含め全てのデータをバックアップから移行しました。
(開発環境もなんとかアップグレードできたのですが、再構築するのがいいようです。)
Macportsのインストール
そのままだとportsが動かないので最新版をインストールします
・MacportsのSnow Leopard対応版が出た
インストールしたらupdate
$ sudo port -d selfupdate $ sudo port -d sync
ここからでいろいろつまったので下記サイトを参照にしながらごにょごにょしました
・Rails開発環境、Snow Leopardへアップグレードする方法
・Mac OS X Snow Leopard のインストールと Rails 環境の修正等
・Snow Leopardにアップデートした後に気をつけること 主にMacPortsとrubygemsについて(コマンドの"が全角になっていたので注意)
scaffoldを作って動作確認してみましたが、ちゃんと動きました!
しかし、やっぱり何か不安です。
次の週末には開発環境を再構築したいと思いました
・クリーンインストールは簡単
・開発環境は再構築しましょう
・TimeMachineのバックアップ++
以上です。どなたかの参考にしていただけたらうれしいです。
こんにちは、nayです。
日々の仕事や勉強会で気づいたことなどを、社内の人で交代で発信する場を設けることにしました。コーナー名は何の芸もない「開発者ブログ」!
どうぞよろしくお願いします。