SlideShare una empresa de Scribd logo
1 de 84
Descargar para leer sin conexión
Rails3.2って
どう変わるの?
2012/03/06
第1回渋谷Edge Rails勉強会
大仲 能史 a.k.a. onk
                     thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
2
                                                           提供
自己紹介
   大仲 能史
   @onk
   仕事
    ソーシャルゲーム事業本部
    アプリケーションエンジニア
    設計・開発担当

                                                                  3
           thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
4
                 本日のお題
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
5
    う変わるの?
    Rails3.2ってど
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
6
      を読もう!
      ⇒Release Note
Ruby on Rails 3.2 Release Note
http://edgeguides.rubyonrails.org/3_2_release_notes.html




                                                                                             7
                                      thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Ruby on Rails 3.2 Release Note
http://developer.aiming-inc.com/rails/rails-3-2-release-
note-in-ja/ (日本語訳)




                                                                                                8
                                         thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
9
      だけ
    そうなところ
    多いので面白
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
10
                                                            MAJOR FEATURES
Major Features
  高速な development モードと
 routing
  自動クエリExplain
  タグつきのログ



                                                                      11
               thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Major Features
  高速な development モードと
 routing
  ファイルが変更されたときのみclassを
  再読み込みするようになりました
  journeyを使うことでroutingの認識が速
  くなりました



                                                                         12
                  thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Major Features
  高速な development モードと
 routing
     超簡単なアプリでも400msほど違った
     ので、開発環境だけでも今すぐ上げる
     と幸せになれるよ

# rails 3.2.2 + ruby 1.9.3
Requests per second:    56.73 [#/sec] (mean)
# rails 3.1.4 + ruby 1.9.3
Requests per second:    18.19 [#/sec] (mean)


                                                                                                 13
                                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Major Features
 自動クエリExplain
  ActiveRecord::Relationにexplainメ
  ソッドが実装されました
  development mode では、0.5 秒以上か
  かったクエリは自動でEXPLAINも発行さ
  れ、ログに出力されるようになりまし
  た



                                                                             14
                      thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Major Features
 タグつきのログ
     ActiveSupport::TaggedLoggingが実装
     されました
Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT))
Logger.tagged("BCX") { Logger.info "Stuff" }
# Logs "[BCX] Stuff"
Logger.tagged("BCX", "Jason") { Logger.info "Stuff" }
# Logs "[BCX] [Jason] Stuff"
Logger.tagged("BCX") { Logger.tagged("Jason") { Logger.info
"Stuff" } }
# Logs "[BCX] [Jason] Stuff"


                                                                                                 15
                                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
16
      変更点
     以上が主な
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
17
     の行きます
     以下細かい
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
18
                                                            RAILTIES
Railties
  scaffoldやmodelのgeneratorの
 属性のデフォルトをstringにし
 ました

$ rails g model article
user:references title body:text


                                                                              19
                       thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  scaffold/model/migrationの
 generatorにindexおよびuniqと
 いう修飾子を与えられるよう
 になりました
rails g migration add_hoge_id_to_piyo
hoge_id:integer:uniq
add_column :piyos, :hoge_id, :integer
add_index :piyos, :hoge_id, :unique => true
                                                                                          20
                                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  Rails::Rack::Logger middleware
 更新。config.log_tagsに書いた
 任意の tag を
 ActiveSupport::Taggedloggingに
 渡すことができるようになりまし
 た
   subdomainやrequest idを表示すると便利!


                                                                             21
                      thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  例外発生時にShowException
 middlewareから呼ばれる例外
 処理アプリケーションを
 config.exceptions_appで設定
 できるようになりました


                                                                        22
                 thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  依存関係のあるファイルに変
 更があったときのみclassを再
 読み込みするようになり、
 developmentの動作速度が向上
 しました


                                                                    23
             thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  Rails::Pluginは廃止予定になり、
 Rails 4.0で削除される予定です




                                                                      24
               thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
25
                                                            ACTION MAILER
Action Mailer
  mailのバージョンを2.4.0に引
 き上げました。
  Rails 3.0で廃止予定になって
 いた古いAPIを削除しました



                                                                    26
             thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
27
                                                            ACTION PACK
