rabbit-slide-znz-rubykansai70-ruby230 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8a3b2510bb8fe7baa7a2cad037125cdc003a77cc
4
+ data.tar.gz: 334510be495aa4739f7dfdfd7d65c7461a76bd3b
5
+ SHA512:
6
+ metadata.gz: 5b188bd50cfa50e7dd5debfebda079786f7bb6d116ad4b83963301abada08c4204ff130ea87738f455aff33c735a9770432253c5dad780c60b8e0383bfb1e682
7
+ data.tar.gz: 4c63c147863806d99d0e912a43c98a5565629c9c6e2bdca8f86f49a0f64151c7723e51d189a6ea0cd54ca3c8f155dc58938fe8457cf468b7062aa5162808a3b4
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ rubykansai70-ruby230.rab
@@ -0,0 +1,23 @@
1
+ # Ruby 2.3.0 の新機能について
2
+
3
+ 第70回 Ruby関西 勉強会で Ruby 2.3.0 の新機能の紹介などの話をしたときのスライドです。
4
+
5
+ ## 作者向け
6
+
7
+ ### 表示
8
+
9
+ rake
10
+
11
+ ### 公開
12
+
13
+ rake publish
14
+
15
+ ## 閲覧者向け
16
+
17
+ ### インストール
18
+
19
+ gem install rabbit-slide-znz-rubykansai70-ruby230
20
+
21
+ ### 表示
22
+
23
+ rabbit rabbit-slide-znz-rubykansai70-ruby230.gem
@@ -0,0 +1,17 @@
1
+ require "rabbit/task/slide"
2
+
3
+ # Edit ./config.yaml to customize meta data
4
+
5
+ spec = nil
6
+ Rabbit::Task::Slide.new do |task|
7
+ spec = task.spec
8
+ # spec.files += Dir.glob("doc/**/*.*")
9
+ # spec.files -= Dir.glob("private/**/*.*")
10
+ # spec.add_runtime_dependency("YOUR THEME")
11
+ end
12
+
13
+ desc "Tag #{spec.version}"
14
+ task :tag do
15
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
16
+ sh("git", "push", "--tags")
17
+ end
@@ -0,0 +1,20 @@
1
+ ---
2
+ id: rubykansai70-ruby230
3
+ base_name: rubykansai70-ruby230
4
+ tags:
5
+ - ruby
6
+ presentation_date: 2016.1.9
7
+ version: 1.0.0
8
+ licenses: []
9
+ slideshare_id: rubykansai70-ruby230
10
+ speaker_deck_id: ruby-2-dot-3-0-falsexin-ji-neng-nituite
11
+ ustream_id:
12
+ vimeo_id:
13
+ youtube_id:
14
+ author:
15
+ markup_language: :rd
16
+ name: Kazuhiro NISHIYAMA
17
+ email: zn@mbf.nifty.com
18
+ rubygems_user: znz
19
+ slideshare_user: znzjp
20
+ speaker_deck_user: znz
@@ -0,0 +1,534 @@
1
+ = Ruby 2.3.0 の新機能について
2
+
3
+ # : subtitle
4
+ # サブタイトル
5
+ : author
6
+ Kazuhiro NISHIYAMA
7
+ # : institution
8
+ # 所属
9
+ : content-source
10
+ 第70回 Ruby関西 勉強会
11
+ : date
12
+ 2016-01-09
13
+ # : allotted-time
14
+ # 5m
15
+ # : theme
16
+ # default
17
+
18
+ = 自己紹介
19
+
20
+ * twitter や github では @znz
21
+
22
+ # image
23
+ # src = https://secure.gravatar.com/avatar/8e497efbe99e2fa051316337d03624d9?s=200
24
+ # relative_height = 100
25
+
26
+ = Ruby 関連
27
+
28
+ * Ruby (CRuby) のコミッター
29
+ * Ruby 関係でいろいろ
30
+ * るびま (Rubyist Magazine) とか
31
+ * http://magazine.rubyist.net/
32
+ * るりま (Ruby リファレンスマニュアル) とか
33
+ * http://docs.ruby-lang.org/ja/
34
+ * Ruby 関連のイベントでの発表
35
+
36
+ = Ruby 2.3.0
37
+
38
+ * 2015-12-25 リリース
39
+ * 2.3 系列最初のリリース
40
+
41
+ = 新機能を知るには?
42
+
43
+ * www.ruby-lang.org のリリースアナウンス
44
+ * 配布物の (({NEWS})) ファイル
45
+ * それらを元に紹介を書いているブログ記事
46
+
47
+ = Frozen String Literal プラグマ (1)
48
+
49
+ * Ruby 2.1 から (({"str".freeze})) が最適化
50
+ * (({freeze})) 追加の pull request が社会問題化
51
+ * 新しいマジックコメントとコマンドラインオプション追加
52
+
53
+ = Frozen String Literal プラグマ (2)
54
+
55
+ * 結果: 新しいマジックコメント追加の pull request 増加か(?)
56
+ * 要経過観察
57
+
58
+ = Frozen String Literal プラグマ (3)
59
+
60
+ #!/usr/bin/env ruby
61
+ # -*- coding: utf-8 -*-
62
+ # frozen_string_literal: true
63
+ p "".frozen? # => true
64
+
65
+ shebang や coding マジックコメントがあれば、その後
66
+
67
+ = Frozen String Literal プラグマ (4)
68
+
69
+ (({_})) でも (({-})) でも良い
70
+
71
+ # frozen_string_literal: true
72
+ # frozen-string-literal: true
73
+
74
+ = Frozen String Literal プラグマ (5)
75
+
76
+ 大文字でも良い
77
+
78
+ # FROZEN-STRING-LITERAL: true
79
+
80
+ しかし typo していると効かないのでしっかり動作確認しましょう
81
+
82
+ = Frozen String Literal プラグマ (6)
83
+
84
+ コマンドラインオプションでデフォルトの挙動変更
85
+
86
+ ruby --enable=frozen-string-literal foo.rb
87
+
88
+ = Frozen String Literal プラグマ (7)
89
+
90
+ 影響を受けなくする (今までの挙動にする) には
91
+
92
+ # frozen_string_literal: false
93
+
94
+ 標準添付ライブラリには追加済み
95
+
96
+ = Frozen String Literal プラグマ (8)
97
+
98
+ # frozen-string-literal: true
99
+ "str" << "ing"
100
+ # ~> foo.rb:2:in `<main>': can't modify frozen String (RuntimeError)
101
+
102
+ = Frozen String Literal プラグマ (9)
103
+
104
+ # frozen-string-literal: true
105
+ "str" << "ing"
106
+ # ~> foo.rb:2:in `<main>': can't modify frozen String,
107
+ created at foo.rb:2 (RuntimeError)
108
+
109
+ ((%ruby --debug=frozen-string-literal foo.rb%)) で実行すると文字列の生成場所がわかる (((%ruby -d foo.rb%)) でも有効になる)
110
+
111
+ = Frozen String Literal プラグマ (10)
112
+
113
+ 個人的にはおすすめは
114
+
115
+ * 速度が必要なファイルだけ (({frozen-string-literal: true}))
116
+ * 破壊的変更が必要なリテラルは (({"str".dup})) で mutable にする
117
+ * 互換性が必要なら、引き続き (({"str".freeze}))
118
+
119
+ = (({String#+@})), (({String#-@})) (1)
120
+
121
+ * (({+'foo'})) は変更可能な String を返す
122
+ * (({-'foo'})) は freeze された String を返す
123
+ * 覚え方: 水は 0 度以下で凍るから
124
+
125
+ = (({String#+@})), (({String#-@})) (2)
126
+
127
+ 演算子の優先順位に注意が必要
128
+
129
+ +"str" << "ing" # => "string"
130
+
131
+ +"str".concat("ing") # ~> RuntimeError
132
+
133
+ (+"str").concat("ing") # => "string"
134
+
135
+ = (({String#+@})), (({String#-@})) (3)
136
+
137
+ * (({"str".freeze})) は最適化される
138
+ * (({-"str"})) は最適化されない
139
+ * 個人的感想としては、広く使われるかどうかはよく分からない
140
+
141
+ = safe navigation operator (1)
142
+
143
+ * セーフナビゲーション演算子
144
+ * 日本語の定訳は (まだ) ない
145
+ * ((<lonely operator (ぼっち演算子)|URL:https://www.instagram.com/p/-M9l6mRPLR/>)) とも呼ばれている
146
+
147
+ = safe navigation operator (2)
148
+
149
+ * C#, Groovy, Swift などの (({?.})) に似た機能
150
+ * (({?.})) は採用できなかったので (({&.}))
151
+ * 開発版の途中までは (({.?})) だった
152
+ * Active Support の (({try!})) に相当
153
+
154
+ = Active Support
155
+
156
+ ((<r52232|URL:http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=52232&view=revision>)) で修正されているように ActiveSupport ではなく Active Support が正式名称
157
+
158
+ Railsのコンポーネント名は語の間にスペースを1つ置く
159
+ 表記を正式なものとする (例: "Active Support")。
160
+
161
+ http://railsguides.jp/api_documentation_guidelines.html#%E8%AA%9E%E8%AA%BF
162
+
163
+ = safe navigation operator (3)
164
+
165
+ obj&.foo
166
+
167
+ (({obj && obj.foo})) 相当
168
+
169
+ = safe navigation operator (4)
170
+
171
+ obj.try!(:foo, bar())
172
+
173
+ (({bar()})) が常に呼ばれる
174
+
175
+ obj&.foo(bar())
176
+
177
+ (({bar()})) が呼ばれるかは (({obj})) が (({nil})) かどうかによる
178
+
179
+ = safe navigation operator (5)
180
+
181
+ obj&.attr += 1
182
+
183
+ 属性の代入形式も使える
184
+
185
+ = safe navigation operator (6)
186
+
187
+ obj&.foo.bar
188
+
189
+ (({obj})) が (({nil})) でも (({bar})) が呼ばれる
190
+
191
+ ((<#11816|URL:https://bugs.ruby-lang.org/issues/11816>)) に議論あり
192
+
193
+ = safe navigation operator (7)
194
+
195
+ obj&.foo&.bar
196
+
197
+ (({obj && (foo = obj.foo) && foo.bar})) に相当
198
+
199
+ = dig (1)
200
+
201
+ params[:order] && params[:order][:shipping_info] &&
202
+ params[:order][:shipping_info][:country]
203
+ # or
204
+ params[:order][:shipping_info][:country] rescue nil
205
+ # or
206
+ params.fetch(:order, {}).fetch(:shipping_info, {}).
207
+ fetch(:country, nil)
208
+
209
+ params.dig(:order, :shipping_info, :country)
210
+
211
+ = dig (2)
212
+
213
+ * JSON をパースした結果など用
214
+ * (({Array#dig})), (({Hash#dig})), (({Struct#dig})), (({OpenStruct#dig}))
215
+
216
+ = did_you_mean gem (1)
217
+
218
+ * did_you_mean gem がバンドルされた
219
+ * NameError と NoMethodError の発生時に修正候補表示
220
+
221
+ = did_you_mean gem (2)
222
+
223
+ $ ruby -e '"Yuki".starts_with?("Y")'
224
+ -e:1:in `<main>': undefined method `starts_with?'
225
+ for "Yuki":String (NoMethodError)
226
+ Did you mean? start_with?
227
+
228
+ = did_you_mean gem (3)
229
+
230
+ 無効にするには
231
+
232
+ $ ruby --disable=did_you_mean -e '"Yuki".starts_with?("Y")'
233
+ -e:1:in `<main>': undefined method `starts_with?'
234
+ for "Yuki":String (NoMethodError)
235
+
236
+ $ ruby --disable-did_you_mean -e '"Yuki".starts_with?("Y")'
237
+ -e:1:in `<main>': undefined method `starts_with?'
238
+ for "Yuki":String (NoMethodError)
239
+
240
+ = did_you_mean gem (4)
241
+
242
+ 内部的にサポートが増えて速度的にもほぼ問題なくなっている
243
+
244
+ * ((<Feature #10881|URL:https://bugs.ruby-lang.org/issues/10881>)) で (({NoMethodError#receiever})) が追加された
245
+ * ((<Feature #11777|URL:https://bugs.ruby-lang.org/issues/11777>)) で (({NameError#local_variables})) が追加されて (({TracePoint})) を使わなくなった
246
+
247
+ = RubyVM::InstructionSequence (1)
248
+
249
+ * experimental feature
250
+ * RubyVM::InstructionSequence#to_binary と .load_from_binary
251
+ * コンパイル済みバイナリを読み書き
252
+
253
+ = RubyVM::InstructionSequence (2)
254
+
255
+ * 使用例として yomikomu gem
256
+ * https://github.com/ko1/yomikomu
257
+ * 詳細は ((<(('http://atdot.net/~ko1/diary/201512.html#d13'))|URL:http://atdot.net/~ko1/diary/201512.html#d13>))
258
+
259
+ = さまざまなパフォーマンス改善 (1)
260
+
261
+ https://www.ruby-lang.org/ja/news/2015/12/25/ruby-2-3-0-released/ より
262
+
263
+ * method entry データ構造の再検討
264
+ * 新しい table data 構造
265
+ * (({Proc#call})) 最適化
266
+
267
+ = さまざまなパフォーマンス改善 (2)
268
+
269
+ * オブジェクトアロケーションとメソッド呼び出しのコードにおけるマシンコードレベルでの最適化
270
+ * よりスマートな instance variable データ構造
271
+
272
+ = さまざまなパフォーマンス改善 (3)
273
+
274
+ * (({*_nonblock})) における exception: false キーワード引数のサポート
275
+
276
+ = (({*_nonblock})) に (({exception: false})) キーワード引数
277
+
278
+ * (({IO::WaitReadable}))/(({IO::WaitWritable}))
279
+ を発生する代わりに
280
+ * (({:wait_readable}))/(({:wait_writable}))
281
+ を返す
282
+
283
+ = NEWS
284
+
285
+ * ここまでが www.ruby-lang.org で取り上げられていた新機能 (とその関連の話)
286
+ * ここからは NEWS からその他の新機能を抜粋
287
+
288
+ = indented here document (1)
289
+
290
+ (({<<-})) の代わりに (({<<~}))
291
+
292
+ expected_result = <<~SQUIGGLY_HEREDOC
293
+ This would contain specially formatted text.
294
+
295
+ That might span many lines
296
+ SQUIGGLY_HEREDOC
297
+
298
+ = indented here document (2)
299
+
300
+ 一番浅いインデントが削られる
301
+
302
+ p <<~END # => " foo\nbar\n baz\n"
303
+ foo
304
+ bar
305
+ baz
306
+ END
307
+
308
+ = indented here document (3)
309
+
310
+ 2.3.0 では (({''})) の場合にバグあり
311
+
312
+ p <<~'END' # => "foo\nbar\nbaz\n"
313
+ foo
314
+ bar
315
+ baz
316
+ END
317
+
318
+ = (({Array#bsearch_index}))
319
+
320
+ (({Array#bsearch})) (要素を返す) のインデックスを返すバージョン
321
+
322
+ = (({Comparable#==})) no longer rescues exceptions
323
+
324
+ $ cat /tmp/a.rb
325
+ class C;
326
+ include Comparable
327
+ def <=>(o)
328
+ raise 'stop!'
329
+ end
330
+ end
331
+ p C.new == C.new
332
+ $ ruby -v -W0 /tmp/a.rb
333
+ ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-darwin14]
334
+ false
335
+ % ruby -v -W0 /tmp/a.rb
336
+ ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin14]
337
+ /tmp/a.rb:4:in `<=>': stop! (RuntimeError)
338
+ from /tmp/a.rb:7:in `=='
339
+ from /tmp/a.rb:7:in `<main>'
340
+
341
+ = new Encoding::IBM037 (alias ebcdic-cp-us; dummy)
342
+
343
+ * EBCDIC は「主にIBM系のメインフレームやオフィスコンピュータなどで使用されている」(Wikipedia より)
344
+ * ASCII とは非互換なので dummy
345
+
346
+ = (({grep_v})) (1)
347
+
348
+ * (({Enumerable#grep_v})), (({Enumerator::Lazy#grep_v}))
349
+ * in((*v*))erse version of (({#grep}))
350
+
351
+ = (({grep_v})) (2)
352
+
353
+ %w(aaa bbb ccc).grep(/b/) #=> ["bbb"]
354
+ %w(aaa bbb ccc).grep_v(/b/) #=> ["aaa", "ccc"]
355
+
356
+ = (({Enumerable#chunk_while})) (1)
357
+
358
+ * (({Enumerable#slice_when})) の仲間
359
+
360
+ = (({Enumerable#chunk_while})) (2)
361
+
362
+ # 1ずつ増加する部分配列ごとに分ける。
363
+ [1,2,4,9,10,11,12,15,16,19,20,21]
364
+ .chunk_while{|i, j| i + 1 == j}.to_a
365
+ # => [[1, 2], [4], [9, 10, 11, 12], [15, 16], [19, 20, 21]]
366
+
367
+ # ソート済の配列を近い値(差が6以内)の部分配列ごとに分ける。
368
+ [3, 11, 14, 25, 28, 29, 29, 41, 55, 57]
369
+ .chunk_while{|i, j| j - i <= 6}.to_a
370
+ # => [[3], [11, 14], [25, 28, 29, 29], [41], [55, 57]]
371
+
372
+ # 増加のみの部分配列ごとに分ける。
373
+ [0, 9, 2, 2, 3, 2, 7, 5, 9, 5]
374
+ .chunk_while{|i, j| i <= j}.to_a
375
+ # => [[0, 9], [2, 2, 3], [2, 7], [5, 9], [5]]
376
+
377
+ # 隣り合う偶数同士、奇数同士の部分配列ごとに分ける。
378
+ [7, 5, 9, 2, 0, 7, 9, 4, 2, 0]
379
+ .chunk_while{|i, j| i.even? == j.even?}.to_a
380
+ # => [[7, 5, 9], [2, 0], [7, 9], [4, 2, 0]]
381
+
382
+ = (({Hash#fetch_values}))
383
+
384
+ キーが存在しない時の挙動が (({Hash#fetch})) と同様の (({Hash#values_at}))
385
+
386
+ h = { "cat" => "feline", "dog" => "canine", "cow" => "bovine" }
387
+
388
+ h.fetch_values("cow", "cat") #=> ["bovine", "feline"]
389
+ h.fetch_values("cow", "bird") # raises KeyError
390
+ h.fetch_values("cow", "bird") { |k| k.upcase } #=> ["bovine", "BIRD"]
391
+
392
+ = (({Hash#<=})), (({Hash#<})), (({Hash#>=})), (({Hash#>})) (1)
393
+
394
+ 包含関係を調べられる
395
+
396
+ h1 = {a:1, b:2}
397
+ h2 = {a:1, b:2, c:3}
398
+ p h1 <= h2 # => true
399
+ p h2 <= h1 # => false
400
+
401
+ = (({Hash#<=})), (({Hash#<})), (({Hash#>=})), (({Hash#>})) (2)
402
+
403
+ 全順序ではないので (({Hash#<=>})) は定義されていない
404
+
405
+ h1 = {a:1}
406
+ h2 = {a:2}
407
+ p h1 <= h2 # => false
408
+ p h2 <= h1 # => false
409
+
410
+ = (({Hash#to_proc}))
411
+
412
+ (({Hash})) を (({map})) などでそのまま使えるようになる
413
+
414
+ h = {
415
+ 1 => 10,
416
+ 2 => 20,
417
+ 3 => 30,
418
+ }
419
+
420
+ [1, 2, 3].map(&h) # => [10, 20, 30]
421
+
422
+ = (({Module#deprecate_constant}))
423
+
424
+ deprecated だが互換性のために残している定数を参照した時に警告を表示する機能
425
+
426
+ % cat foo.rb
427
+ module Foo
428
+ BAR = :bar
429
+ deprecate_constant :BAR
430
+ end
431
+ Foo::BAR
432
+ % ruby foo.rb
433
+ foo.rb:5: warning: constant Foo::BAR is deprecated
434
+
435
+ = (({Numeric#positive?})), (({Numeric#negative?}))
436
+
437
+ 正の数か負の数かを調べるメソッド
438
+
439
+ bunch_of_numbers.select(&:positive?)
440
+
441
+ = (({Queue#close}))
442
+
443
+ close すると無限の nil を push したかのような動作をする
444
+
445
+ # https://bugs.ruby-lang.org/issues/10600#note-13
446
+ # 複数スレッドを同時に開始する例
447
+ synq = Queue.new
448
+ 10.times{
449
+ Thread.new{
450
+ synq.pop #=> nil from closed Queue.
451
+ # do something
452
+ }
453
+ }
454
+
455
+ # do something initialization
456
+ synq.close
457
+
458
+ = (({Regexp}))/(({String}))
459
+
460
+ * Unicode のバージョンが 7.0.0 から 8.0.0 に上がった
461
+
462
+ = (({String.new})) に (({encoding})) キーワード引数
463
+
464
+ frozen-string-literal を考慮すると
465
+
466
+ str = "\xA4\xA2".dup.force_encoding('euc-jp')
467
+
468
+ となるのが
469
+
470
+ str = String.new("\xA4\xA2", encoding: 'euc-jp')
471
+
472
+ とかける
473
+
474
+ = (({Thread#name})), (({Thread#name=}))
475
+
476
+ * (({Thread})) の名前の取得・設定を行うAPIが追加された
477
+ * デバッグなどで識別したい時に便利
478
+
479
+ = (({inspect})) での例外抑制
480
+
481
+ * (({inspect})) で (({Encoding::CompatibilityError})) が発生する代わりに自動でエスケープされるようになった
482
+ * ((<Feature #11801 rb_inspect shouldn't raise error even if calling inspect returns non compatible strings|URL:https://bugs.ruby-lang.org/issues/11801>))
483
+
484
+ = (({close})) 済み (({IO})) の (({IO#close})) の例外抑制
485
+
486
+ f.close if !f.closed?
487
+
488
+ と書いていたのが
489
+
490
+ f.close
491
+
492
+ だけでよくなった
493
+
494
+ = (({Object#timeout})) が deprecated
495
+
496
+ * (({Object#timeout})) が呼ばれた時に deprecated だと警告が出るようになった
497
+
498
+ = (({Net::FTP}))
499
+
500
+ * passive mode がデフォルトになった
501
+ * (({Net::FTP.default_passive=})) で設定可能
502
+
503
+ = (({Net::HTTP}))
504
+
505
+ * (({Net::HTTP#open_timeout})) のデフォルトが (({nil})) から (({60})) (秒) に変わった
506
+
507
+ = (({Net::Telnet}))
508
+
509
+ * net-telnet gem として外だしされた
510
+ * https://github.com/ruby/net-telnet
511
+ * bundled gem として配布には含まれる
512
+
513
+ = rake
514
+
515
+ * rake も ruby のレポジトリに直接含まれるのはやめて bundled gem になった
516
+
517
+ = (({$SAFE}))
518
+
519
+ * (({$SAFE=2})) と (({$SAFE=3})) が obsolete になった
520
+ * (({$SAFE})) を 2 以上に設定しようとすると (({ArgumentError}))
521
+
522
+ = (({CGI.escapeHTML})) 高速化
523
+
524
+ * (({CGI.escapeHTML})) が C 拡張で高速化された
525
+ * https://github.com/ruby/ruby/pull/1164
526
+ * 最大約7倍
527
+ * ワーストケースでも約3倍
528
+
529
+ = まとめ
530
+
531
+ * いろんな新機能が追加された
532
+ * いろいろと高速化された
533
+ * 紹介しきれなかったものは NEWS 参照
534
+ * ((<(('https://github.com/ruby/ruby/blob/v2_3_0/NEWS'))|URL:https://github.com/ruby/ruby/blob/v2_3_0/NEWS>))
metadata ADDED
@@ -0,0 +1,63 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rabbit-slide-znz-rubykansai70-ruby230
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Kazuhiro NISHIYAMA
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-01-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rabbit
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.0.2
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 2.0.2
27
+ description: 第70回 Ruby関西 勉強会で Ruby 2.3.0 の新機能の紹介などの話をしたときのスライドです。
28
+ email:
29
+ - zn@mbf.nifty.com
30
+ executables: []
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - ".rabbit"
35
+ - README.md
36
+ - Rakefile
37
+ - config.yaml
38
+ - pdf/rubykansai70-ruby230-rubykansai70-ruby230.pdf
39
+ - rubykansai70-ruby230.rab
40
+ homepage: http://slide.rabbit-shocker.org/authors/znz/rubykansai70-ruby230/
41
+ licenses: []
42
+ metadata: {}
43
+ post_install_message:
44
+ rdoc_options: []
45
+ require_paths:
46
+ - lib
47
+ required_ruby_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ requirements: []
58
+ rubyforge_project:
59
+ rubygems_version: 2.5.1
60
+ signing_key:
61
+ specification_version: 4
62
+ summary: Ruby 2.3.0 の新機能について
63
+ test_files: []