Rails3.1.rc4 と sprockets 2.0.0.beta.11 は相性が悪く
/assets/以下のルーティングに失敗してしまうので
Gemfileで下記のようにする
Rails3.1.rc4 と sprockets 2.0.0.beta.11 は相性が悪く
/assets/以下のルーティングに失敗してしまうので
Gemfileで下記のようにする
Railsのコントローラーで、ステータスコードを返すときは
のように、ステータスコードの数字で返すこともできますが
のように、数字の代わりにシンボルを使うこともできます。
しかしRailsのリファレンスを眺めていても :ok 以外のシンボル名がわからなかったので調べてまとめました。
参考:http://rubydoc.info/gems/rack/1.2.1/Rack/Utils
ちなみに、辞書にないシンボルを渡すと問答無用で500を返します。ですから、500を返すときは
と、やっています。
| コード | 名前 | シンボル |
|---|---|---|
| 100 | Continue | :continue |
| 101 | Switching Protocols | :switching_protocols |
| 102 | Processing | :processing |
| 200 | OK | :ok |
| 201 | Created | :created |
| 202 | Accepted | :accepted |
| 203 | Non-Authoritative Information | :non_authoritative_information |
| 204 | No Content | :no_content |
| 205 | Reset Content | :reset_content |
| 206 | Partial Content | :partial_content |
| 207 | Multi-Status | :multi_status |
| 226 | IM Used | :im_used |
| 300 | Multiple Choices | :multiple_choices |
| 301 | Moved Permanently | :moved_permanently |
| 302 | Found | :found |
| 303 | See Other | :see_other |
| 304 | Not Modified | :not_modified |
| 305 | Use Proxy | :use_proxy |
| 306 | Reserved | :reserved |
| 307 | Temporary Redirect | :temporary_redirect |
| 400 | Bad Request | :bad_request |
| 401 | Unauthorized | :unauthorized |
| 402 | Payment Required | :payment_required |
| 403 | Forbidden | :forbidden |
| 404 | Not Found | :not_found |
| 405 | Method Not Allowed | :method_not_allowed |
| 406 | Not Acceptable | :not_acceptable |
| 407 | Proxy Authentication Required | :proxy_authentication_required |
| 408 | Request Timeout | :request_timeout |
| 409 | Conflict | :conflict |
| 410 | Gone | :gone |
| 411 | Length Required | :length_required |
| 412 | Precondition Failed | :precondition_failed |
| 413 | Request Entity Too Large | :request_entity_too_large |
| 414 | Request-URI Too Long | :request_uri_too_long |
| 415 | Unsupported Media Type | :unsupported_media_type |
| 416 | Requested Range Not Satisfiable | :requested_range_not_satisfiable |
| 417 | Expectation Failed | :expectation_failed |
| 422 | Unprocessable Entity | :unprocessable_entity |
| 423 | Locked | :locked |
| 424 | Failed Dependency | :failed_dependency |
| 426 | Upgrade Required | :upgrade_required |
| 500 | Internal Server Error | :internal_server_error |
| 501 | Not Implemented | :not_implemented |
| 502 | Bad Gateway | :bad_gateway |
| 503 | Service Unavailable | :service_unavailable |
| 504 | Gateway Timeout | :gateway_timeout |
| 505 | HTTP Version Not Supported | :http_version_not_supported |
| 506 | Variant Also Negotiates | :variant_also_negotiates |
| 507 | Insufficient Storage | :insufficient_storage |
| 510 | Not Extended | :not_extended |
冴えないタイトルですみません。メモです。
Cucumber + Capybara で RESTful APIをテストする場合は
こんな感じでテストを書いています。(「コメント投稿API」はpath.rbで定義しておきます)
さて、本題ですが画像のアップロードでハマりました。
ハマった仮定は省きますが、CapybaraがRack::Testをドライバーとして使っているので、Rack::Test::UploadFile を使ってファイルアップロード周りのコードを簡略化できます。
Rack::Test::UpoadFileの使い方などは、Rack::TestのRSpecを見るとわかりやすかったです。
https://github.com/brynary/rack-test/blob/master/spec/rack/test/multipart_spec.rb
メモです。
RailsでMongoidを試していろいろやっているのですが、SQLでGROUPとか使う系の処理は、Mongoidに備わっているgroupメソッドよりもmap_reduceメソッドの方が良さそうなのでした。
map_reduce method in Class: Mongo::Collection
http://api.mongodb.org/ruby/current/Mongo/Collection.html#map_reduce-instance_method
例えばPointというコレクションがあって、ユーザーごとのポイントを集計してソートしたいという場合、以下のようなコードで集計&ソートできました。
慣れればもっと複雑なことができるんだろうけど、mongodb自体よくわかってないので・・。
ここを参考にしました:
MongoDB, Mongoid and Map/Reduce
http://nsaunders.wordpress.com/2010/08/09/mongodb-mongoid-and-mapreduce/
メモです。
非同期処理にResqueを使う場合、/resque にアクセスすることでResqueのジョブ管理画面を利用できます。
公開する場合、管理画面には認証をかけておきたいので、簡単にBasic認証をかけます。
Rails.root にあるconfig.ruを編集します。
これで「admin/passwd」で認証が掛かりました。
Rackって便利っすねー。
rspecで簡単にJSONの構造をテストしたい時に使えるTIPS
have_jsonというカスタムマッチャを用意します。 JSONをXMLに変換し、nokogiriを使ってxpathで検索します。
サンプルはこんな感じ JSONの中身から、検索したいキーを、xpathで指定します。 キーが見つかれば、テストが通ります。
(この記事はRuby Advent Calendar jp: 2010 : ATNDの12日目です。前日はbash0C7さんでした。)

