rabbit-slide-aycabta-rubykaigi-2018 2018.6.2.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.
Files changed (45) hide show
  1. checksums.yaml +7 -0
  2. data/.rabbit +1 -0
  3. data/README.rd +6 -0
  4. data/Rakefile +16 -0
  5. data/asakusarb.jpg +0 -0
  6. data/asakusarb.png +0 -0
  7. data/bonfire.jpg +0 -0
  8. data/config.yaml +15 -0
  9. data/gorge_0.jpg +0 -0
  10. data/gorge_1.jpg +0 -0
  11. data/irb-reboot.rab +739 -0
  12. data/locmap.gif +0 -0
  13. data/locmap_venue.png +0 -0
  14. data/pdf/rubykaigi-2018-irb-reboot.pdf +0 -0
  15. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/bindings-by-gobject-introspection.svg +499 -0
  16. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/bindings-by-swig.svg +273 -0
  17. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/cairo-gc-trigger.pdf +0 -0
  18. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/cairo-no-gc-trigger.pdf +0 -0
  19. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/clear-code-rubykaigi-2018-silver-sponsor.png +0 -0
  20. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/code-party.png +0 -0
  21. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/csv-arrow-parquet.pdf +0 -0
  22. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/csv-arrow.pdf +0 -0
  23. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/jekyll-task-i18n-red-data-tools.gif +0 -0
  24. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/pdf-clickable.png +0 -0
  25. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/rabbit-slide-show.png +0 -0
  26. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/ruby-gtk3-with-ruby-gi.svg +411 -0
  27. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/ruby-gtk3-without-ruby-gi.svg +313 -0
  28. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/rubykaigi-2017-extension-by-cpp-title.pdf +1853 -4
  29. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/rurema-search.png +0 -0
  30. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/shocker.jpeg +0 -0
  31. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare-fast.png +0 -0
  32. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare-good.png +0 -0
  33. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare-hare.png +0 -0
  34. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare-raw.png +0 -0
  35. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare-slow.png +0 -0
  36. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare-tortoise.png +0 -0
  37. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare.gif +0 -0
  38. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/images/the-tortoise-and-the-hare.png +0 -0
  39. data/rabbit-slide-kou-rubykaigi-2018-2018.6.1.3/pdf/rubykaigi-2018-my-way-with-ruby.pdf +0 -0
  40. data/space-pirates-logo.svg +51 -0
  41. data/theme.rb +77 -0
  42. data/usa1.png +0 -0
  43. data/waterfall_0.jpg +0 -0
  44. data/waterfall_1.jpg +0 -0
  45. metadata +101 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 5228b727f9e4e25a11e83df75ed476eb9d2cc5687538a71574577e42c72bc931
