前回の続きです。
今回は大量のダミーデータを返すAPIを作ってみます。
要件としては
- 住所録を返すAPI
- 本番サーバはPHPなので、URLもそれに合わせる
- 100件程度、ランダムで返す
- XMLの内容は、名前、メール、メッセージ、性別、国
という感じです。
前回の続きです。
今回は大量のダミーデータを返すAPIを作ってみます。
要件としては
という感じです。
Sinatra 楽しい!
今のところあまり大きなものを作る予定がないんだけど、ひとつのファイルにたくさんのルートを書いているとごちゃごちゃしてちょっと嫌だ。
かといってコントローラーを複数に別けるのもSinatraスタイルに反しているような気がする。そこでルートの階層をわかりやすくするTIPS。
namespaceというメソッドをトップレベルに定義しておく。このメソッドはブロックの内容を実行するだけ。
これが
こう書けるようになる。
少し見やすい
こんにちはーFlasherのみなさん。
すっかりRuby記事ばっかりなのに、いまだにブログ訪問者の大半はFlasherらしいこのブログ。
久しぶりにFLASHerのための記事を書けそうです。
今日とりあげるのはSinatraというRubyで作られた超シンプルなフレームワークです。
このたった5行で、http://localhost:4567/hi にアクセスすると「Hello World!」というテキストを返すAPIサーバがローカルPC上に完成するんだ。
Rubyがわからなくたって、どんなプログラムなのか一目瞭然だ。シンプルだと思わないかい?
今回はこのシンプルなSinatraを使って、あなたのFlash案件に使える、より本番に近いモックAPIサーバを作ろうというお話です。
個人的メモ
結構リソース食うので次はdelayed_jobにしたい・・
Amazon CloudFrontはAmazon S3上のファイルをキャッシュするソリューションです。
前回paperclipからS3を使う設定はわかったので、今回はさらにCloudFrontを利用するための設定です
前回こんな感じでS3の設定をしました。
コンソールから利用してみると
こんな感じでS3のURLがとれるようになっているはず。
キャッシュサービスであるCloudFrontを利用する場合は、ホスト名を適宜変えるだけなので paperclipが勝手にやってくれるといいなぁ〜なんて思いました。
オプションが2つ増えてます
わーーこりゃ幸せだ。
さらにサイト全体でアセット関係(public以下)もCloudFrontにしたければ
config/environments/#{RAILS_ENV}.rb 内で
こうしとけば、image_path()やらimage_tag()やらjavascript_include_tag()やらを使ったときに、リクエスト先を書き換えてくれてさらに幸せ度アップ
こんにちは、久々ですね
Railsでroutes.rbは本当に便利ですよね。
なんて書くだけで、RESTFulなAPIが用意されます。
に対応したURLをRailsがよしなにやってくれますよね。
しかし、こんなにたくさんのアクションはいらないー。わしゃcreateとshowだけでいいんじゃーなんて時もあったりします。そんなときは
として、必要なアクションだけ列挙しましょう。
また、:exceptなんてオプションもあって、必要ないオプションを列挙します。
このへんにかいてありました


Mitaka.rbの第四回に行ってきました。
今回は吉祥寺のepicesという店を借り切って、美味しいものが食べたけりゃMitaka.rbへおいでってな感じです。
後半はフレンチを食べながらLTを見るという、貴重な体験もできましたよ。
Railsが2.3.3に上がったので、gemをアップグレードしたりパッケージをアップデートしたりしているうちに
script/autospecが動かなくなってしまった。
解決方法はここを参考にしました
ZenTestを4.0系→4.1系にバージョンアップする場合の注意点
http://d.hatena.ne.jp/TrinityT/20090630/1246334665
これでまたscript/autospecが使えるようになりました。

書籍The Rails Wayの中には「皆フィクスチャが嫌い」という項目があります(次の項目は「フィクスチャはそれほど悪くない」ですが)。
フィクスチャが嫌われる最大の原因は「メンテナンスが難しい」という事でしょう。
中間テーブルを必要とする多対多の関連をフィクスチャにしようと思ってうんざりした経験は誰にもでもあると思います。
Fixtureのhas_manyでこんな書き方したい
http://www.func09.com/wordpress/archives/369
Factory GirlはRailsのテストにおいてfixtureの代替となるツールです。
つまりテスト時のモデルデータを用意するための仕組みです。
Factory Girlはフィクスチャと違い、Rubyのスクリプトで直接データを定義していきます。
特徴としては
Rubyコードで実データを作る感覚でテストデータを定義するので、フィクスチャと違い中間テーブルのメンテナンスから解放されます。 Read More…
例えばActiveRecordで新規作成したタイミングでリモートにアクセスするような処理があったとして
この場合、テストの時はItem#do_something_with_remoteをスタブにするよね。
本当はこんな感じでかけたい
stubはそのオブジェクトにしか使えない?インスタンスメソッドまで影響するスタブはどう書けば良い?
–
Fixtureの代わりにFactoryGirlを使い始めた。 これがなかなかシンプルで使い勝手が良いんだけど、関連を設定する時に上記のような作りの場合にちょっと困っている。 Factory.defineの中でインスタンスのメソッドにstubを設定できればいいんだよな。
明日改造できるかソースコードを見てみる。 Factory.stubはあるんだし、できないことはないよな。
今は時間がないのでスペックヘルパーで
みたいに上書きして対処しているが・・・駄目だよな。
FactoryGirlに関してはノウハウが溜まったら書くかも。