Action Controller
  send_fileで:typeを指定しない
 場合、拡張子からMIMEタイプ
 を自動で入れるようになりま
 した
  デフォルトで以下に対応
  png jpg gif bmp tiff mpeg pdf zip


                                                                                  28
                           thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action Controller
  CSRFトークンが欠けている場
 合に警告を出すログレベル
 を、:debugから:warnに変更し
 ました




                                                                    29
             thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action Controller
  APIリクエスト(:xml、:json)に
 対してレスポンス本文が存在
 しない場合、respounderは
 204 No Content を返します。
  scaffoldで作成したcontroller
 も同様に204を返すようになっ
 ています。
                                                                        30
                 thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action Controller
  jQueryから叩くときに嬉しい
 # PUT /hoges/1
 # PUT /hoges/1.json
 def update
   @hoge = Hoge.find(params[:id])

    respond_to do |format|
      if @hoge.update_attributes(params[:hoge])
        format.html { redirect_to @hoge, notice: 'Hoge was successfully
updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @hoge.errors,
status: :unprocessable_entity }
      end
    end
  end
                                                                                                            31
                                                     thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action Controller
  ActionDispatch::ShowExcept
 ionsはリファクタされました。
 例外表示/非表示の責務を
 controllerが負うことになりま
 す。
  show_detailed_exceptions?をoverride
  することでエラー出力を切り替えます

                                                                               32
                        thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action Dispatch
  ActionDispatch::RequestId
 ミドルウェアを追加しました。
  一意なX-Request-Idヘッダがresponse
  に設定されるようになり、
  ActionDispatch::Request#uuidから参
  照できます。
  TaggedLoggingで使うと便利?


                                                                              33
                       thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action View
  render :template =>
 "foo.html.erb" のように、拡
 張子の形で format や handler
 を渡す方式は廃止されました。
 下記の形で利用してください。
  render :template => “foo”, :formats
  => [:html, :js], :handlers => :erb

                                                                                 34
                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action View
  formに名前空間を与えること
 ができるようになりました
  今まで重複していたidを一意
 なものにすることができます
<%= form_for(@offer, :namespace => 'namespace') do |f| %>
  <%= f.label :version, 'Version' %>:
  <%= f.text_field :version %>
<% end %>


                                                                                                 35
                                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action View
  :multipleなselect tagの前に、
 hidden input tagを生成するよ
 うになりました
  何も選択せずに送信した場合、
 何も送られないというHTMLの
 仕様への対策です

                                                                       36
                thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Sprockets
  Assetsは相対プロトコルを
 使っていましたが、デフォル
 トでリクエストと同じプロト
 コルを使うようになります。




                                                                   37
            thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
38
                                                            ACTIVE RECORD
Active Record
  first_or_create、
 first_or_create!、
 first_or_initializeをActive
 Recordに追加しました。
  find_or_create_byよりもどの属性を
  使って探す/作るのかが明確になるので
  良いアプローチ


                                                                         39
                  thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  1カラムでkey/value ストアを
 表現する
 ActiveRecord::Base.storeを
 実装しました
  指定したカラムにserializeし
 たHashを入れることができま
 す。
                                                                         40
                  thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  ユニークなクエリを生成する
 ActiveRecord::Relation#uniq
 を追加しました

User.select("distinct name")


User.select(:name).uniq

                                                                                 41
                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  値の配列を返す
 ActiveRecord::Relation#pluc
 kメソッドが実装されました
  これはserializeされたattribute
 でも動作します


                                                                          42
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
Article.select(:id).map(&:id)


Article.pluck(:id)




                                                                                 43
                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  ActiveRecord::Relation#exp
 lainが実装されました。
  自動的にスロークエリを
 EXPLAINし、ログに吐くよう
 になりました。閾値はデフォ
 ルトで0.5秒です。

                                                                          44
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  assosiation methodsをoverrideや
  compositionする際にsuperを使いやす
  いようmodule化しました
class Car < ActiveRecord::Base
  belongs_to :owner
  belongs_to :old_owner

  def owner=(new_owner)
    self.old_owner = self.owner
    super
  end
end
                                                                                         45
                                  thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  Engineからコピーされた
 migrationはEngine名のスコー
 プを持つようになりました
  例えば以下のようなファイル名になり
  ます
  01_create_posts.blog.rb



                                                                        46
                 thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  scopeを指定してmigrationを
 実行する機能を追加しました
  これにより、Engine単位で
 migrationを実行することがで
 きるようになりました
rake db:migrate SCOPE=blog
                                                                            47
                     thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  transactionを開始する
 with_lockメソッドが追加され
 ました。




                                                                    48
             thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
class Order < ActiveRecord::Base
  def cancel!
    transaction do
      lock!
      # ... cancelling logic
    end
  end
end

