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 で生成
- hamlジェネレータ!
- http://github.com/indirect/rails3-generators
- ↑中身はまだまだだけどプラグイン書く人は参考になりそう
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を使った例)
- clickpassにOpenIDを登録
- サイトのClickpassボタンをクリック
- Clickpass上でsignup
- 2回目は、Clickpasボタンを押すだけでログインできる!
■ [rails] プラグインの探し方とか
- 昔は: http://agilewebdevelopment.com/plugins/search?q=openid
- Rails3対応を調べるには: http://railsplugins.org/
- あとは http://ruby-toolbox.com/ ?
Rails HEADの情報は?
- ML
- コミット(git log)、チケット
- チャット
- lighthouse
@wycats vs @nk
- http://magicscalingsprinkles.wordpress.com/2010/02/08/why-i-love-everything-you-hate-about-java/
- http://gist.github.com/304407
- http://yehudakatz.com/2010/02/15/abstractqueryfactoryfactories-and-alias_method_chain-the-ruby-way/
- openid_authenticaitonのgenerate後、restful_authenticationいらないやってなったときに切り離すのがめんどいというモチベーション