「Ruby 2.0 & Rails 4.0先取りセミナー」の講演資料 (2012/11/21, Web CAT Studioさん主催) http://atnd.org/events/33996
Ruby 2.0 & Rails 4.0দా ໌ (@a_matsuda)
View Slide
whoamiGitHub: amatsudaTwitter: @a_matsuda
https://forkwell.com/ϑϦʔϥϯεͷࣾ֎औక (Ṗ)pull requestʹίϝϯτॻ͘ͻͱ
before
ůŢRubyKaigiʹࢀՃͨ͜͠ͱ͋ΔਓʁRailsษڧձ@౦ژʹࢀՃͨ͜͠ͱ͋ΔਓʁAsakusa.rbʹࢀՃͨ͜͠ͱ͋Δਓʁ
begin
ຊͷ͓2ͭͷʮϝδϟʔόʔδϣϯΞοϓʯ
ϝδϟʔόʔδϣϯΞοϓʂRuby: 1.9.3 => 2.0.0Rails: 3.2.9 => 4.0.0
ۭલͷϝδϟʔόʔδϣϯΞοϓظʂRuby 2.0Rails 4.0Rake 10.0RubyGems 2.0RDoc 4.0RSpec 3.0Sprockets 3.0Capybara 2.0Rubinius 2.0...
ϝδϟʔόʔδϣϯΞοϓظ࣌ͷస৺ػҰసࢀೖͷνϟϯεʂ
Ruby 2.0
Ruby 2.0(Matzͷ)ͷ൵ئ2001ͷୈ1ճRubyConfͷΩʔϊʔτͰMatz͕طʹRuby 2.0ʹݴٴʮֆʹඳ͍ͨṷʯʮ೩ྉʯʮχϯδϯʯʮPerl 6ʯ
Rubyͷྺ࢙199302݄ ੜ (1993/2/24)199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8201302݄ 2.0
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8
͜ͷࠒͷόʔδϣχϯάϧʔϧۮ൪߸͕҆ఆ൛
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8200712݄ 1.9.0 (։ൃ൛)Matz's RubyKo1's Ruby
͜ͷࠒͷόʔδϣχϯάϧʔϧ2έλͷࣈ͍ͨ͘ͳ͍=> 1.10.0 ͋Γಘͳ͍2.0ͬͯࣈ·͍ͩͨ͘ͳ͍1.9.0։ൃ൛ɺ1.9.1͕҆ఆ൛ͰͲ͏͔
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8200712݄ 1.9.0 (։ൃ൛)201008݄ 1.9.2 (΄Μͱ͏ͷ҆ఆ൛)
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8200712݄ 1.9.0 (։ൃ൛)201008݄ 1.9.2 (҆ఆ൛)201110݄ 1.9.3 (҆ఆ൛)
Rubyͷόʔδϣϯ൪߸ͷมભ11.21.41.61.821995/12 1996/12 1997/08 1998/12 1999/08 2000/09 2003/08 2007/12 2010/08 2011/10
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8200712݄ 1.9.0 (։ൃ൛)201008݄ 1.9.2 (҆ఆ൛)201110݄ 1.9.3 (҆ఆ൛)201302݄ 2.0
2003ͷ·ͭͱ͞ΜͷεϥΠυhttp://www.rubyist.net/~matz/slides/rc2003/mgp00009.html
2003ͷ·ͭͱ͞ΜͷεϥΠυhttp://www.rubyist.net/~matz/slides/rc2003/mgp00009.htmlࠓճͷ2.0Ͱ࣮
Rubyͷྺ࢙199302݄ ੜ199512݄ ެ։ (0.95)199612݄ 1.0199708݄ 1.1199812݄ 1.2199908݄ 1.4200009݄ 1.6200308݄ 1.8200712݄ 1.9.0 (։ൃ൛)201008݄ 1.9.2 (҆ఆ൛)201302݄ 2.0
2.0ͷϦϦʔε20132݄24ʮੜʯ͔Βͪΐ͏Ͳ20पલͱ͔ʹ2.0ϦϦʔεه೦ & ੜ20पΠϕϯτΈ͍ͨͳͷ͕͋ΔΜ͡Όͳ͍͔ͳ͊
1.9.3..2.0.01.8..1.9΄Ͳͷbig jumpͰͳ͍ຊʹॏ͍ͨมߋ(= Ѩඓڣש)1.9Ͱࡁ·ͤͨYARVɹEncodingɹ1.92.0 preͩͬͨɺͱݴ͑Δ͔
2.0ͷಛ࠷ॳ͔Β҆ఆ൛Λࢤ2.0.0͕ग़ͨॠ͔ؒΒ҆৺͓͍͍͚ͯͨͩ͠·͢1.9.3ͱͷޓੑΛॏࢹ1.9.3͔ΒεϜʔζʹҠߦͰ͖·͢ඇޓͳมߋ2.1Ҏ߱ʹ
1.9.3..2.0.0৽ػೳύϑΥʔϚϯεͷ্VMGCrequireσϑΥϧτεΫϦϓτΤϯίʔσΟϯά͍ͭʹσϑΥϧτUTF-8ʹʂ͔ͨ͠͠Β࠷େͷඇޓ (ʁ)
ύϑΥʔϚϯεͷ্VMGCrequire
VM: @ko1
GC: @nari3
ύϑΥʔϚϯεͷ্(DEMO) Railsͷىಈ࣌ؒRubyͷόʔδϣϯΛ্͛Δ͚ͩͰഒʹʂ
σϑΥϧτεΫϦϓτΤϯίʔσΟϯά͍ͭʹσϑΥϧτUTF-8ʹʂ(ϚδίϝͱԿͩͬͨͷ͔…)͔ͨ͠͠Β࠷େͷඇޓ (ʁ)
ϚδίϝͱԿͩͬͨͷ͔ΒϢʔβʔʹͱͬͯඞཁͳஈ֊ͩͬͨString͕encodingΛ࣋ͭͱ͍͏֓೦CSIɹinternal encoding, external encodingɹUS-ASCII, ASCII-8BIT, BINARYɹmojibake == ࢮ
ਆల։encodingɺͳΜͱͳ͘Θ͔ͬͨͰ͠ΐʁ=> σϑΥϧτUTF-8͞Μ͍͢͝
@nalsh
M17Nʹ͍ͭͯৄ͘͠ʰA Reintroduction To Ruby M17Nʱhttp://www.slideshare.net/nalsh/a-reintroduction-to-ruby-m17-nʰ Ruby M17N ͷઃܭͱ࣮ʱhttp://jp.rubyist.net/magazine/?0025-Ruby19_m17n
Ruby 2.0ͷ৽ػೳRefinementsModule#prependEnumerable#lazyΩʔϫʔυҾͳͲͳͲ
Ruby 2.0ͷ৽ػೳ͋ͱͰ
Rails 4.0
Railsͷόʔδϣϯ൪߸ͷભҠ200407݄ ެ։200512݄ 1.0200712݄ 2.0201008݄ 3.02012-2013 4.0
ϝδϟʔόʔδϣϯΞοϓʹ͏৽ύϥμΠϜ1.0 DRY, CoC2.0 RESTful3.0 Modularity
ϝδϟʔόʔδϣϯΞοϓʹ͏৽ύϥμΠϜ1.0 DRY, CoC2.0 RESTful3.0 Modularity4.0 ಛʹͳ͠ʂ
Rails 4ʮ৽ػೳʯ͍Ζ͍Ζʮ৽ύϥμΠϜʯಛʹͳ͍جຊతʹ3.2ͷਖ਼ৗਐԽܥ4.0ʹ͖͔͚ͨͬ͠ɺRuby 1.8αϙʔτͷऴྃ(ʁ)
Railsͷόʔδϣϯ൪߸ઓུόʔδϣϯ൪߸ͳΜͯ০ΓRailsઈ͑ؒͳ͘มԽ͢Δ1ຊͷઢ࿏Ͱɺόʔδϣϯͷ۠Γ్தӺͷΑ͏ͳͷ
Railsͷʮ৽ʯόʔδϣϯ൪߸ઓུ৽͍͠όʔδϣϯͰ͑ͳ͘ͳΔػೳ͍͖ͳΓফ͞ͳ͍1ݸલͷόʔδϣϯͰ deprecation warningΛग़࣍͢ͷόʔδϣϯͰফ͢
4.0ͷಛ࠷ॳ͔Β҆ఆ൛Λࢤ4.0.0͕ग़ͨॠ͔ؒΒ҆৺͓͍͍͚ͯͨͩ͠·͢3.2.xͱͷޓੑΛॏࢹ3.2.x͔ΒεϜʔζʹҠߦͰ͖·͢
Railsͷόʔδϣϯ൪߸ઓུόʔδϣϯ൪߸ͳΜͯ০ΓRailsઈ͑ؒͳ͘มԽ͢Δ1ຊͷઢ࿏Ͱɺόʔδϣϯͷ۠Γ్தӺͷΑ͏ͳͷͳͷͰɺ4.0ͷ৽ػೳ͕Ͳ͏͜͏ݴ͏ΑΓ·ͣɺେ͖ͳྲྀΕΛѲ͢Δͱྑ͍͔
࠷ۙͷைྲྀModernSpeedSecurityReal-time webActiveRecordSocial coding
ModernRuby '>= 1.9.3'ɹAPIͷ͞ΒͳΔચ࿅ݹ͍ػೳɺ͋Μ·ΓΘΕͯͳ͍ػೳΛΓΓ֎෦Gem
৽APIAR͍Ζ͍ΖAR.where!AR.all (= .scoped)scope :foo, -> {}NullRelationAR::Model, AMo::Modelupdate_columnsAR.where.notPATCH verbrouting concernRussian doll caching
RIPRuby 1.8 supportvendor/pluginsActiveResourceAR.find :alldynamic findersActiveRecord::SessionStoreRack::Cache
SpeedύϑΥʔϚϯε্Ruby 1.9Ҡߦʹ͏ίʔυͷεϦϜԽSprocketsͷprecompilethreadsafe!AS::QueueTurboLinks
SecurityʮMass Assignment Securityʯ=>ʮStrong Parametersʯ
Real-time webAC::Live (@tenderlove)
@tenderlove
AC::Live"Real Time Salami" https://speakerdeck.com/tenderlove/real-time-salami
ActiveRecord@tenderlove@jonleightonPostgreSQL
@jonleighton
Social coding2721 peopleʂhttp://contributors.rubyonrails.org/ɹೆถ@josevalim@spastorino൴Βʹଓ͘ୈ3ੈ
@josevalim
@spastorino
͓͠Βͤ@josevailm isspeaking atRubyKaigi 2013ʂ
Ruby 2.0ͷʁ
RubyConfͰ͠ΌͬͨͭRuby 2.0 on Railshttp://speakerdeck.com/u/a_matsuda/p/ruby-2-dot-0-on-railsRuby 2.0 on Rails (video)http://www.confreaks.com/videos/1275-rubyconf2012-ruby-2-0-on-rails
ensureThe new Ruby world is coming!ɹPeople are making the Ruby world bettereveryday!Meet the people (= the community) and say"Hi!" to them! <3 <3 <3
ensureWelcome to the new Ruby world!ɹMeet the people at:Asakusa.rbɹRailsษڧձେߐށRubyձٞ03RubyKaigi 2013
end