class Order < ActiveRecord::Base
  def cancel!
    with_lock do
      # ... cancelling logic
    end
  end
end

                                                                                          49
                                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
50
                                                            ACTIVE MODEL
Active Model
  ActiveModel::Errors#added?
 により定義されたエラーが発
 生したかどうかチェックでき
 ます。




                                                                          51
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Model
 mass_assignmentで保護された属性
 を更新しようとしたときの振る舞い
 をmass_assignment_sanitizerで指定
 できるようになりました。:logger
 と:strictがサポートされています。
  :strictの場合、保護された属性を更新し
  ようとすると常に
  ActiveModel::MassAssignmentSecurity
  ::Errorをraiseします
                                                                               52
                        thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
53
                                                            ACTIVE RESOURCE
Active Resource
  リダイレクトレスポンス: 303
 See Other や 307 Temporary
 Redirect が返ってきた時も、
 301 Moved Permanently や
 302 Found が返ってきたとき
 と同様の挙動になりました。

                                                                        54
                 thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
55
                                                            ACTIVE SUPPORT
Active Support
  ActiveSupport::TaggedLoggi
 ng を追加しました。これは任
 意の標準 Logger クラスをラッ
 プし、タグ付け機能を付与す
 ることができます。


                                                                          56
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Support
  Date、Time、DateTimeの
 beginning_of_weekメソッドは、
 週の開始曜日を指定するオプ
 ションを付けられるようにな
 りました。


                                                                      57
               thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Support
  ActiveSupport::Notificatio
 ns.subscribed を追加しまし
 た。与えたブロックが実行さ
 れている間のみの受信登録
 (subscription) が可能です。


                                                                          58
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Support
  Ruby 1.9におけるblank?の対
 象がUnicodeホワイトスペース
 文字([:space:])に拡張されま
 した。同様に、Ruby 1.8にお
 いては全角スペース(U+3000)
 が空白文字とみなされるよう
 になりました。
                                                                      59
               thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Support
   範囲を生成する方法として
  Time#all_day, Time#all_week,
  Time#all_quarter そして
  Time#all_year を追加しまし
Time.now.all_day
  た。
# => 2012-03-06 00:00:00 +0900..2012-03-06
23:59:59 +0900
User.where(created_at: Time.now.all_day)

                                                                                     60
                              thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Support
  ActiveSupport::Cache::Null
 Store を、開発やテスト向け
 に追加しました。




                                                                          61
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
62
                                 知っておくと面白い変更点
Railties
  Kindle用のRails Guide (.mobi)
 が同梱されるようになりまし
 た




                                                                           63
                    thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  d が destroy の alias に
  ~/.railsrcに rails new のオプ
 ションを保存できるように




                                                                          64
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Railties
  rake routesの結果が見やす
 くなりました
    articles GET      /articles(.:format)            {:action=>"index", :controller=>"articles"}
             POST     /articles(.:format)            {:action=>"create", :controller=>"articles"}
 new_article GET      /articles/new(.:format)        {:action=>"new", :controller=>"articles"}
edit_article GET      /articles/:id/edit(.:format)   {:action=>"edit", :controller=>"articles"}
     article GET      /articles/:id(.:format)        {:action=>"show", :controller=>"articles"}
             PUT      /articles/:id(.:format)        {:action=>"update", :controller=>"articles"}
             DELETE   /articles/:id(.:format)        {:action=>"destroy", :controller=>"articles"}


    articles GET               /articles(.:format)                            articles#index
             POST              /articles(.:format)                            articles#create
 new_article GET               /articles/new(.:format)                        articles#new
edit_article GET               /articles/:id/edit(.:format)                   articles#edit
     article GET               /articles/:id(.:format)                        articles#show
             PUT               /articles/:id(.:format)                        articles#update
             DELETE            /articles/:id(.:format)                        articles#destroy
                                                                                                                                  65
                                                                           thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action View
  日付のヘルパーメソッドに新
 しいオプション
 :use_two_digit_numbers
 valueはそのまま、表示だけzero-
 paddingされます




                                                                        66
                 thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
ActiveRecord
  development mode では、
 db:create同様、 db:dropでtest
 データベースもdropされるよ
 うになりました。




                                                                        67
                 thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
ActiveRecord
  アソシエーションのため
 の :class_nameオプションは
 string の代わりに symbol をと
 れるようになりました。




                                                                      68
               thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
69
                                        お疲れさまでした
                                                        以上
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
70
     自分でも見ておいてね
      だいぶ端折ったので
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
71
                                  edgeの話
                                  少しだけ