4
+ data.tar.gz: 5321d8bee33e4e3a78370a9edd118301c38b2291fd07d3da031a1fa78b75a2b5
5
+ SHA512:
6
+ metadata.gz: 613eeb0b65cce0c5ddacd51c2f553b97d2ea278b57893c4f8ecb29c3e22ac28394fc88de570c6dc7addee9934f81f9cb82211f6ae7bc3e3afa4ac254d903b2d8
7
+ data.tar.gz: d94553ed44ff44830cb15d76e3f9ea5db40ca576f1a61194413eb922340bd43ab0f07cd584866914158d184f637e158a9a29695ab2cfb2654f841125ee5a515b
data/.rabbit ADDED
@@ -0,0 +1 @@
1
+ irb-reboot.rab
@@ -0,0 +1,6 @@
1
+ = IRB Reboot: Modernize Implementation and Features
2
+
3
+ == License
4
+
5
+ CC BY-SA 4.0
6
+
@@ -0,0 +1,16 @@
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
+ end
11
+
12
+ desc "Tag #{spec.version}"
13
+ task :tag do
14
+ sh("git", "tag", "-a", spec.version.to_s, "-m", "Publish #{spec.version}")
15
+ sh("git", "push", "--tags")
16
+ end
Binary file
Binary file
Binary file
@@ -0,0 +1,15 @@
1
+ ---
2
+ id: rubykaigi-2018
3
+ base_name: irb-reboot
4
+ tags:
5
+ - rabbit
6
+ - rubykaigi
7
+ presentation_date: 2018-06-02
8
+ version: 2018.6.2.0
9
+ licenses:
10
+ - CC-BY-SA-4.0
11
+ author:
12
+ markup_language: :rd
13
+ name: ITOYANAGI Sakura
14
+ email: aycabta@gmail.com
15
+ rubygems_user: aycabta
Binary file
Binary file
@@ -0,0 +1,739 @@
1
+ = IRB Reboot:\nModernize Implementation and Features
2
+
3
+ :author
4
+ ITOYANAGI Sakura
5
+ :theme
6
+ .
7
+ :allotted-time
8
+ 38m
9
+ : content-source
10
+ RubyKaigi 2018
11
+
12
+ = Greeting
13
+
14
+ 1st day's morning,
15
+
16
+ it was cloudy.
17
+
18
+ = Greeting
19
+
20
+ 2nd day's morning,
21
+
22
+ it was rainy.
23
+
24
+ = Greeting
25
+
26
+ But today...
27
+
28
+ = Greeting
29
+
30
+ It's a beautiful day outside.
31
+
32
+ = Greeting
33
+
34
+ Birds are singing, flowers are blooming...
35
+
36
+ = Greeting
37
+
38
+ On days like these...
39
+
40
+ = IRB Reboot:\nModernize Implementation and Features
41
+
42
+ = Let me introduce myself
43
+
44
+ :name
45
+ ITOYANAGI Sakura
46
+ :GitHub
47
+ aycabta
48
+ :maintainer
49
+ RDoc
50
+
51
+ = Community: Asakusa.rb
52
+
53
+ # image
54
+ # src = asakusarb.jpg
55
+ # relative-height = 80
56
+ # caption = Asakusa.rb every Ruby Tuesday
57
+ # relative-padding-top = 0
58
+ # relative-padding-bottom = 0
59
+ # relative-padding-right = 0
60
+ # relative-padding-left = 0
61
+
62
+ = Company:\nSpace Pirates, LLC.
63
+
64
+ # image
65
+ # src = space-pirates-logo.svg
66
+ # relative-height = 80
67
+ # caption = Space Pirates, LLC.
68
+ # relative-padding-top = 0
69
+ # relative-padding-bottom = 0
70
+ # relative-padding-right = 0
71
+ # relative-padding-left = 0
72
+
73
+ = Hobby: Climbing
74
+
75
+ I planed to climb Mt. Zao, it's the highest mountain in Miyagi. The highest mountain is the nearest place to space. It fits for Space Pirates.
76
+
77
+ = Hobby: Climbing
78
+
79
+ But it's so far from this venue, so I went to ((*gorge*)) near here.
80
+
81
+ = Hobby: Climbing
82
+
83
+ The ((*gorge*)) means narrow river between escarpments.
84
+
85
+ = Hobby: Climbing
86
+
87
+ The Tohoku University official web site provides digging points map for fossils.
88
+
89
+ = Hobby: Climbing
90
+
91
+ # image
92
+ # src = locmap.gif
93
+ # relative-height = 75
94
+ # caption = http://www.museum.tohoku.ac.jp/exhibition_info/mini/fosss/locality/locmap.html
95
+ # relative-padding-top = 0
96
+ # relative-padding-bottom = 0
97
+ # relative-padding-right = 0
98
+ # relative-padding-left = 0
99
+
100
+ = Hobby: Climbing
101
+
102
+ # image
103
+ # src = locmap.gif
104
+ # relative-height = 75
105
+ # caption = A dozen pink points are fossils digging points.
106
+ # relative-padding-top = 0
107
+ # relative-padding-bottom = 0
108
+ # relative-padding-right = 0
109
+ # relative-padding-left = 0
110
+
111
+ = Hobby: Climbing
112
+
113
+ # image
114
+ # src = locmap_venue.png
115
+ # relative-height = 75
116
+ # caption = This venue is hemmed in by many fossils digging points.
117
+ # relative-padding-top = 0
118
+ # relative-padding-bottom = 0
119
+ # relative-padding-right = 0
120
+ # relative-padding-left = 0
121
+
122
+ = Hobby: Climbing
123
+
124
+ I went to some digging points.
125
+
126
+ = Hobby: Climbing
127
+
128
+ # image
129
+ # src = waterfall_0.jpg
130
+ # relative-height = 90
131
+ # caption = Waterfall
132
+ # relative-padding-top = 0
133
+ # relative-padding-bottom = 0
134
+ # relative-padding-right = 0
135
+ # relative-padding-left = 0
136
+
137
+ = Hobby: Climbing
138
+
139
+ # image
140
+ # src = waterfall_1.jpg
141
+ # relative-height = 90
142
+ # caption = Waterfall
143
+ # relative-padding-top = 0
144
+ # relative-padding-bottom = 0
145
+ # relative-padding-right = 0
146
+ # relative-padding-left = 0
147
+
148
+ = Hobby: Climbing
149
+
150
+ # image
151
+ # src = gorge_0.jpg
152
+ # relative-height = 90
153
+ # caption = Gorge
154
+ # relative-padding-top = 0
155
+ # relative-padding-bottom = 0
156
+ # relative-padding-right = 0
157
+ # relative-padding-left = 0
158
+
159
+ = Hobby: Climbing
160
+
161
+ # image
162
+ # src = gorge_1.jpg
163
+ # relative-height = 90
164
+ # caption = Gorge
165
+ # relative-padding-top = 0
166
+ # relative-padding-bottom = 0
167
+ # relative-padding-right = 0
168
+ # relative-padding-left = 0
169
+
170
+ = Hobby: Climbing
171
+
172
+ I burst through from 4m to 10m many waterfalls into several kilometers gorge.
173
+
174
+ = Hobby: Climbing
175
+
176
+ # image
177
+ # src = bonfire.jpg
178
+ # relative-height = 60
179
+ # caption = I bivouacked in the gorge with a bonfire for cooking rice and miso soup.
180
+ # relative-padding-top = 0
181
+ # relative-padding-bottom = 0
182
+ # relative-padding-right = 0
183
+ # relative-padding-left = 0
184
+
185
+ = Hobby: Climbing
186
+
187
+ When I was cooking rice and miso soup early morning by bonfire I was given notice "Today, we have Asakusa.rb" so I escaped the gorge quickly and went to Asakusa.rb by bullet train and joined it and went back to Sendai by midnight highway bus,
188
+
189
+ = Hobby: Climbing
190
+
191
+ in a 24 hours period.
192
+
193
+ And joined pre-party of RubyKaigi.
194
+
195
+ = Hobby: Climbing
196
+
197
+ It was the hardest experience of this RubyKaigi.
198
+
199
+ = Hobby: Climbing
200
+
201
+ In gorge, I didn't find a fossil of the aimed whale, but found so many ((*shell beds(dense shell fossils)*)) and leaf's fossils.
202
+
203
+ = Hobby: Climbing
204
+
205
+ Shell...?
206
+
207
+ = Today's topic
208
+
209
+ IRB Reboot:\nModernize Implementation and Features
210
+
211
+ = Recent years keiju-san's
212
+
213
+ In the several past RubyKaigis, keiju-san who is godfather of Ruby and the author of IRB talked about old Ruby.
214
+
215
+ = Recent years keiju-san's
216
+
217
+ He said
218
+
219
+ ((*"The first language design of Ruby was like shell."*))
220
+
221
+ in "Ruby Archaeology"\nat RubyKaigi 2013.
222
+
223
+ = Recent years keiju-san's
224
+
225
+ After that, keiju-san carries on talking about Ruby and shell.
226
+
227
+ = Recent years keiju-san's
228
+
229
+ * 2014: Reish, an unix shell for rubyist.
230
+ * 2015: Usage and implementation of Reish which is an Unix shell for Rubyist
231
+ * 2017: Irb 20th anniversary memorial session: Reish and Irb2
232
+
233
+ = Recent years keiju-san's
234
+
235
+ Next session of Hagi(#rubykaigiC) is keiju-san's one, don't miss it.
236
+
237
+ = Today's topic
238
+
239
+ Let's back up a minute.
240
+
241
+ = Today's topic
242
+
243
+ I sent 2 patches to IRB.
244
+
245
+ * #14683 IRB with Ripper
246
+ * #14787 Show documents when completion
247
+
248
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
249
+
250
+ I talked about RDoc with Ripper,
251
+
252
+ "Ruby Parser\n
253
+ In IRB 20th Anniversary...\n
254
+ Now Let Time Resume"
255
+
256
+ at RubyKaigi 2017.
257
+
258
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
259
+
260
+ Ruby syntax is very complex.
261
+
262
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
263
+
264
+ Ruby's parser is spaghetti.
265
+
266
+ * (('wait'))Lexical analyzer is tightly coupled with parser
267
+ * (('wait'))parse.y has over 11,000 lines
268
+ * (('wait'))The overwhelming weight of ((*syntax*)) to come and the uncertainty of (({((*lex_state*))})) hung over us.
269
+
270
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
271
+
272
+ Ruby's syntax is\nvery dirty.
273
+
274
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
275
+
276
+ Ruby's syntax is\nvery 🙅(('del:dirty'))🙅.
277
+
278
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
279
+
280
+ Ruby's syntax is\nvery 🙆complex🙆.
281
+
282
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
283
+
284
+ Ruby's syntax\n😉abrades😉 parser developer.
285
+
286
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
287
+
288
+ But, the abradable syntax for parser developer\n((*is gentle for Ruby users*))\nby matz.
289
+
290
+ It's great point of Ruby.
291
+
292
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
293
+
294
+ So RDoc had very many bugs in parsing Ruby code.
295
+
296
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
297
+
298
+ I fixed so many bugs of RDoc, and replaced it fixed RDoc with Ripper version.
299
+
300
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
301
+
302
+ Ripper is one of Ruby's standard libraries of lexical analysis by parse.y.
303
+
304
+ = #14683 IRB with Ripper\n...How use RDoc use Ripper
305
+
306
+ I think that Ripper is best way for parsing Ruby code, for following latest Ruby syntax.
307
+
308
+ = #14683 IRB with Ripper
309
+
310
+ But IRB implement pure Ruby parser. It's hard to support Ruby's new syntax.
311
+
312
+ = #14683 IRB with Ripper
313
+
314
+ I thought that Ripper makes IRB's source code parsing better.
315
+
316
+ = #14683 IRB with Ripper
317
+
318
+ I discussed Ruby's REPL with matz, and matz said "I implemented mruby's REPL(mirb), learning from IRB's history".
319
+
320
+ = #14683 IRB with Ripper
321
+
322
+ REPL needs when code block will end(close) because REPL evaluates it at the timing.
323
+
324
+ = #14683 IRB with Ripper
325
+
326
+ The mirb uses
327
+
328
+ * token's (({lex_state}))
329
+ * (({parser->lstate}))
330
+ * syntax error messages
331
+ * (({parser->error_buffer[0].message}))
332
+
333
+ (The (({parser})) is a\n(({struct mrb_parser_state})))
334
+
335
+ = #14683 IRB with Ripper
336
+
337
+ In CRuby,
338
+
339
+ * token's (({lex_state}))
340
+ * (({Ripper}))
341
+ * syntax error messages
342
+ * (({RubyVM::InstructionSequence}))
343
+
344
+ = #14683 IRB with Ripper
345
+
346
+ I ported mirb's implementation to IRB.
347
+
348
+ = #14683 IRB with Ripper
349
+
350
+ IRB has some prompt features, (({PROMPT_N})), (({PROMPT_S})), and (({%NNi})).
351
+
352
+ = #14683 IRB with Ripper
353
+
354
+ * (({PROMPT_N}))
355
+ * (('wait'))Prompt when\nthe code line is continued
356
+ * (({PROMPT_S}))
357
+ * (('wait'))Prompt when\nthe code block is in literal
358
+ * (({%NNi}))
359
+ * (('wait'))Nesting level of\nthe code block
360
+
361
+ = #14683 IRB with Ripper
362
+
363
+ * (({PROMPT_N}))
364
+ * ((*Ripper*))\n
365
+ * (({PROMPT_S}))
366
+ * ((*Ripper*))\n
367
+ * (({%NNi}))
368
+ * ((*Ripper*))\n
369
+
370
+ = #14683 IRB with Ripper
371
+
372
+ In CRuby, I could resolve the parameters of prompt by Ripper.
373
+
374
+ = #14683 IRB with Ripper
375
+
376
+ The (({PROMPT_N})) is a part of "when the code block is ended" logic.
377
+
378
+ = #14683 IRB with Ripper
379
+
380
+ Inside "splitted sentence", IRB uses (({PROMPT_N})) prompt.
381
+
382
+ Like:
383
+
384
+ # enscript ruby
385
+ method(a,
386
+ b,
387
+ c)
388
+
389
+ = #14683 IRB with Ripper
390
+
391
+ The (({PROMPT_S})) is implemented by checking corresponding open and close tokens of literals.
392
+
393
+ = #14683 IRB with Ripper
394
+
395
+ Literal tokens:
396
+
397
+ * (({"}))
398
+ * (({'}))
399
+ * percent literals
400
+ * (({%q{})) and (({}}))
401
+ * (({%w{})) and (({}}))
402
+ * blah blah blah
403
+ * here-document
404
+
405
+ = #14683 IRB with Ripper
406
+
407
+ Example:
408
+
409
+ # enscript ruby
410
+ "This
411
+ is
412
+ multiline
413
+ string"
414
+
415
+ = #14683 IRB with Ripper
416
+
417
+ Example:
418
+
419
+ # enscript ruby
420
+ %w{
421
+ array
422
+ of
423
+ strings
424
+ }
425
+
426
+ = #14683 IRB with Ripper
427
+
428
+ Inside String or other literal, IRB uses (({PROMPT_S})) prompt.
429
+
430
+ = #14683 IRB with Ripper
431
+
432
+ The (({%NNi})) is implemented by count corresponding name space open and close tokens.
433
+
434
+ = #14683 IRB with Ripper
435
+
436
+ * Increase nesting level when takes open token
437
+ * (({if})), (({unless})), (({while})), (({until})), (({rescue}))
438
+ * skip post-fix version (it doesn't need (({end})))
439
+ * (({def})), (({do})), (({case})), (({for})), (({begin})), (({class})), (({module}))
440
+ * (({[})), (({{})), (({(}))
441
+
442
+ = #14683 IRB with Ripper
443
+
444
+ * Decrease down nesting level when takes open token
445
+ * (({end}))
446
+ * (({]})), (({}})), (({)}))
447
+
448
+ = #14683 IRB with Ripper
449
+
450
+ # enscript ruby
451
+ # nesting level is 0
452
+ class C # increase nesting level to 1
453
+ def m # increase nesting level to 2
454
+ if true # increase nesting level to 3
455
+ 1 if true # skip (post-fix if)
456
+ end # decrease nesting level to 2
457
+ end # decrease nesting level to 1
458
+ end # decrease nesting level to 0
459
+ # <=== evaluation!
460
+
461
+ = #14683 IRB with Ripper
462
+
463
+ Actual example by default:
464
+
465
+ # enscript ruby
466
+ ↓ %NNi (nesting level)
467
+ irb(main):001:0> def foo(a,
468
+ irb(main):002:2* b) # PROMPT_N
469
+ irb(main):003:1> <<-EOM
470
+ irb(main):004:1" Hello, # PROMPT_S
471
+ irb(main):005:1" World! # PROMPT_S
472
+ irb(main):006:1" EOM # PROMPT_S
473
+ irb(main):007:1> end
474
+ => :foo
475
+ irb(main):008:0>
476
+
477
+ = ((*#14683*)) IRB with Ripper
478
+
479
+ https://bugs.ruby-lang.org/issues/14683
480
+
481
+ = ((*#14683*)) IRB with Ripper
482
+
483
+ This removes
484
+
485
+ * lib/irb/slex.rb (283 lines)
486
+ * lib/irb/ruby-token.rb (268 lines)
487
+
488
+ = ((*#14683*)) IRB with Ripper
489
+
490
+ This simplifies
491
+
492
+ * lib/irb/ruby-lex.rb (1181 to 287 lines)
493
+
494
+ = ((*#14683*)) IRB with Ripper
495
+
496
+ Ruby parser of IRB was shrunk from total 1732 lines to 287 lines.
497
+
498
+ = ((*#14683*)) IRB with Ripper
499
+
500
+ The simple implementation is best, because Ruby syntax is complex.
501
+
502
+ The simple implementation is easy to support and keep the gentleness of Ruby.
503
+
504
+ = #14787 Show documents when completion
505
+
506
+ This is second patch for IRB.
507
+
508
+ = #14787 Show documents when completion
509
+
510
+ I talked about this Q&A time at RubyKaigi 2017.
511
+
512
+ = #14787 Show documents when completion
513
+
514
+ First, RDoc's RI binary files are installed to Ruby's directory.
515
+
516
+ = #14787 Show documents when completion
517
+
518
+ CRuby:
519
+
520
+ $ tar xvzf ruby-2.5.1.tar.gz
521
+ $ cd ruby-2.5.1
522
+ $ autoconf
523
+ $ ./configure
524
+ $ make
525
+ $ make install # <=== RDoc runs inside
526
+
527
+ = #14787 Show documents when completion
528
+
529
+ CRuby:
530
+
531
+ $ rbenv install 2.5.1 # <=== RDoc runs inside
532
+
533
+ = #14787 Show documents when completion
534
+
535
+ RubyGems:
536
+
537
+ $ gem install rails # <=== RDoc runs inside
538
+
539
+ = #14787 Show documents when completion
540
+
541
+ But many users set:
542
+
543
+ $ gem install rails --no-document
544
+
545
+ = #14787 Show documents when completion
546
+
547
+ Many blogs recommend:
548
+
549
+ $ cat ~/.gemrc
550
+ install: --no-document
551
+ update: --no-document
552
+
553
+ = #14787 Show documents when completion
554
+
555
+ Unfortunately many users don't need documents data, but I understand it.
556
+
557
+ = #14787 Show documents when completion
558
+
559
+ Because it's ((*just*)) for RI((({ri})) command).
560
+
561
+ = #14787 Show documents when completion
562
+
563
+ Usage of class:
564
+
565
+ $ ri 'String'
566
+
567
+ = #14787 Show documents when completion
568
+
569
+ Usage of instance method:
570
+
571
+ $ ri 'String#gsub'
572
+
573
+ = #14787 Show documents when completion
574
+
575
+ Usage of class method:
576
+
577
+ $ ri 'String.new'
578
+
579
+ = #14787 Show documents when completion
580
+
581
+ Bothersome.
582
+
583
+ = #14787 Show documents when completion
584
+
585
+ I wrote on the ticket:
586
+
587
+ # blockquote
588
+ # title = #14787
589
+ RDoc installs all documents to Ruby's directory by default.
590
+
591
+ = #14787 Show documents when completion
592
+
593
+ # blockquote
594
+ # title = #14787
595
+ Many users never use it because it's just for RI("ri" command).
596
+
597
+ = #14787 Show documents when completion
598
+
599
+ # blockquote
600
+ # title = #14787
601
+ I think that it is a reason of that many users don't attach importance to documentation.
602
+
603
+ = #14787 Show documents when completion
604
+
605
+ I want to improve the importance of RDoc's data.
606
+
607
+ = #14787 Show documents when completion
608
+
609
+ shevegen (Robert A. Heiler) replied to the ticket:
610
+
611
+ # blockquote
612
+ # title = #14787 shevegen
613
+ I also do not use "ri" on the commandline.
614
+
615
+ = #14787 Show documents when completion
616
+
617
+ # blockquote
618
+ # title = #14787 shevegen
619
+ I would not know why, because I myself simply do not use local look-up ways for documentation normally.
620
+
621
+ = #14787 Show documents when completion
622
+
623
+ It's the same opinion of me.
624
+
625
+ = #14787 Show documents when completion
626
+
627
+ And the continuation of shevegen's comment:
628
+
629
+ = #14787 Show documents when completion
630
+
631
+ # blockquote
632
+ # title = #14787 shevegen
633
+ I really "just google".
634
+
635
+ = #14787 Show documents when completion
636
+
637
+ # blockquote
638
+ # title = #14787 shevegen
639
+ And using the browser is about 100x more convenient for me as well.
640
+
641
+ = #14787 Show documents when completion
642
+
643
+ It's the exact same opinion of me.
644
+
645
+ = #14787 Show documents when completion
646
+
647
+ Perfect.
648
+
649
+ = #14787 Show documents when completion
650
+
651
+ I'm actually sad.
652
+
653
+ = #14787 Show documents when completion
654
+
655
+ I want to improve the importance of RDoc's data(2).
656
+
657
+ = #14787 Show documents when completion
658
+
659
+ IRB(with Readline) completes namespace such as classes, modules, methods and so on when it caught TAB key.
660
+
661
+ = #14787 Show documents when completion
662
+
663
+ In the patch of this ticket, I use RDoc as a library.
664
+
665
+ = #14787 Show documents when completion
666
+
667
+ When you press TAB key one more just after that namespace is exact matched, RI document is shown.
668
+
669
+ = #14787 Show documents when completion
670
+
671
+ Demonstration
672
+
673
+ = #14787 Show documents when completion
674
+
675
+ This is just an aside, I want Ruby's documentation ((*design*)).
676
+
677
+ = #14787 Show documents when completion
678
+
679
+ In the ticket, I talked about language documentation design.
680
+
681
+ = #14787 Show documents when completion
682
+
683
+ # blockquote
684
+ # title = #14787
685
+ Perl has "perldoc" feature and users easily access documents of modules by "perldoc" command.
686
+
687
+ = #14787 Show documents when completion
688
+
689
+ # blockquote
690
+ # title = #14787
691
+ Python has "docstring" feature and users can access it on REPL.
692
+
693
+ = #14787 Show documents when completion
694
+
695
+ # blockquote
696
+ # title = #14787
697
+ Those are each language's design of importance.
698
+
699
+ = #14787 Show documents when completion
700
+
701
+ # blockquote
702
+ # title = #14787
703
+ Users use the language on the documentation design, so library developers write documents on the documentation design.
704
+
705
+ = #14787 Show documents when completion
706
+
707
+ # blockquote
708
+ # title = #14787
709
+ Ruby doesn't have documentation design like Perl and Python.
710
+
711
+ = #14787 Show documents when completion
712
+
713
+ # blockquote
714
+ # title = #14787
715
+ Ruby just has RDoc, IRB, and any other supports, but these are just fragmented features, these are not a documentation design.
716
+
717
+ = Documentation design
718
+
719
+ I want to improve Ruby's documentation design.
720
+
721
+ = Documentation design
722
+
723
+ This ticket is a slice of my documentation design.
724
+
725
+ = Documentation design
726
+
727
+ I want to improve\n((*the gentleness*))\nof Ruby's documentation design.
728
+
729
+ = Documentation design
730
+
731
+ I think that\n((*the gentleness for users*))\nis very important in Ruby.
732
+
733
+ = Documentation design
734
+
735
+ Please remove\n(({--no-document}))\nfor\nimprovement documentation at Ruby 2.6 or later.
736
+
737
+ = Thank you for your attention
738
+
739
+ Please write documents!