Slide 1

Slide 1 text

Urabe, Shyouhei Ruby 2.5
 What’s New

Slide 2

Slide 2 text

·ͣ͸֓ܗ͔Β

Slide 3

Slide 3 text

EJ⒎TUBUT ˠ 1585 files changed, 147854 insertions(+), 72571 deletions(-) ˠ 1549 files changed, 120363 insertions(+), 70385 deletions(-) ˠ 2933 files changed, 103658 insertions(+), 62082 deletions(-) ˠ 2263 files changed, 82556 insertions(+), 289978 deletions(-) ˠUSVOL 7061 files changed, 360060 insertions(+), 34025 deletions(-)

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

bundler w ͍·ͷͱ͜Ζ͓ͦΒ͘࠷ޙͷඪ४ఴ෇ϥΠϒϥϦ w ͔Β͸ɺઃఆෆཁͰ͍͖ͳΓGemfileΛ ͋Ε ͹ ಡΉΑ͏ʹͳΔ

Slide 7

Slide 7 text

ଞϥΠϒϥϦ • Rubyspec • RDoc 6 (ripper integration) • ERb#result_with_hash • SecureRandom.alphanumeric • Binding#irb • etc.

Slide 8

Slide 8 text

ERb#result_with_hash erb = ERb.new("<%= foo %>") erb.result_with_hash(foo: "1") # => "1"

Slide 9

Slide 9 text

SecureRandom.alphanumeric SecureRandom.alphanumeric(32) # => "Xr3GCd3y2wkUgEF9lSh5pD2s5NDpeHSM"

Slide 10

Slide 10 text

Binding#irb def foo while true do raise unless rand < 0.5 end rescue binding.irb # <= end

Slide 11

Slide 11 text

ίΞΫϥε • String#delete_prefix / String#delete_suffix • Array#append / Array#prepend • Dir#children / Dir#each_child • Hash#transform_keys • Kernel#yield_self

Slide 12

Slide 12 text

String#delete_prefix "log.fluentd.message {...".delete_prefix("log.") # => "fluentd.message {..."

Slide 13

Slide 13 text

Array#append %w'dolor sit amet'.prepend(%w'lorem ipsum') # => [["lorem", "ipsum"], "dolor", "sit", "amet"] %w'dolor sit amet'.prepend('lorem', 'ipsum') # => ["lorem", "ipsum", "dolor", "sit", "amet"]

Slide 14

Slide 14 text

Hash#transform_keys {foo: 'bar'}.transform_keys(&:to_s) # => {"foo"=>"bar"}

Slide 15

Slide 15 text

Kernel#yield_self {foo: 'bar'}.yield_self {|i| JSON.dump(i) } # => "{\"foo\":\"bar\"}"

Slide 16

Slide 16 text

จ๏ͱ͔ • do … rescue … end • Toplevel constant lookup removal • Reverse backtrace order

Slide 17

Slide 17 text

do … rescue … end 128.times do |i| raise unless rand < 0.5 rescue RuntimeError puts $! end

Slide 18

Slide 18 text

Reverse backtrace zsh % ruby -e 'def foo; bar; end' -e 'def bar; raise; end' -e 'foo' Traceback (most recent call last): 2: from -e:3:in `' 1: from -e:1:in `foo' -e:2:in `bar': unhandled exception [1] 34131 exit 1 ruby -e ‘…’ zsh % ruby -e 'def foo; bar; end' -e 'def bar; raise; end' -e 'foo' 2>&1 | cat -e:2:in `bar': unhandled exception from -e:1:in `foo' from -e:3:in `' [1] 34291 exit 1 ruby -e ‘…’ 2>&1 | 34292 done cat