Railties
  console class を変更可能に


# it can be added to config/application.rb
console do
  require "pry"
  config.console = Pry
end


                                                                                     72
                              thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Action Pack/Active Resource
  HTTP PATCHメソッドに対応
   PUTは本来リソースの全置換え。
   PATCHメソッドは差分を適用する。


 差分更新がよりRESTな自然な形に




                                                                          73
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
Active Record
  ActiveRecord::Base を継承す
 るのを止めました
    ActiveRecord::Modelをincludeしてね
    AR=>DataMapperが楽になる?

class Post
  include ActiveRecord::Model
end

                                                                                 74
                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
75
                                                            まとめ
まとめ
 Major Features
   ちょっ速
   自動Explain
   TaggedLogging




                                                                          76
                   thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
まとめ
 Railties
   便利になった
     indexの定義漏れを防ぐgenerator
    syntax




                                                                           77
                    thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
まとめ
 ActiveRecord
   便利になった
    uniq, pluck, explain, with_lock
    store
   意味的にしっかりしてきた
    migration の scope
    first_or_create

                                                                                  78
                           thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
まとめ
 ActiveSupport
   便利になった
    TaggedLogging
    Time#all_day
    ActiveSupport::Cache::NullStore




                                                                                 79
                          thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
まとめ
 エラーの扱いが少し変わった
 CSRFトークンがなければ warning
 mass_assignment_sanitizer :strict
plugin が非推奨になった




                                                                                80
                         thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
まとめ
 3.2での開発は捗るぞ
 3.1からあまり変わっていない
 ちょっとずつ便利になってる
毎日railsのcommit logを追い
かけるの推奨
4.0.0楽しみですね!

                                                                     81
              thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
82
      ございました
     ご清聴ありがとう
ドリコムではCHANGELOGを読
ドリコムでは         を読
むのが好きなエンジニアを募集
しています


                                                                   83
            thgirypoC   ©   .devreseR sthgiR llA dtL ,.oC MOCERD
.devreseR sthgiR llA dtL ,.oC MOCERD   ©   thgirypoC
84
     U.where(has_question: true).present?

Más contenido relacionado

Similar a Rails3.2ってどう変わるの?

Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
LLVM overview 20110122
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122nothingcosmos
 
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Sugawara Genki
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hacki7a
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2Jun Yokoyama
 
海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3D海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3DKazuhisa Minato
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Etsuji Nakai
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platformToru Yamaguchi
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!Drecom Co., Ltd.
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Daisuke Hiraoka
 
アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング
アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング
アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング MicroAd, Inc.(Engineer)
 
Ruby on Rails3 Tutorial Chapter2
Ruby on Rails3 Tutorial Chapter2Ruby on Rails3 Tutorial Chapter2
Ruby on Rails3 Tutorial Chapter2Sea Mountain
 
Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterShinya Sugiyama
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Sea Mountain
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517akirahiguchi
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツールYasumasa Suenaga
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードKazuhiro Hara
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 

Similar a Rails3.2ってどう変わるの? (20)

Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
LLVM overview 20110122
LLVM overview 20110122LLVM overview 20110122
LLVM overview 20110122
 
Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張Elixir Meetup #1 Loggerの構造と拡張
Elixir Meetup #1 Loggerの構造と拡張
 
Sc2009autumn s2robot
Sc2009autumn s2robotSc2009autumn s2robot
Sc2009autumn s2robot
 
Rails and twitter #twtr_hack
Rails and twitter #twtr_hackRails and twitter #twtr_hack
Rails and twitter #twtr_hack
 
Rails基礎講座 part.2
Rails基礎講座 part.2Rails基礎講座 part.2
Rails基礎講座 part.2
 
海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3D海外ゲーム技術勉強会#1 OGRE3D
海外ゲーム技術勉強会#1 OGRE3D
 
Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介Open Shift v3 主要機能と内部構造のご紹介
Open Shift v3 主要機能と内部構造のご紹介
 
Inside mobage platform
Inside mobage platformInside mobage platform
Inside mobage platform
 
DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!DApps のユーザ認証に web3.eth.personal.sign を使おう!
DApps のユーザ認証に web3.eth.personal.sign を使おう!
 
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
 
アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング
アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング
アドテクに携わって培った アプリをハイパフォーマンスに保つ設計とコーディング
 
