Rails
TOKYO Rails #4 - 11/2/2011 @ COOKPAD[twitter:@sanemat] さんに誘ってもらって参加してきた。一緒に行く人がいると最初からぼっち回避できるので安心感が違いますね!トークセッションが二つ(他にもルンバ?の話があったみたいだけどほとんど聞き取れず)…
Rails のログをリクエスト単位で grep する rails-log-block-grep というプログラムを書いて一年くらい使っていたのだけど、不便さを感じたので機能追加した。ついでに Ruby で書きなおした。https://github.com/kyanny/rails-log-block-grepgrep(1) の -A, …
STI and uninitialized constant error | Blogger catこれとまったく同じ状況になった。 STI (Single Table Inheritance) を使って継承した子のモデルのクラス名(定数)を参照すると NameError: uninitialized constant が発生する。先に親のモデルのクラス…
ref: http://d.hatena.ne.jp/a666666/20110802/1312298735This night I had some conversations with rubyists including Japanese, Hangalian, etc. Thanks a lot.I should try to speak to foreigners in English more aggressive.
http://tech.cookpad.com/2011/07/announcing-the-first-cookpad-on-rails-meetup-842011.htmlI will try to speak in English.
弊社は椅子の飛ばない穏やかな社風ですが、ログは重要ですね。しかし logger.info とか何度もタイプするのはめんどいし、時刻とか(超大事!)どこで呼ばれたとか(大事!)を真面目に入れるとロガ―呼び出しが長くなって嫌ですね。なので Log::Minimal っぽ…
In Rails 2.1 or later, you can test your helper methods by ActionView::TestCase.Testing Helpers In Rails 2.1 | VigetUnfortunately, legacy Rails doesn't have ActionView::TestCase. But you can write test for your helpers.ruby - How to test c…
Rails デフォルトの db:* 系タスクを誤って production 環境で実行すると悲惨なので Rakefile は使いたくない しかしバッチ処理などは Rake タスクとしてまとめておきたい(console で都度実行するのはオペミスが怖い) という事情があって、個別にスクリプ…
いわゆるセッション (コントローラのアクションのなかで session[:hoge] とかでアクセスできるアレ) に値を入れた状態でリクエストしたいときはこうやる。ちなみにアレは CGI::Session のインスタンスっぽい。 def test_hoge @request.session[:hoge] = "hog…
何度も似たようなのを書いては捨ててるような気もするけど、性懲りもなくまた書いた。GitHub - kyanny/rails-log-block-grepRails のログは apache やら lighttpd やらのログ (common とか extended/combined とかよばれる) と違って一リクエストが複数行に…
AWDwR 3rd Edition によると Rails 1.2 から ActiveRecord::Base#find の :conditions に Hash を渡せるようになったようで、その際にログを眺めてたら実行される SQL の WHERE 句が IN () を使っていた。これをどこでやってんのか気になったのでソースを追…
プレースホルダの展開を String#gsub でやってるところがキレイだなーと思っただけなんだけど、せっかく読んだので少しだけどメモしとく。全部 rails/activerecord/lib/active_record/base.rb のコードでコピペしてあるのは v2.3.8 のやつ。 def find_by_sql…
Rails' Wiki - Rails勉強会@東京第51回に参加してきました。初参加でした。ちなみに Ruby 関連の勉強会に参加するのもこれが初めて。セッション形式の勉強会というのは初めてで、始まる前はけっこう緊張していたけど、いざ始まってみると案外うまく馴染めた…
$ RAILS_ENV=production script/runner wget.rb < urls.txt while url = gets # do something end とする。
Time.now.to_date.to_s #=> "2010-05-11" とする。 YYYY-mm-dd HH:MM:SS なら Time.now.to_s(:db) で。
二週間ばかり停滞していたけど、今日の午後に二時間ほど時間が作れたので続きをやろうとしたら、 Rails 環境が動かなくなってしまっていた。たぶん、 /usr/local 以下に入れた ruby1.8.7-p249 で動かしていたのに、それを消しちゃって MacPorts から入れた R…
メモ。Ruby の gettext パッケージは、 1.x 系と 2.x 系で gettext/rails っていうファイルの有無に差があるっぽい。 rails 2.0 とかだと gettext 1.90.0 とかの gettext/rails を同梱してるバージョンじゃないとダメのようで gettext/rails がないよー、と…
古いバージョンの rails の doc/api が欲しいとき用のやり方。 http://www.oiax.jp/rails/rails2/freeze_gems.html がうまくいかなかった。例として 2.0.2 の doc/api をつくる。 2.0.2 もインストールされてることが前提。 $ rails --version #=> 2.3.5 $ r…
管理画面と管理者ユーザの追加、アクセス制限などの実装。モデルの仮想属性、セッションによる認証、トランザクションとフックなど。 モデルの仮想属性 attr_accessor などで定義する データベースのテーブルのカラムと関連付かないがモデルオブジェクトが保…
注文する機能の実装。モデル間のリレーションが出てきた。 has_many, belongs_to など。 データベースの外部キー制約 データベースの種類に依存する (汎用性はない) モデル間のリレーションシップ モデルと連動したフォーム 空のモデルオブジェクト (まだデ…
Ajax。部分テンプレート、 RJS など。 RJS はなんかむずかしそう。 部分テンプレート ビューの一部を専用のファイルにおさめたもの ふつうは one action => one view template となる 「一つのテンプレートにロジックが入りすぎていないか」 部分テンプレー…
ショッピングカート機能を実装する。セッションを使う。フラッシュも。 セッション ステートレスな HTTP プロトコルの上位でステートフルトランザクションの仕組みを擬似的に実現するもの Rails では cookie ベースのものがデフォルト => 他のストレージを使…
カスタマーがアクセスする商品一覧ページを作る。 抽象度を持たせてプログラムを作成する コントローラのアクション内にモデルべったりの実装をしない レイアウトを利用してテンプレートを warp する yield :layout, @content_for_layout button_to ヘルパー…
商品管理機能を実装する。 データベース接続情報 config/database.yml scaffold と migration migration ファイルの中で self.up, self.down メソッドを定義する 検証 (validation) はモデルで行う モデルはコードの世界とデータベースの間に立つ門番 モデル…
第5章はこれから作る Depot についての概要説明のみ。実作業はないのでパス。 RailsによるアジャイルWebアプリケーション開発 第3版 RailsによるアジャイルWebアプリケーション開発 第3版 (見だし一覧) GitHub - kyanny/agile_web_development_with_rails: M…
4章からは実践編なのでひたすらサンプルコードを打ち込んだ。なのであんまり拾ってメモすることがない。いくつかマーカーをひいたところもあるので、そこを書きつつ、 github のコミットへの permalink を並べておく。 URL /path/to/app/controller/action E…
インストールの方法だけなので軽く流す。 特定のバージョンの Rails をインストールする # gem install rails --versioin 2.2.2 新しい Rails アプリケーションを作るときに特定のバージョンの Rails を使うように指定する $ rails _2.2.2_ --version Rails …
MVC Model (How, どのように実行すべきか) モデルは門番 ビジネスルール、データ検証、データストア ActiveRecord ORM (Object Relational Mapping) テーブル => クラス, 行 => オブジェクト, 列 => オブジェクトの属性 View ユーザーインターフェース 商品…
トニー・ブザン「頭がよくなる本」をだいたい読み終えつつあるので、読み終えた章のマインドマップを書いていくことにした。読みながら重要だと思ったキーワードにマークをつけているので、そのマークを中心に拾い読みしてマインドマップを書く => キーワー…
一日に2章ずつ読んでコードを実際に入力していくのを目標に。飽きとさぼり防止のために git で管理して一ステップずつコミットしていく。きりがいいところ(章が終わった)で github に push する。一回目の読みとコードの入力を同時にやると視線が動きすぎ…