babie steps

作業療法記録

rails

Heroku で複数の環境( production, staging など)を使い分けたいときー

heroku gem が入っているのは当然として。heroku_san っていう複数環境マネジメントアプリがあるんですが、Stack が最新の cedar じゃなくて、デフォルトの bamboo-mri-1.9.2 になっちゃうので序盤は手動でやることにしました。 heroku create の際、--remot…

Enterを入力した時に更新するテキストボックスのテストの書き方

jQuery で、 $("#target").keypress(function(event) { if ( event.which == 13 ) { //更新... } }; とか書けるじゃないっすか。13 は [Enter] のキーコードね。それで、capybara でどうやってテスト書いたもんかなぁと色々試行錯誤して、@nukusuさんに教え…

Spork で自動的に Model や Routes をリロードする方法

Spork は、起動時に Rails 本体だけでなくアプリケーションもガーッと読み込むので、Model や Routes を変更しても、終了・起動しないと反映されない。これでは autotest なんか使っている時めんどくさいので、ちょっと設定を変更した。最初はこっちを参考に…

Ruby on Rails Tutorial の続き文字列折り返しメソッドが大変よろしくないので修正した

Ruby on Rails Tutorial Learn Rails by Example は大変よろしい教材で重宝しているのだが、Chapter 11 User microposts の 11.5 Exercises 設問 8 に付記されたコード: Listing 11.42. A helper to wrap long words. が大変よろしくない。app/helpers/micr…

Vimana で rails.vim を導入

なんか、Vim スクリプトの管理には、Vimana というものが便利らしいので、それを使って rails.vim をインストールする。 まず cpanm を導入: $ sudo cpan App::cpanminus 長ぇ……入った。次に Vimana を導入: $ sudo cpanm Vimana 長ぇ……入った! vimana で…

リモートの VPS から手元の Growl に autotest の通知を受けつけるようにした

※ 追記したから最後まで読んでから実行してね。 VPS から autotest の Growl の通知を受けたい。autotest-growl は Linux 対応してるのかしら?と思ってソースを見たら、どうも notify-send というコマンドに依存しているらしい。 Ubuntu では libnotify-bin…

Phusion Passenger ユーザーズガイド - インストール、アップグレード、アンインストール

2. Phusion Passenger をインストール、アップグレード、アンインストールする 2.1. 一般的なインストールの説明書 2.1.1. インストール方法の概要 Phusion Passenger をインストールするには3つの方法があります。 Phusion Passenger の gem をインストール…

Phusion Passenger ユーザーズガイド - サポートしているオペレーティングシステム

1. サポートしているオペレーティングシステム Phusion Passenger は、POSIX 系オペレーティングシステムで動きます。別の言葉で言えば、Microsoft Windows を除いた、地球上のほとんど全てのオペレーティングシステムで動きます。Phusion Passenger は、数…

Phusion Passenger ユーザーズガイド - 概要

Twitter をウオッチしていると、Rails のデプロイで苦労している方が多いので、代表的なサーバ構成である Apache + Passenger のドキュメント(Phusion Passenger ユーザーズガイド)を訳して、利用してもらおうと思いました。 概要 Phusion Passenger は、R…

Rails3 対応 MongoDB ORM、Mongoid 詳解―アップグレード

Mongoid のバージョンをアップグレードする時のリファレンスとしてご利用下さい。 2.0.0.BETA.16 + へのアップグレード このバージョンは、MongoDB 1.6.0 を必要とします。 2.0.0.BETA.15 + へのアップグレード もし JSON のシリアライズに include_root_in_…

Rails3 対応 MongoDB ORM、Mongoid 詳解―エクステンション

FABRICATION Paul Eliott さんの Fabrication Gem は、オブジェクト生成ライブラリです。Mongoid を最初からサポートしており、テストの簡便のために、オブジェクトを生成する素敵な構文を提供しています。 Fabricator(:person) do title "Grand Poobah" add…

Rails3 対応 MongoDB ORM、Mongoid 詳解―インテグレーション

CARRIERWAVE ファイルアップロードを扱う Carrierwave は Mongoid をサポートしています。現在のところ、ファイルと S3 に格納することを指定できます。:mount_on オプションがアップローダークラスに定義されてない場合は、ファイル名が アップローダー名_f…

Rails3 対応 MongoDB ORM、Mongoid 詳解―Rakeタスク

Mongoid は Rails 3 環境で以下の Rake タスクを提供します。 db:create 依存関係のために存在します。実際には何もしません。 db:create_indexes モデルから全てのインデックス定義を読み取り、データベースにそれらを作成します。 db:drop システム用コレ…

WEB+DB PRESS Vol.58 の Rails 3.0 特集、Ruby 1.9.2 案内がすごい

WEB+DB PRESS vol.56 届きました。技術評論社様、@inao 様、献本あざーっす! 献本と言えど、ビビッと電波を受信しないとレビューしないんで、割り引かなくていいですよ。(前号はリクエストが記事になったにも関わらずレビューしてない) WEB+DB PRESS Vol.…

Rails3 対応 MongoDB ORM、Mongoid 詳解―その他

Mongoid にはアプリケーションで使える、いくつかの役に立つ機能があります。 マスター/スレイブ サポート mongoid.yml でスレイブデータベースを設定しているなら、スレイブを有効化した読み取りクエリを、ラウンドロビンでスレイブデータベースを参照しま…

Rails3 対応 MongoDB ORM、Mongoid 詳解―インデックス

index マクロを使うことにより、ドキュメントにインデックスを定義することができます。:unique オプションをつけると、ユニークなインデックスを構築できます。オプションは必須ではありません。 class Person include Mongoid::Document field :ssn index …

Rails3 対応 MongoDB ORM、Mongoid 詳解―継承

Mongoid はドキュメントとエンベッドされたドキュメントの継承をサポートしています。以下のドメインモデルを考えてみます。 class Canvas include Mongoid::Document field :name embeds_many :shapes def render shapes.each { |shape| shape.render } end…

Rails3 対応 MongoDB ORM、Mongoid 詳解―バリデーション

Mongoid は、基本的なバリデーションを提供するために ActiveModel::Validations を含んでおり、さらに関連と一意性バリデーションに手を加えています。さらに詳しい情報は、ActiveModel::Validations のドキュメントを参照してください。 全てのバリデーシ…

Rails3 対応 MongoDB ORM、Mongoid 詳解―コールバック

Mongoid は以下のコールバックをサポートしています: before_create before_destroy before_save before_update before_validation after_create after_initialize after_destroy after_save after_update after_validation コールバックは、他のドキュメン…

Rails3 対応 MongoDB ORM、Mongoid 詳解―クエリ

Mongoid は、データベースのドキュメントの問い合わせに、2種類のスタイルをサポートします。最初のスタイルは、ActiveRecord風の、ファインダー/動的なファインダーの構文です。2つ目のスタイルは、Mongoid の Criteria API を使った推奨メソッドです。(…

Rails3 対応 MongoDB ORM、Mongoid 詳解―永続化

今回は、データベースへの Insert、Update、Delete です。 Mongoid は ActiveRecord スタイルのデータベースへの永続化メソッドをサポートしています。永続化戦略の項は、実際に実行されるデータベースクエリについて、注意して見てください。 作成 新しいド…

DHH の最新インタビュー紹介

bigthink.com というサイトに、7月22日に記録され、8月3日付けで公開された、DHH の現時点で最新と思われるインタビューがあります。ビデオの他、文章に書き起こしたものがありますので、英語の聞き取りが出来ない人も、読んで内容を把握することができます…

Rails3 対応 MongoDB ORM、Mongoid 詳解―関連

Mongoid::Document は、embeds_one, embeds_many, embedded_in といった、ActiveRecord スタイルの3つのマクロを通して、他のドキュメントに対して関連を設定することができます。関連を設定すると、1つのドキュメントが他のすべてのドキュメントのルートに…

Rails3 対応 MongoDB ORM、Mongoid 詳解―ドキュメント

インストールに引き続き、ドキュメントを解説します。 ドキュメントは Mongoid のコアオブジェクトであり、データベースに永続化したい全てのオブジェクトは、Mongoid::Document をインクルードしてください。MongoDB でのドキュメントは、BSON オブジェクト…

Rails3 対応 MongoDB ORM、Mongoid 詳解―インストール

まずは、インストールの解説です。 $ gem install mongoid --pre Rails3 対応の最新版は執筆時点で 2.0.0.beta.16 で、ベータ版なので、--pre オプションを使ってインストールします。2.0.0 リリースの際には、--pre を取って下さい。そして、mongo ドライバ…

Rails3 対応 MongoDB ORM、Mongoid 詳解―前説

つい先日 1.6.0 がリリースされ、MongoDB の時代がいよいよキタ!って感じです。MongoDB 自体のインストール・操作などは下記の記事を参考にしてください。 Mac OS X で MongoDB を動かす ハンズオンで分かる MongoDB チュートリアル この記事では、Rails3 …

Rails 3.0 でメールの送信に Gmail を使う

config/environments/development.rb に以下を書くだけ。 config.action_mailer.default_url_options = { :host => "localhost", :port => 3000 } config.action_mailer.delivery_method = :smtp config.action_mailer.smtp_settings = { :address => "smtp.…

Railsの第4世代認証エンジンDeviseのREADMEを翻訳してみた

Devise の README は懇切丁寧だが、その分クソ長いので、読むのに疲れる。後続のために訳してみることにした。無保証。OAuth2 の部分は飛ばした。長いし。差し迫ったら訳します。 Devise Devise は Warden をベースにした Rails のためのフレキシブルな認証…

Railsでscript/runnerで動かすバッチに引数を付けたいとき

引数は渡せませんが、環境変数で渡せます。バッチ内部で、 p ENV["HOGE"] などとしておけば、 HOGE=foo /path/to/script/runner /path/to/batch として、"foo"という文字列を渡せます。もちろん、複数渡すこともできます。 HOGE=foo FUGA=bar /path/to/scrip…

Railsであるタイムゾーンの時刻が知りたい場合どうするの?

例えばSamoaの場合。 t = Time.zone.now #=> Mon, 31 May 2010 07:57:37 UTC 00:00 t.in_time_zone(ActiveSupport::TimeZone['Samoa']) #=> Sun, 30 May 2010 20:57:37 SST -11:00 で、できます。 Time.zone = 'Samoa' Time.zone.now #=> Sun, 30 May 2010 2…