Ruby on Rails3 Tutorial Chapter2
Ruby on Rails3 Tutorial Chapter2Ruby on Rails3 Tutorial Chapter2
Ruby on Rails3 Tutorial Chapter2
 
Locondo 20190703@inno db_cluster
Locondo 20190703@inno db_clusterLocondo 20190703@inno db_cluster
Locondo 20190703@inno db_cluster
 
Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7Ruby on Rails Tutorial Chapter5-7
Ruby on Rails Tutorial Chapter5-7
 
Node.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャーNode.jsでブラウザメッセンジャー
Node.jsでブラウザメッセンジャー
 
Handlersocket 20110517
Handlersocket 20110517Handlersocket 20110517
Handlersocket 20110517
 
Java 9で進化する診断ツール
Java 9で進化する診断ツールJava 9で進化する診断ツール
Java 9で進化する診断ツール
 
Play framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレードPlay framework 2.0のおすすめと1.2からのアップグレード
Play framework 2.0のおすすめと1.2からのアップグレード
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 

Más de Takafumi ONAKA

不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持Takafumi ONAKA
 
技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方Takafumi ONAKA
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発Takafumi ONAKA
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織Takafumi ONAKA
 
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Takafumi ONAKA
 
pt-query-digest は Perl!!
pt-query-digest は Perl!!pt-query-digest は Perl!!
pt-query-digest は Perl!!Takafumi ONAKA
 
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のことアプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のことTakafumi ONAKA
 
cpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちはcpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちはTakafumi ONAKA
 
Perl使いの国のRubyist
Perl使いの国のRubyistPerl使いの国のRubyist
Perl使いの国のRubyistTakafumi ONAKA
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメTakafumi ONAKA
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発Takafumi ONAKA
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースTakafumi ONAKA
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビューTakafumi ONAKA
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術Takafumi ONAKA
 
ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料Takafumi ONAKA
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgitTakafumi ONAKA
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんTakafumi ONAKA
 

Más de Takafumi ONAKA (20)

不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持不正のトライアングルとコードベースの治安維持
不正のトライアングルとコードベースの治安維持
 
技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方技術記事を書く&楽しむチームの作り方
技術記事を書く&楽しむチームの作り方
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
 
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
 
Hatena::Letの式年遷宮
Hatena::Letの式年遷宮Hatena::Letの式年遷宮
Hatena::Letの式年遷宮
 
pt-query-digest は Perl!!
pt-query-digest は Perl!!pt-query-digest は Perl!!
pt-query-digest は Perl!!
 
アプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のことアプリケーションを作るときに考える25のこと
アプリケーションを作るときに考える25のこと
 
cpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちはcpanfileがRubyでパースできることに気づいた俺たちは
cpanfileがRubyでパースできることに気づいた俺たちは
 
Perl使いの国のRubyist
Perl使いの国のRubyistPerl使いの国のRubyist
Perl使いの国のRubyist
 
ApplicationTemplateのススメ
ApplicationTemplateのススメApplicationTemplateのススメ
ApplicationTemplateのススメ
 
RSpecしぐさ
RSpecしぐさRSpecしぐさ
RSpecしぐさ
 
ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発ふつうのRailsアプリケーション開発
ふつうのRailsアプリケーション開発
 
クローズドソースから始めるオープンソース
クローズドソースから始めるオープンソースクローズドソースから始めるオープンソース
クローズドソースから始めるオープンソース
 
「速」を落とさないコードレビュー
「速」を落とさないコードレビュー「速」を落とさないコードレビュー
「速」を落とさないコードレビュー
 
短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術短期間で新技術を学ぶ技術
短期間で新技術を学ぶ技術
 
Application Bootstrap
Application BootstrapApplication Bootstrap
Application Bootstrap
 
ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料ドリコム×ピクシブ 社会人交換留学説明資料
ドリコム×ピクシブ 社会人交換留学説明資料
 
すこやかRails
すこやかRailsすこやかRails
すこやかRails
 
マジカルsvnとキュアgit
マジカルsvnとキュアgitマジカルsvnとキュアgit
マジカルsvnとキュアgit
 
Github Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃんGithub Enterprise じゃなくてもいいじゃん
Github Enterprise じゃなくてもいいじゃん
 

