トップ «前の日記(2010-02-19) 最新 次の日記(2010-02-22)» 編集

Route 477



2010-02-21

[rails] Rails3に関するさまざまないろいろ

Rails勉強会@東京です(講師:松田さん)

準備

$ gem install rails3b
$ gem install rails --pre
$ gem update

プロジェクト作る

 $ rails books --edge
  • Gemfileに、依存ライブラリ(gem)の情報を書くように。Bundler
  • --edgeなので、「gem "rails", :git => "git://github.com/rails/rails.git"」になっている
  • script/*がscript/railsに
  • 単にrailsでもいい(カレントのscript/railsが呼ばれる)
    • rails_head/railties/bin/railsを参照
  • rails generate
  • あるいはrails g
  • config/environment.rb
    • アプリ名がクラスに! (Books)
    • モデル名と被らないように注意

(このへんでbundlerがハマる)

  • rails g scaffold book title:string price:integer
  • 色が付くように
  • rails aboutがrake aboutに(どうでもいい?)
  • 長いrespond_toブロックの代わりにresponds_with :xmlみたいになるかも(!)
respond_to :html, :xml
def index
   @books = Book.all
   respond_with @books
end
  • validates :title, :presence => true (カラム名を軸にした書き方が)

RSpec

  • RSpecの2.0系(未リリース)はRails3対応
  • Gemfileに gem "rspec-rails', '2.0.0.a5', :group => :test
  • rails g rspec:install で生成

scope

  • scope :titled, lambda{|t| where :title => t}
  • @books = Book.scoped.titled(str)
  • scope :title_like, lambda{|t| where "title like ?", "%#{t}%"}
  • 今後のARの推奨は、find(:condition => ...)じゃなくて
    • Book.where(:title => 'aaa').count のような。
    • whereはさらに連結できる

ビュー

  • scaffoldが_formを作るように
    • app/views/books/_form.html.erb (newとeditから参照されている)

ActiveModel

  • 普通のクラスをモデル扱いさせたりできるぜ
    • form_for(@books_search_form) とするために、
    • #to_model, #to_key, #new_record?が必要

I18N

  • まだデフォルトの日本語訳がない! (松田さんを応援しよう)
  • cp ../rails_head/activerecord/lib/active_record/locale/en.yml config/locale/ar_ja.yml
  • cp ../rails_head/actionpack/lib/action_view/locale/en.yml config/locale/av_ja.yml

JS

  • jquery: scaffoldは対応、RJSはまだ未対応

リリースは?

  • まだバグレポート・修正が活発に
  • 4月予想

[rails] Rails3対応プラグインを探す方法

http://railsplugins.org/plugins を見ればいいそうです

[rails] OpenIDについていろいろ

  • Mixiアプリは当たれば100万人単位のユーザに使ってもらえる
    • PC用はJS、モバイル用は逆にHTTP+RESTな感じ
    • OAuthの仕様に詳しくなるらしい
  • users has_many :identity_url であるべき!
    • 例えばドメイン失効
    • 例えばサービス終了(OpenID Providerの)
    • じゃあ1つのIDでどこでも…ってわけにいかんじゃないすか
      • それはOpenIDのゴールではない
      • 「サービスごとにアカウント作らなくていい」のがいい
  • 独自ドメインをidentity_urlに使うのはアリ?
    • どのProviderのidentity_urlを受け入れるかは、サービス作成者に任されている
    • だから、サイトによってログインできないのは覚悟すべし
    • つまり、OpenIDだからって、任意のidentity_urlを受け入れないといけないわけじゃない
      • 極端な話、特定のサービス群のアカウント持ってる人だけ入れるサービスも作れる
    • というわけでホワイトリスト方式でセキュリティを高める、というのは許される
      • ブラックリスト方式は良くない
  • 要するにOpenIDは認証情報の交換のみを担当するから
    • その先のことはあんまり決まってない(自由度がある)
    • 例:AWSはAmazonのアカウントでログインするようになってるが、Amazonのアカウントで任意のサービスにログインできるわけではない
    • (社内のサービス間のユーザ情報共有としてOpenIDを使った例)

http://www.clickpass.com/

  1. clickpassにOpenIDを登録
  2. サイトのClickpassボタンをクリック
  3. Clickpass上でsignup
  4. 2回目は、Clickpasボタンを押すだけでログインできる!

[rails] プラグインの探し方とか

Rails HEADの情報は?

  • ML
  • コミット(git log)、チケット
  • チャット
  • lighthouse

@wycats vs @nk

  1. http://magicscalingsprinkles.wordpress.com/2010/02/08/why-i-love-everything-you-hate-about-java/
  2. http://gist.github.com/304407
  3. http://yehudakatz.com/2010/02/15/abstractqueryfactoryfactories-and-alias_method_chain-the-ruby-way/

repim

  • openid_authenticaitonのgenerate後、restful_authenticationいらないやってなったときに切り離すのがめんどいというモチベーション