rabbit-slide-znz-rubykaigi2014 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.rabbit +1 -0
- data/README.md +4 -0
- data/README.rd +24 -0
- data/Rakefile +17 -0
- data/config.yaml +20 -0
- data/pdf/rubykaigi2014-ruby-removed-features.pdf +0 -0
- data/ruby-removed-features.rab +350 -0
- metadata +65 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ebcad87ff203a3a3897a4eb3c0350dfb3a95fcde
|
4
|
+
data.tar.gz: 574c12725d48ca0243b3cb0be6b6a66ee16bd291
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5bbb67f883b111f3fc06d99a33fb4fcd0e182baa16585d82ac930f32d56639979f0ddeacfb49d869f940f992257a61a6a85cebb0c56d547cfd04fb780d2fa61f
|
7
|
+
data.tar.gz: a86d4d45d7aeb18db77534d1be27242a20d11101a769abf7747313983ad002940fc6893cc97dbcb99d5fae4fcde6430e50678a6e0ed36145a625987d84dc6b13
|
data/.rabbit
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-removed-features.rab
|
data/README.md
ADDED
data/README.rd
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
= Archaeology of Ruby: Removed Features Ruby (考古学 消された機能編)
|
2
|
+
|
3
|
+
RubyKaigi 2014 での発表資料です。
|
4
|
+
|
5
|
+
== 作者向け
|
6
|
+
|
7
|
+
=== 表示
|
8
|
+
|
9
|
+
rake
|
10
|
+
|
11
|
+
=== 公開
|
12
|
+
|
13
|
+
rake publish
|
14
|
+
|
15
|
+
== 閲覧者向け
|
16
|
+
|
17
|
+
=== インストール
|
18
|
+
|
19
|
+
gem install rabbit-slide-znz-rubykaigi2014
|
20
|
+
|
21
|
+
=== 表示
|
22
|
+
|
23
|
+
rabbit rabbit-slide-znz-rubykaigi2014.gem
|
24
|
+
|
data/Rakefile
ADDED
@@ -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
|
+
# task.spec.files += Dir.glob("doc/**/*.*")
|
9
|
+
# task.spec.files -= Dir.glob("private/**/*.*")
|
10
|
+
# task.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
|
data/config.yaml
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
---
|
2
|
+
id: rubykaigi2014
|
3
|
+
base_name: ruby-removed-features
|
4
|
+
tags:
|
5
|
+
- ruby
|
6
|
+
presentation_date:
|
7
|
+
version: 0.0.1
|
8
|
+
licenses: []
|
9
|
+
slideshare_id:
|
10
|
+
speaker_deck_id:
|
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
|
Binary file
|
@@ -0,0 +1,350 @@
|
|
1
|
+
= Ruby 考古学 \n 消された機能編
|
2
|
+
: subtitle
|
3
|
+
Archaeology of Ruby: \n Removed Features
|
4
|
+
: author
|
5
|
+
Kazuhiro NISHIYAMA
|
6
|
+
# : institution
|
7
|
+
# 所属
|
8
|
+
: content-source
|
9
|
+
RubyKaigi2014
|
10
|
+
: date
|
11
|
+
2014/09/19
|
12
|
+
: allotted-time
|
13
|
+
30m
|
14
|
+
: theme
|
15
|
+
default
|
16
|
+
|
17
|
+
= Self introduction
|
18
|
+
|
19
|
+
* one of Ruby Committers
|
20
|
+
* Mr. fix typo (by Chikanaga)
|
21
|
+
* I use Ruby since 1.4
|
22
|
+
|
23
|
+
== note
|
24
|
+
|
25
|
+
まずは自己紹介からです。
|
26
|
+
C Ruby のコミッターの一人です。
|
27
|
+
昨日の朝一のちかながさんの発表の CRuby Committers Who's who in 2014 では Mr. fix typo と紹介されていました。
|
28
|
+
|
29
|
+
ruby を使い始めた時はバージョン 1.4 系でした。
|
30
|
+
そのバージョンより後で削除された機能で気になったものについての話をします。
|
31
|
+
|
32
|
+
= Agenda
|
33
|
+
|
34
|
+
* ((*リリースに入った後、消された機能*)) \n
|
35
|
+
(('sub:Some features removed after release'))
|
36
|
+
* 開発版のみに入っていた機能 \n
|
37
|
+
(('sub:Some features only in development branch'))
|
38
|
+
|
39
|
+
== note
|
40
|
+
|
41
|
+
まず過去のリリースに入っていたのに、消された機能の話です。
|
42
|
+
|
43
|
+
= Safe Level
|
44
|
+
|
45
|
+
* (({$SAFE=4})) is obsolete since 2.1.0
|
46
|
+
* 不完全な Sand Box
|
47
|
+
* Safe Level 自体の削除の話も何度かあった
|
48
|
+
|
49
|
+
== note
|
50
|
+
|
51
|
+
最近のリリースで削除された大きな機能として、
|
52
|
+
safe level 4 があります。
|
53
|
+
|
54
|
+
元々 Ruby の sand box 機能として safe level は不完全で、
|
55
|
+
safe level 自体の削除の提案がされたことも何度かありました。
|
56
|
+
|
57
|
+
(参考: https://bugs.ruby-lang.org/issues/8468#note-15 )
|
58
|
+
|
59
|
+
= Safe level
|
60
|
+
|
61
|
+
* ((<Feature #8468 Remove $SAFE|URL:https://bugs.ruby-lang.org/issues/8468>))
|
62
|
+
* Matz agreed at GitHub Tokyo drinkup (on 2013)
|
63
|
+
* tDiary, which is the only application using $SAFE == 4, also agreed
|
64
|
+
* (({$SAFE < 4})) is a fail-safe feature to detect bugs of applications
|
65
|
+
|
66
|
+
== note
|
67
|
+
そういう経緯もあり、2013 年の GitHub Tokyo drinkup で削除が合意されたようです。
|
68
|
+
(参考: https://bugs.ruby-lang.org/issues/8468 )
|
69
|
+
|
70
|
+
その場で safe level 4 を使っていた tDiary の開発者の賛成もあったようです。
|
71
|
+
|
72
|
+
その後の redmine 上での議論では、
|
73
|
+
JRuby では長い間 safe level をサポートしていなかったが、特に指摘されたことはなかったとか、
|
74
|
+
ActiveScriptRuby は safe level 3 を使っているなどの意見があったため、
|
75
|
+
4 未満の safe level はセキュリティ機能としてではなく、
|
76
|
+
バグ発見用のフェイルセーフ機能として残ることになったようです。
|
77
|
+
|
78
|
+
詳しい経緯は 8468 番の issue を見てください。
|
79
|
+
|
80
|
+
= Safe Level
|
81
|
+
|
82
|
+
* (({$SAFE=4})) is obsolete since 2.1.0
|
83
|
+
|
84
|
+
(('sub:raise ArgumentError'))
|
85
|
+
* (({untrust})) since 1.9.1
|
86
|
+
* (({untrust})) is deprecated since 2.1.0
|
87
|
+
|
88
|
+
(('sub:its behavior is same as taint'))
|
89
|
+
|
90
|
+
== note
|
91
|
+
|
92
|
+
その結果、 2.1.0 では safe level の 4 は廃止されて、
|
93
|
+
4 を設定しようとすると ArgumentError が発生するようになりました。
|
94
|
+
|
95
|
+
その前の 1.9.1 で untrust が導入されて
|
96
|
+
少しセキュリティ対策が強化されたこともあったのですが、
|
97
|
+
活用されることなく 2.1.0 では deprecated になり、
|
98
|
+
taint と同じ動作になってしまいました。
|
99
|
+
|
100
|
+
= (({'.'})) from (({$LOAD_PATH}))
|
101
|
+
|
102
|
+
* security reason
|
103
|
+
* same as (({PATH})) does not contain (({'.'}))
|
104
|
+
since 1.9.2
|
105
|
+
* use (({require_relative})) instead
|
106
|
+
== note
|
107
|
+
|
108
|
+
セキュリティ関係といえば、
|
109
|
+
セキュリティ上の理由で '.' (ドット) が (('$LOAD_PATH')) からひっそり取り除かれました。
|
110
|
+
理由としては実行コマンドの検索パスがカレントディレクトリを含んでいないのと同じ理由です。
|
111
|
+
|
112
|
+
代わりの機能として require_relative が使えます。
|
113
|
+
|
114
|
+
= (({$KCODE}))
|
115
|
+
|
116
|
+
* from (({$KCODE})) to Encoding (m17n)
|
117
|
+
* (({$KCODE})) #=> nil # warning: variable $KCODE is no longer effective
|
118
|
+
* (({$KCODE=})) # warning: variable $KCODE is no longer effective; ignored
|
119
|
+
|
120
|
+
== note
|
121
|
+
|
122
|
+
ruby 1.9 の多言語化対応の影響で $KCODE の代わりに Encoding を使うようになりました。
|
123
|
+
そして $KCODE の参照は常に nil がかえってくるようになり、
|
124
|
+
$KCODE への代入は無視されるようになりました。
|
125
|
+
|
126
|
+
= Regexp options
|
127
|
+
|
128
|
+
* Regexp literal options (remains) : (({/n /e /s /u}))
|
129
|
+
|
130
|
+
//n.encoding #=> #<Encoding:US-ASCII>
|
131
|
+
//e.encoding #=> #<Encoding:EUC-JP>
|
132
|
+
//s.encoding #=> #<Encoding:Windows-31J>
|
133
|
+
//u.encoding #=> #<Encoding:UTF-8>
|
134
|
+
|
135
|
+
== note
|
136
|
+
|
137
|
+
一方 $KCODE 関連だった正規表現リテラルの n e s u オプションはまだ残っています。
|
138
|
+
互換性のために残っているので、そのうちなくなるかもしれません。
|
139
|
+
そして、もしかすると代わりに a オプションが増える可能性があるかもしれません。
|
140
|
+
|
141
|
+
= (({$=})) (ignore case)
|
142
|
+
|
143
|
+
* (({$= = true}))
|
144
|
+
* ruby 1.8.7: warning: modifying $= is deprecated
|
145
|
+
* ruby 1.9.3: warning: variable $= is no longer effective; ignored
|
146
|
+
|
147
|
+
== note
|
148
|
+
|
149
|
+
もう一つ、グローバル変数と言えば $= を true にすると
|
150
|
+
ハッシュのキーの文字列などで大文字小文字を無視することが
|
151
|
+
出来るという機能がありました。
|
152
|
+
|
153
|
+
使ったことがある人はほとんどいないと思いますが、
|
154
|
+
1.8 で影響範囲が限定的になり、
|
155
|
+
1.9 でそういう機能はなくなりました。
|
156
|
+
|
157
|
+
ドキュメントに残っていることがありますが、もう使えないので、
|
158
|
+
見かけても無視してください。
|
159
|
+
|
160
|
+
= (({$deferr}))
|
161
|
+
(('sub:between 1.6.7 and 1.8.0'))
|
162
|
+
|
163
|
+
* (({$deferr})) → (({$stderr}))
|
164
|
+
* (({$defout})) → (({$stdout}))
|
165
|
+
* (({$stderr=})) → (({STDERR.reopen}))
|
166
|
+
* (({$stdin=})) → (({STDIN.reopen}))
|
167
|
+
* (({$stdout=})) → (({STDOUT.reopen}))
|
168
|
+
|
169
|
+
== note
|
170
|
+
|
171
|
+
さらに昔の話になりますが、
|
172
|
+
ruby 1.7 の頃には $defout や $deferr というグローバル変数があって、
|
173
|
+
子プロセスに影響しない出力先変更に使われていましたが、
|
174
|
+
今は $stdout と $stderr に統一されて、
|
175
|
+
子プロセスに影響するリダイレクトは reopen を使うようになりわかりやすくなりました。
|
176
|
+
|
177
|
+
今は子プロセスに影響しないリダイレクトは $stdout や $stderr への代入で、
|
178
|
+
子プロセスに影響するリダイレクトは reopen を使うということを覚えておけば良いと思います。
|
179
|
+
|
180
|
+
さらに言えば、今は子プロセスを起動するときにリダイレクトなどを柔軟に指定できる
|
181
|
+
Process.spawn などのメソッドを使う方がおすすめです。
|
182
|
+
|
183
|
+
= (({if cond:}))
|
184
|
+
(('sub:until 1.8'))
|
185
|
+
|
186
|
+
if true:
|
187
|
+
p true
|
188
|
+
end
|
189
|
+
|
190
|
+
((':')) をつけられる隠し機能の削除
|
191
|
+
|
192
|
+
== note
|
193
|
+
|
194
|
+
ruby 1.8 までは if の条件式の後ろなどに ((':')) を付けられるという隠し機能がありましたが、
|
195
|
+
1.9 では取り除かれました。
|
196
|
+
|
197
|
+
隠し機能のはずなのになぜか使われていて、修正が必要だった gem などもあったようです。
|
198
|
+
|
199
|
+
= (({File.exists?}))
|
200
|
+
|
201
|
+
* (({File.exist?})) (recommend)
|
202
|
+
* (({File.exists?})) (deprecated)
|
203
|
+
|
204
|
+
Ruby 本体のメソッド名は出来るだけ三単現のsを付けない
|
205
|
+
|
206
|
+
File.exists? IO::NULL
|
207
|
+
# warning: File.exists? is a deprecated
|
208
|
+
# name, use File.exist? instead
|
209
|
+
|
210
|
+
== note
|
211
|
+
|
212
|
+
Ruby 本体のメソッド名は出来るだけ三単現のsを付けないというルールがあるので、
|
213
|
+
File.exists? は以前警告が出ていたのですが、
|
214
|
+
何かのミスだったのか警告が一度出なくなって、
|
215
|
+
また出るようになったという経緯があります。
|
216
|
+
|
217
|
+
そういう経緯もあってメソッド自体はまだ残っていますが、
|
218
|
+
警告も出るようになっているので、
|
219
|
+
そのうち消されると思います。
|
220
|
+
|
221
|
+
= Agenda
|
222
|
+
|
223
|
+
* リリースに入った後、消された機能 \n
|
224
|
+
(('sub:Some features removed after release'))
|
225
|
+
* ((*開発版のみに入っていた機能*))\n
|
226
|
+
(('sub:Some features only in development branch'))
|
227
|
+
|
228
|
+
== note
|
229
|
+
|
230
|
+
続いて開発版のみに入っていた機能についての話をします。
|
231
|
+
|
232
|
+
= Symbol < String in 2006 (1.9.0-dev)
|
233
|
+
|
234
|
+
* Symbol が String を継承していた時期があった
|
235
|
+
* Symbol < Stringも止める。caseとかでのバグをたくさん生んでしまう
|
236
|
+
|
237
|
+
(('sub:http://www.rubyist.net/~matz/20061107.html#p03'))
|
238
|
+
|
239
|
+
== note
|
240
|
+
|
241
|
+
ruby 1.9 の開発版の一時期に Symbol が String を継承するように変更されていた時期がありましたが、
|
242
|
+
問題が多かったため、元通り継承関係のないクラス階層に戻されました。
|
243
|
+
matz 日記には理由として「caseとかでのバグをたくさん生んでしまう」と書かれていました。
|
244
|
+
|
245
|
+
= Symbol < String (cont.)
|
246
|
+
|
247
|
+
ruby 1.8.7:
|
248
|
+
// =~ :s
|
249
|
+
#~> TypeError: can't convert Symbol into String
|
250
|
+
methods[0].class #=> String
|
251
|
+
|
252
|
+
ruby 1.9.3:
|
253
|
+
// =~ :s #=> 0
|
254
|
+
methods[0].class #=> Symbol
|
255
|
+
|
256
|
+
* 継承は止めても String に似た扱いは入った。
|
257
|
+
|
258
|
+
== note
|
259
|
+
|
260
|
+
その影響もあり Symbol に String っぽい挙動が残っています。
|
261
|
+
|
262
|
+
その後 methods メソッドのように返り値が String から Symbol に変わったなどの影響もあり、
|
263
|
+
継承関係はなくなったものの Symbol を String に似た扱いにするメソッドが ruby 1.8 までに比べると
|
264
|
+
ruby 1.9 以降では多くなっています。
|
265
|
+
|
266
|
+
= (({__send}))
|
267
|
+
(('sub:between 1.8 and 1.9'))
|
268
|
+
|
269
|
+
* (({__send__})) cannot call private methods
|
270
|
+
* (({__send})), (({__send!}))
|
271
|
+
* (({public_send})) since 1.9.1
|
272
|
+
|
273
|
+
private メソッド呼び出し用途が多く影響範囲が広いため元の挙動に
|
274
|
+
|
275
|
+
== note
|
276
|
+
|
277
|
+
ruby 1.9 の開発版の途中で send が今の public_send 相当の private メソッドは呼べないという変更が入り、
|
278
|
+
(({__send})) と (({__send!})) というメソッドが導入されたことがあったのですが、
|
279
|
+
アクセス制限を回避して private メソッドを呼び出すために send を使っていることが多く、
|
280
|
+
影響が大きすぎたため、元に戻されて (({public_send})) というメソッドが導入されました。
|
281
|
+
|
282
|
+
= Real multi-value (to_splat)
|
283
|
+
(('sub: 1.9.x'))
|
284
|
+
|
285
|
+
* (({to_splat})) (!= (({to_ary}))) (!= (({to_a})))
|
286
|
+
* svalue, avalue, mvalue
|
287
|
+
* e.g. (({a, b = mvalue}))
|
288
|
+
|
289
|
+
== note
|
290
|
+
|
291
|
+
これも ruby 1.9 の開発版での話なのですが、
|
292
|
+
2006年頃に真の多値を導入しようとしていた時期があり、
|
293
|
+
to_ary とは別に to_splat というメソッドが呼ばれるようになっていた時期があったのですが、
|
294
|
+
リリースされることなく to_splat などは消えました。
|
295
|
+
|
296
|
+
リリースされずに消えたので、確認できないので間違っているかもしれませんが、
|
297
|
+
多重代入のときなどに to_a や to_ary の代わりに to_splat を呼ぶようになっていたのだと思います。
|
298
|
+
|
299
|
+
= Symbol.find in 2.2.0-dev
|
300
|
+
|
301
|
+
* Symbol.find(str) \n -> symbol or nil
|
302
|
+
* Return the related symbol if the symbol already exists.
|
303
|
+
* Return nil if not.
|
304
|
+
* revision 47543
|
305
|
+
* Removed because of Symbol GC
|
306
|
+
* If you still want this, request again on Redmine.
|
307
|
+
|
308
|
+
== note
|
309
|
+
|
310
|
+
昨日のなりさんの Symbol GC の発表で話があったように、
|
311
|
+
ruby 2.1 までは Symbol は GC の対象ではなかったため、
|
312
|
+
ruby 2.2 の開発版で Symbol が既に存在するかどうか調べるメソッドが追加されました。
|
313
|
+
|
314
|
+
しかし、 2.2.0 で Symbol GC が導入されたため、
|
315
|
+
リリースに入ることなく削除されました。
|
316
|
+
|
317
|
+
それでも必要だと思ったら、redmine で再度リクエストしてくださいとコミットログに書いていました。
|
318
|
+
|
319
|
+
= statfs in 2.2.0-dev
|
320
|
+
|
321
|
+
* (({IO#statfs})) and (({File::Statfs}))
|
322
|
+
* https://bugs.ruby-lang.org/issues/9772
|
323
|
+
* (({statfs.f_type})) for tests
|
324
|
+
* Reject at ((<DevelopersMeeting20140517Japan|URL:https://bugs.ruby-lang.org/projects/ruby/wiki/DevelopersMeeting20140517Japan>))
|
325
|
+
|
326
|
+
(('sub:「Matz: 色々込み入ってるので core には入れないで test 配下へ. 欲しいということがあったら gem にしてください.」'))
|
327
|
+
|
328
|
+
== note
|
329
|
+
|
330
|
+
次に ruby 2.2 の開発版にのみ存在した statfs の話です。
|
331
|
+
statfs.f_type がテストに必要ということで、とりあえず追加されて、
|
332
|
+
各種 OS 対応など、みんなで変更していたのですが、5月17日の開発者会議で
|
333
|
+
「色々込み入ってるので core には入れないで test 配下へ. 欲しいということがあったら gem にしてください.」
|
334
|
+
という理由で却下され、最低限の機能だけ test 配下に入り、一般に使える機能としては入りませんでした。
|
335
|
+
|
336
|
+
= Conclusion
|
337
|
+
|
338
|
+
* Some features only in development branch
|
339
|
+
* Some features cannot introduce because of compatibility
|
340
|
+
|
341
|
+
== note
|
342
|
+
|
343
|
+
最後にまとめです。
|
344
|
+
|
345
|
+
いくつかの機能は開発版だけで消えてしまっています。
|
346
|
+
またいくつかの機能は互換性のために入らなかったり他の機能になったりしています。
|
347
|
+
|
348
|
+
入らなかったり削られたのがなぜなのかを考えることで、
|
349
|
+
今後の新機能の提案に生かしていただければ、
|
350
|
+
ということで話を終わります。
|
metadata
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rabbit-slide-znz-rubykaigi2014
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kazuhiro NISHIYAMA
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-09-19 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: |
|
28
|
+
RubyKaigi 2014 での発表資料です。
|
29
|
+
email:
|
30
|
+
- zn@mbf.nifty.com
|
31
|
+
executables: []
|
32
|
+
extensions: []
|
33
|
+
extra_rdoc_files: []
|
34
|
+
files:
|
35
|
+
- ".rabbit"
|
36
|
+
- README.md
|
37
|
+
- README.rd
|
38
|
+
- Rakefile
|
39
|
+
- config.yaml
|
40
|
+
- pdf/rubykaigi2014-ruby-removed-features.pdf
|
41
|
+
- ruby-removed-features.rab
|
42
|
+
homepage: http://slide.rabbit-shocker.org/authors/znz/rubykaigi2014/
|
43
|
+
licenses: []
|
44
|
+
metadata: {}
|
45
|
+
post_install_message:
|
46
|
+
rdoc_options: []
|
47
|
+
require_paths:
|
48
|
+
- lib
|
49
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
version: '0'
|
59
|
+
requirements: []
|
60
|
+
rubyforge_project:
|
61
|
+
rubygems_version: 2.2.2
|
62
|
+
signing_key:
|
63
|
+
specification_version: 4
|
64
|
+
summary: rubykaigi2014-ruby-removed-features ===================================
|
65
|
+
test_files: []
|