satococoa's blog

主にサーバーサイド、Web 系エンジニアのブログです。Go, Ruby, React, GCP, ...etc.

Rails勉強会@東京第59回に行ってきた

Rails勉強会@東京第59回に参加しましたので、感想などを書き留めておきます。

今回のトピックは以下の3つでした。
  1. @a_matsudaさんのライブコーディング
    rspecとsteakの入り口
  2. よろず相談セッション
    普段疑問に思っていることなどの相談
  3. ActiveSupportを読もう
他にセッション候補として挙がったのはEventMachine、Ajaxのテスト、Cucumber、Gemfileの見せ合い、Rails3.0, 3.1のバグについてなどでした。

それぞれのセッションついて箇条書き程度に。

@a_matsudaさんのライブコーディング

  • 一番参考になったのはそのスピード感でした。特にgitの扱いが非常に早いことが印象的でした。よく使うコマンド(のうち、「副作用のないもの」とおっしゃっていました)はどんどんaliasにしていました。
  • 今自分の作っているアプリではFabricationを使っているのですが、factory_girlもなかなか使いやすそうでした。
  • コーディングをしながら達人出版会のシステムの中身がほんの少し知ることができたのも面白かったです。(Bookモデルのステータスの持たせ方、など)
  • Steakは僕も使っていますが、非プログラマに見せる可能性があるならばCucumberの方がいいのかもしれませんが、そうでなければ書きやすいですし、便利です。
  • 3.1ではgenerateされるmigrationファイルの中身が変わった、などの豆知識も参考になりました。
  • https://github.com/amatsuda/tatsuzine

よろず相談セッション

まずはそれぞれの持っている疑問を会場のホワイトボードに自由に書き込み、それを一つ一つつぶす方法で進めました。その中から印象に残ったものなどを。
  • 集計のSQLなどはArelで無理するよりはおとなしくfind_by_sqlを使うべし
    8割のタスクに対してはArelはよくできているという思想。
  • scopeの中でTime.zone.nowを使っていると、development環境では正しく動くが、productionではうまく動かない問題にはまる。
    config.cache = trueで、モデルのロード時のTime.zone.nowの評価結果が使われてしまうから。lambda {}で囲んで実行時に評価させるべし
    # scope :released, where('published_at < ?', Time.zone.now)
    scope :released, lambda { where('published_at < ?', Time.zone.now) }
  • ruby 1.8でダンプしたyamlが1.9でうまく読めない。
    致し方ないところもある。yaml_wamlなどで回避できるものも。
  • rails newを打つ前に設計などで考えることは特にない。
    アプリケーション名さえ考えてしまったらとりあえずrails newして作り始める。
    model名とだぶりそうな名前はアプリケーション名にしない方がいい。
    敢えてコードネームにしてしまうというのもアリ。(rails new v1とか、v2とか...)
  • JavaScriptのテストはEnvjs使うとそこそこ動く。
    akephalosとか、jsunit, jasmineなどもあり。rubyで全部テストするのではなく、jsのテストはjsで、という動きもあり。
  • Capybara.using_driver :envjs do ... endというメソッドができたので、それを使うとenvjsを使うところをうまく限定できる。
  • slow test対策
    spork, rspec:parallel
  • 認証プラグイン
    The Ruby Toolboxによると、Authlogicが一番人気。僅差でDevise
    最近ActiveModelに入ったsecure_password.rbによって、簡単な認証機能だったら自分で書いてしまう方がいいかも。
    Deviseに合わせて自分で仕様を決めることができる状況ならDeviseを使うのも手軽で良い。
  • これから始める人に伝えたい3つのこと
    最初から妥協はしない。
    プロと同じ道具を使おう
    Rails3から先だけ覚えればいい
    今からやるならruby1.9.2...とはなかなか言えない。
    暫定まとめ(半分冗談まじりだが)
    1. とりあえずMac買ってこい
    2. rails 3から覚える
    3. ruby 1.8から
    敢えてTest::Unitは教えず、Rspecから入るなど
    どういうシチュエーションで「始める」かにもよる。機能追加からやれるのか、本当に1から始めるのか・・・。いきなりテスト書かされても本当の初心者は面白くないのかも。
    Railsを信じすぎないこと。バグのないフレームワークではない。

ActiveSupportを読む

core_extのStringのあたりを読みました。String#truncateがよくわからない動きをするので、直すといい。

ざっとですが、書き出してみました。また来月も行けたらぜひ参加したいです。ありがとうございました。