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って便利っすねー。
(この記事は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のアクティビティに表示されて、マイミクにペコフォトをチェックしたことを知らせることができます。
どうぞ、チェックしてみてください。
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
みんな大好きRuby on Railsも、RCが出て、いよいよバージョン3登場間際といった感じですね 2010年8月30日にリリースされました。
ベータ版をいれるのはちょっと・・と尻込みしていた人(僕)も、やっと重い尻を上げてみようじゃないかと思わなくもないのではないでしょうか?
そこで、Rails3のリリース前にチェックすべき事などをメモします。
Rails3から、railsコマンドの挙動が大きく変わっているので、これまでのRails2も使う必要がある場合は、RVMで複数のRuby環境を準備しておくのが良いです。
Ruby Freaks Lounge 第39回 RVM(Ruby Version Manager)による環境構築
http://gihyo.jp/dev/serial/01/ruby/0039
Ruby Freaks Lounge 第40回 RVM(Ruby Version Manager)による環境構築(2)
http://gihyo.jp/dev/serial/01/ruby/0040
※追記を参照のこと
いままで慣れ親しんだRails2のインターフェイスは、結構互換性があるので、移行に関してものすごく大きなインパクトがあるわけではないようです。
Rails2との違いを比較しながら、Rails3の新しい部分を紹介した素晴らしいスクリーンキャストがあります。 各コンポーネントごとに動画が用意されていて、資料のPDF(全86ページ)もとてもわかりやすく、一度Rails2を学んだ人であれば、ひととおり流せばRails3の新機能を把握できると思います。
Dive into Rails3
http://rubyonrails.org/screencasts/rails3
上記のプレゼン資料(PDF)
http://assets.en.oreilly.com/1/event/40/The%20Rails%203%20Ropes%20Course%20Presentation.pdf
時間がないひとはPDFを見るだけで十分ですよ。
既存のRails2プロジェクトをRails3にアップデートする方法は、RailsCastsで紹介されています。
Upgrading to Rails 3 Part 1
http://railscasts.com/episodes/225-upgrading-to-rails-3-part-1
Upgrading to Rails 3 Part 2
http://railscasts.com/episodes/226-upgrading-to-rails-3-part-2
Enjoy Rails3!
RVMはGemによるインストールが非推奨なので、こちらの方法に従うのがよいとのことです(by @babie)。
PaperClipでクロッピングしたい場合の書き方メモ
has_attached_file :picture, :styles => { :thumb => "200x200#" }
サイズ指定の後ろに「#」で切り抜きになるようだ