Rails3.2ってどう変わるの?

  • 1. Rails3.2って どう変わるの? 2012/03/06 第1回渋谷Edge Rails勉強会 大仲 能史 a.k.a. onk thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 2. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 2 提供
  • 3. 自己紹介 大仲 能史 @onk 仕事 ソーシャルゲーム事業本部 アプリケーションエンジニア 設計・開発担当 3 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 4. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 4 本日のお題
  • 5. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 5 う変わるの? Rails3.2ってど
  • 6. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 6 を読もう! ⇒Release Note
  • 7. Ruby on Rails 3.2 Release Note http://edgeguides.rubyonrails.org/3_2_release_notes.html 7 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 8. Ruby on Rails 3.2 Release Note http://developer.aiming-inc.com/rails/rails-3-2-release- note-in-ja/ (日本語訳) 8 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 9. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 9 だけ そうなところ 多いので面白
  • 10. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 10 MAJOR FEATURES
  • 11. Major Features 高速な development モードと routing 自動クエリExplain タグつきのログ 11 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 12. Major Features 高速な development モードと routing ファイルが変更されたときのみclassを 再読み込みするようになりました journeyを使うことでroutingの認識が速 くなりました 12 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 13. Major Features 高速な development モードと routing 超簡単なアプリでも400msほど違った ので、開発環境だけでも今すぐ上げる と幸せになれるよ # rails 3.2.2 + ruby 1.9.3 Requests per second: 56.73 [#/sec] (mean) # rails 3.1.4 + ruby 1.9.3 Requests per second: 18.19 [#/sec] (mean) 13 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 14. Major Features 自動クエリExplain ActiveRecord::Relationにexplainメ ソッドが実装されました development mode では、0.5 秒以上か かったクエリは自動でEXPLAINも発行さ れ、ログに出力されるようになりまし た 14 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 15. Major Features タグつきのログ ActiveSupport::TaggedLoggingが実装 されました Logger = ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)) Logger.tagged("BCX") { Logger.info "Stuff" } # Logs "[BCX] Stuff" Logger.tagged("BCX", "Jason") { Logger.info "Stuff" } # Logs "[BCX] [Jason] Stuff" Logger.tagged("BCX") { Logger.tagged("Jason") { Logger.info "Stuff" } } # Logs "[BCX] [Jason] Stuff" 15 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 16. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 16 変更点 以上が主な
  • 17. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 17 の行きます 以下細かい
  • 18. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 18 RAILTIES
  • 19. Railties scaffoldやmodelのgeneratorの 属性のデフォルトをstringにし ました $ rails g model article user:references title body:text 19 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 20. Railties scaffold/model/migrationの generatorにindexおよびuniqと いう修飾子を与えられるよう になりました rails g migration add_hoge_id_to_piyo hoge_id:integer:uniq add_column :piyos, :hoge_id, :integer add_index :piyos, :hoge_id, :unique => true 20 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 21. Railties Rails::Rack::Logger middleware 更新。config.log_tagsに書いた 任意の tag を ActiveSupport::Taggedloggingに 渡すことができるようになりまし た subdomainやrequest idを表示すると便利! 21 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 22. Railties 例外発生時にShowException middlewareから呼ばれる例外 処理アプリケーションを config.exceptions_appで設定 できるようになりました 22 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 23. Railties 依存関係のあるファイルに変 更があったときのみclassを再 読み込みするようになり、 developmentの動作速度が向上 しました 23 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 24. Railties Rails::Pluginは廃止予定になり、 Rails 4.0で削除される予定です 24 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 25. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 25 ACTION MAILER
  • 26. Action Mailer mailのバージョンを2.4.0に引 き上げました。 Rails 3.0で廃止予定になって いた古いAPIを削除しました 26 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 27. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 27 ACTION PACK
  • 28. Action Controller send_fileで:typeを指定しない 場合、拡張子からMIMEタイプ を自動で入れるようになりま した デフォルトで以下に対応 png jpg gif bmp tiff mpeg pdf zip 28 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 29. Action Controller CSRFトークンが欠けている場 合に警告を出すログレベル を、:debugから:warnに変更し ました 29 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 30. Action Controller APIリクエスト(:xml、:json)に 対してレスポンス本文が存在 しない場合、respounderは 204 No Content を返します。 scaffoldで作成したcontroller も同様に204を返すようになっ ています。 30 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 31. Action Controller jQueryから叩くときに嬉しい # PUT /hoges/1 # PUT /hoges/1.json def update @hoge = Hoge.find(params[:id]) respond_to do |format| if @hoge.update_attributes(params[:hoge]) format.html { redirect_to @hoge, notice: 'Hoge was successfully updated.' } format.json { head :no_content } else format.html { render action: "edit" } format.json { render json: @hoge.errors, status: :unprocessable_entity } end end end 31 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 32. Action Controller ActionDispatch::ShowExcept ionsはリファクタされました。 例外表示/非表示の責務を controllerが負うことになりま す。 show_detailed_exceptions?をoverride することでエラー出力を切り替えます 32 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 33. Action Dispatch ActionDispatch::RequestId ミドルウェアを追加しました。 一意なX-Request-Idヘッダがresponse に設定されるようになり、 ActionDispatch::Request#uuidから参 照できます。 TaggedLoggingで使うと便利? 33 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 34. Action View render :template => "foo.html.erb" のように、拡 張子の形で format や handler を渡す方式は廃止されました。 下記の形で利用してください。 render :template => “foo”, :formats => [:html, :js], :handlers => :erb 34 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 35. Action View formに名前空間を与えること ができるようになりました 今まで重複していたidを一意 なものにすることができます <%= form_for(@offer, :namespace => 'namespace') do |f| %> <%= f.label :version, 'Version' %>: <%= f.text_field :version %> <% end %> 35 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 36. Action View :multipleなselect tagの前に、 hidden input tagを生成するよ うになりました 何も選択せずに送信した場合、 何も送られないというHTMLの 仕様への対策です 36 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 37. Sprockets Assetsは相対プロトコルを 使っていましたが、デフォル トでリクエストと同じプロト コルを使うようになります。 37 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 38. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 38 ACTIVE RECORD
  • 39. Active Record first_or_create、 first_or_create!、 first_or_initializeをActive Recordに追加しました。 find_or_create_byよりもどの属性を 使って探す/作るのかが明確になるので 良いアプローチ 39 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 40. Active Record 1カラムでkey/value ストアを 表現する ActiveRecord::Base.storeを 実装しました 指定したカラムにserializeし たHashを入れることができま す。 40 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 41. Active Record ユニークなクエリを生成する ActiveRecord::Relation#uniq を追加しました User.select("distinct name") User.select(:name).uniq 41 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 42. Active Record 値の配列を返す ActiveRecord::Relation#pluc kメソッドが実装されました これはserializeされたattribute でも動作します 42 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 43. Active Record Article.select(:id).map(&:id) Article.pluck(:id) 43 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 44. Active Record ActiveRecord::Relation#exp lainが実装されました。 自動的にスロークエリを EXPLAINし、ログに吐くよう になりました。閾値はデフォ ルトで0.5秒です。 44 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 45. Active Record assosiation methodsをoverrideや compositionする際にsuperを使いやす いようmodule化しました class Car < ActiveRecord::Base belongs_to :owner belongs_to :old_owner def owner=(new_owner) self.old_owner = self.owner super end end 45 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 46. Active Record Engineからコピーされた migrationはEngine名のスコー プを持つようになりました 例えば以下のようなファイル名になり ます 01_create_posts.blog.rb 46 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 47. Active Record scopeを指定してmigrationを 実行する機能を追加しました これにより、Engine単位で migrationを実行することがで きるようになりました rake db:migrate SCOPE=blog 47 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 48. Active Record transactionを開始する with_lockメソッドが追加され ました。 48 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 49. Active Record class Order < ActiveRecord::Base def cancel! transaction do lock! # ... cancelling logic end end end class Order < ActiveRecord::Base def cancel! with_lock do # ... cancelling logic end end end 49 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 50. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 50 ACTIVE MODEL
  • 51. Active Model ActiveModel::Errors#added? により定義されたエラーが発 生したかどうかチェックでき ます。 51 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 52. Active Model mass_assignmentで保護された属性 を更新しようとしたときの振る舞い をmass_assignment_sanitizerで指定 できるようになりました。:logger と:strictがサポートされています。 :strictの場合、保護された属性を更新し ようとすると常に ActiveModel::MassAssignmentSecurity ::Errorをraiseします 52 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 53. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 53 ACTIVE RESOURCE
  • 54. Active Resource リダイレクトレスポンス: 303 See Other や 307 Temporary Redirect が返ってきた時も、 301 Moved Permanently や 302 Found が返ってきたとき と同様の挙動になりました。 54 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 55. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 55 ACTIVE SUPPORT
  • 56. Active Support ActiveSupport::TaggedLoggi ng を追加しました。これは任 意の標準 Logger クラスをラッ プし、タグ付け機能を付与す ることができます。 56 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 57. Active Support Date、Time、DateTimeの beginning_of_weekメソッドは、 週の開始曜日を指定するオプ ションを付けられるようにな りました。 57 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 58. Active Support ActiveSupport::Notificatio ns.subscribed を追加しまし た。与えたブロックが実行さ れている間のみの受信登録 (subscription) が可能です。 58 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 59. Active Support Ruby 1.9におけるblank?の対 象がUnicodeホワイトスペース 文字([:space:])に拡張されま した。同様に、Ruby 1.8にお いては全角スペース(U+3000) が空白文字とみなされるよう になりました。 59 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 60. Active Support 範囲を生成する方法として Time#all_day, Time#all_week, Time#all_quarter そして Time#all_year を追加しまし Time.now.all_day た。 # => 2012-03-06 00:00:00 +0900..2012-03-06 23:59:59 +0900 User.where(created_at: Time.now.all_day) 60 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 61. Active Support ActiveSupport::Cache::Null Store を、開発やテスト向け に追加しました。 61 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 62. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 62 知っておくと面白い変更点
  • 63. Railties Kindle用のRails Guide (.mobi) が同梱されるようになりまし た 63 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 64. Railties d が destroy の alias に ~/.railsrcに rails new のオプ ションを保存できるように 64 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 65. Railties rake routesの結果が見やす くなりました articles GET /articles(.:format) {:action=>"index", :controller=>"articles"} POST /articles(.:format) {:action=>"create", :controller=>"articles"} new_article GET /articles/new(.:format) {:action=>"new", :controller=>"articles"} edit_article GET /articles/:id/edit(.:format) {:action=>"edit", :controller=>"articles"} article GET /articles/:id(.:format) {:action=>"show", :controller=>"articles"} PUT /articles/:id(.:format) {:action=>"update", :controller=>"articles"} DELETE /articles/:id(.:format) {:action=>"destroy", :controller=>"articles"} articles GET /articles(.:format) articles#index POST /articles(.:format) articles#create new_article GET /articles/new(.:format) articles#new edit_article GET /articles/:id/edit(.:format) articles#edit article GET /articles/:id(.:format) articles#show PUT /articles/:id(.:format) articles#update DELETE /articles/:id(.:format) articles#destroy 65 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 66. Action View 日付のヘルパーメソッドに新 しいオプション :use_two_digit_numbers valueはそのまま、表示だけzero- paddingされます 66 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 67. ActiveRecord development mode では、 db:create同様、 db:dropでtest データベースもdropされるよ うになりました。 67 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 68. ActiveRecord アソシエーションのため の :class_nameオプションは string の代わりに symbol をと れるようになりました。 68 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 69. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 69 お疲れさまでした 以上
  • 70. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 70 自分でも見ておいてね だいぶ端折ったので
  • 71. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 71 edgeの話 少しだけ
  • 72. Railties console class を変更可能に # it can be added to config/application.rb console do require "pry" config.console = Pry end 72 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 73. Action Pack/Active Resource HTTP PATCHメソッドに対応 PUTは本来リソースの全置換え。 PATCHメソッドは差分を適用する。 差分更新がよりRESTな自然な形に 73 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 74. Active Record ActiveRecord::Base を継承す るのを止めました ActiveRecord::Modelをincludeしてね AR=>DataMapperが楽になる? class Post include ActiveRecord::Model end 74 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 75. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 75 まとめ
  • 76. まとめ Major Features ちょっ速 自動Explain TaggedLogging 76 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 77. まとめ Railties 便利になった indexの定義漏れを防ぐgenerator syntax 77 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 78. まとめ ActiveRecord 便利になった uniq, pluck, explain, with_lock store 意味的にしっかりしてきた migration の scope first_or_create 78 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 79. まとめ ActiveSupport 便利になった TaggedLogging Time#all_day ActiveSupport::Cache::NullStore 79 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 80. まとめ エラーの扱いが少し変わった CSRFトークンがなければ warning mass_assignment_sanitizer :strict plugin が非推奨になった 80 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 81. まとめ 3.2での開発は捗るぞ 3.1からあまり変わっていない ちょっとずつ便利になってる 毎日railsのcommit logを追い かけるの推奨 4.0.0楽しみですね! 81 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 82. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 82 ございました ご清聴ありがとう
  • 83. ドリコムではCHANGELOGを読 ドリコムでは を読 むのが好きなエンジニアを募集 しています 83 thgirypoC © .devreseR sthgiR llA dtL ,.oC MOCERD
  • 84. .devreseR sthgiR llA dtL ,.oC MOCERD © thgirypoC 84 U.where(has_question: true).present?