今日はRubyでイケてる管理画面を生成する「Typus」を紹介します。
Typusは
という点でイケてます。
Rails2からRails3になって、様々なプラグインの定番が切り替わった印象を受けていますが、TypusもActiveScaffoldに変わって定番になるだろうなぁと思うので、是非使ってみてください。
https://github.com/fesplugas/typus
まずは、Rails3で簡単なプロジェクトを作ります。ユーザーモデルとタスクモデルを生成します。
準備OKです。
Gemfileにtypusを追加します。
Bundleを更新します。

できあがり! イヤッホゥ、超簡単!
ドキュメントを参考のこと http://core.typuscms.com/
昨日、mixiの新プラットフォームの発表会、mixi meetup 2010 が行われ、僕も参加してきました。
mixiコネクトはmixi pluginとmixi graph api という2つに分かれました。
予想以上にmixiの本気を感じることができて、今後はmixiへの対応もどんどんとりいれていこうと思いました。
ので、帰ってきてさっそく本日から一般でも使えるようになったmixiチェックボタンをラペコに追加してみました。
こんな感じ

クリックするとポップアップが立ち上がり、 mixiのアクティビティに表示されて、マイミクにペコフォトをチェックしたことを知らせることができます。
どうぞ、チェックしてみてください。
Mitaka.rb #10 でLTをさせていただきました。
ラペコについての紹介LTでした
Mitaka.rb主催者でもあり、今回LTのお誘いをいただいた@ysakaki さん、運営の方々、ありがとうございました。
Rails3で簡単なサンプルを作ってみた スレッド式掲示板です。


レスは追加できるけど、スレッド追加する機能は作り忘れた。
Mongoid版
http://github.com/func09/rails3_sample_bbs/tree/mongoid-20100813
ActiveRecord版
http://github.com/func09/rails3_sample_bbs/tree/activerecord-20100813
それぞれのREADMEに従えば動くはず。 rake db:seed でサンプルデータがインサートされるます。
Rails3だからといって、別段特殊なコードは書けなかった。 よくもわるくもいつもどおり書けた。
http://github.com/func09/rails3_sample_bbs/zipball/mongoid-20100813
http://github.com/func09/rails3_sample_bbs/zipball/activerecord-20100813