00:00:04.360
messing up or OOP thank you so I mean
00:00:15.230
let me do this myself on Akira from Japan um like this on the internet other
00:00:24.380
countries on the Ruby committer lives in
00:00:29.539
a rubyist village in the Ruby island um also a rails commuter well I guess Aaron
00:00:39.410
Aaron Patterson and me are the only Clippers and we have the direct commit
00:00:46.160
access to both of these repositories I mean Ruby and rails I also am a gem
00:00:53.660
author mainly rails plugins like the one
00:00:59.660
of the top community the page national library for rails but my recent role is
00:01:08.350
like an event organizer mainly rather than a code writer I'm organizing the
00:01:15.770
Ruby conference in Japan as the main person so let me promote my dance a
00:01:22.939
little bit it's called really Chi Chi and it's gonna be held in September in
00:01:30.290
Hiroshima tickets are on sale you can find more information here on that our
00:01:37.579
beautiful website looking like this and
00:01:42.640
so just don't miss it okay so this is me
00:01:48.950
I'm really glad to be here and be able to do a keynote here today thank you
00:01:55.100
very much for having me so today I'm going to show you things
00:02:02.640
like these the new features that Ruby team is and introducing the major major
00:02:10.500
version 2 to the language and and hell
00:02:16.010
rails uses these new features of Ruby right and I am things I did for it like
00:02:25.950
round these new features okay so let's begin firstly about both of these versions of
00:02:34.050
Ruby on Rails is all the rough fine line
00:02:48.240
so you see rails for came together with
00:02:55.060
Ruby - and the important part is this
00:03:00.670
square rails five supports only Ruby
00:03:06.069
clue - as I said so in other words we
00:03:13.030
want up the major version of rails because we wanted to drop support for
00:03:18.310
Ruby - oh and ribbit to go through one so these others supported version of
00:03:23.650
Ruby also in rails 4 in five this means that rails 5 can use real 5
00:03:34.870
can use Ruby like less than 3 features and betrayal 5 cannot use Ruby three
00:03:43.390
three new features into four new features and two five new features right the it's a stealth support ravit - -
00:03:50.620
right so what are the new features in
00:03:56.040
recent versions these are some of the new things that I'm going to cover in
00:04:02.049
myself today okay so let's start off
00:04:08.410
with module prepend exactly one of my
00:04:13.780
favorite features Ruby - now let's go
00:04:18.910
back to history a little bit and see how we were doing dealing with monkey patches before really
00:04:24.850
I mean prepend being introduced into Ruby okay the four modules band we were
00:04:34.150
using something called alias method chain to extend existing methods it's a
00:04:43.120
part of active support and the inflammation was just this theory
00:04:51.450
Elias methods it was initially implemented back in 2006
00:04:58.580
so was as I showed you it was very
00:05:03.860
beautifully simply implemented simply implementation not just it's super
00:05:10.740
useful it is very simple indeed and this
00:05:15.960
is how we use the feature for example arm where is a method called foo you can
00:05:24.570
extend food behavior with defining food with bars and calling through without
00:05:32.400
bars and inside with door okay but this
00:05:40.980
feature actually had a little bit of downside I mean like pitfall because
00:05:47.760
this feature was not a language core feature it was just a workaround basically and it so it creates some like
00:05:57.080
intermediate methods in the previous example through with bar include without
00:06:03.630
bar these methods aren't actually publicly called from outside and you can tell
00:06:10.980
what's going to happen when these methods are called what I'm talking
00:06:16.140
about is like these methods through with bar and food without bar it's actually
00:06:28.870
so what's wrong with these methods here's a example that I showed you
00:06:36.129
extending food with bar okay it looks
00:06:56.509
food with bar and with bass for the first example and next example is
00:07:01.520
extending the same method with best first and then barring next and you see
00:07:09.469
that the result changes right when you
00:07:15.919
called foo without bonus method right so
00:07:23.560
like this you cannot really tell what's going to happen with that calling when
00:07:30.020
you call that public method through without part let's still callable so the
00:07:38.539
real world example for example think of this case um you have two rails plugins
00:07:45.740
that extend one same method listed in your gem file and when it changed the
00:07:53.089
order of these like our gems in the gem file your code may may break in some
00:08:01.250
case so we needed more robust monkey-patching tool and so yahuda cots
00:08:10.419
proposed modular pants as the Ruby language core feature in ruby 2.0 so
00:08:18.669
this is the future module prepend uses
00:08:24.339
module instead of aliases for thing out I guess
00:08:30.780
it's a very green way of making monkey patching good not got grade in like ugly
00:08:39.120
methods like way to something without something okay but still there's a
00:08:48.900
pitfall when you mix it
00:08:53.970
alias method chain and prepend so this is an example of mixing so if you um
00:09:03.020
there's a existing Class C and firstly you extend the methods with Taylor's
00:09:10.590
method chain and then extend it with pretend it just works right
00:09:21.180
but if you put three pans first then Euler's method chain is going to die
00:09:27.690
it's going to cause infinite loop so
00:09:34.000
this means alias method chain and prepend can never coexist you're going
00:09:40.899
to be killed okay so so alias method chain is armed
00:09:52.740
so so dangerous so you on you discourage
00:09:57.970
to use it if please did never use it anymore and especially if your ball game
00:10:06.820
author or library author please stop using a leaf method chain right now and
00:10:16.529
actually you can use both in one code base if you really would like to buy
00:10:23.529
like switching by ruby version but since
00:10:29.170
that it's slightly different so it's exactly hard to support both so because
00:10:40.450
with this many gems stop supporting ruby one because it's hard to support both
00:10:45.730
one and two this is the reason I like
00:10:51.839
this feature because it kills Ruby - Tom sorry Ruby one
00:10:59.490
by the way um I showed you some code calling module prepend but actually
00:11:09.339
these methods are public since ruby to one so there was a small room of
00:11:17.770
improvement in the code I showed you previously this send include or send ribbon was
00:11:25.990
known as a very common idiom in Ruby but um so yeah it's so so popular but I
00:11:36.370
didn't like it I wanted to do the simpler so I proposed to make them public so here's my proposal for Ruby
00:11:45.190
3-1 and in the Ticketmaster wrote he
00:11:50.350
didn't write like it but he still kindly accepted my proposal and but Matthew
00:11:58.839
still don't like this right so I know a
00:12:06.730
public include is available in Ruby so
00:12:12.850
you can find x-acto fine um dot included calls everywhere in Ruby
00:12:18.910
arms are in rails and in plugging in gems so just forget send include okay
00:12:28.920
connects topic refinements refinements is another new strategy for your monkey
00:12:35.440
patching with very I mean unique -
00:12:41.800
unique scope it's it's known as file scope monkey patching let me explain um
00:12:52.440
we have ever actually used refinements by yourself have you ever used
00:12:58.270
refinements okay only two in this room
00:13:04.470
I know I don't know what if use it so I
00:13:10.610
actually created some gems using refinements one is called database remar
00:13:20.370
rewinder so it defines a method in
00:13:26.420
active record connection called execute multiple and it calls execute monic
00:13:35.760
multiple inside the blonde one but so
00:13:41.700
this execute multiple method is actually a public method that it's only visible
00:13:47.210
from inside the plugin users can never touch this method so it's very useful
00:13:54.450
right so I personally call this a super private method it's private inside the
00:14:03.120
plug-in more accurately it's actually file scope inside each file in the 14
00:14:16.340
cell so it's about plugging and in the rails
00:14:24.279
code base I introduced refinements for rails 5.1 to extend a rage song this is
00:14:34.149
the code it recently was creating
00:14:39.689
something called a rig some public way but I change this information
00:14:47.220
implementation to use refinement in order they not to reveal that or exam
00:14:52.660
method to the users so in this case I'll
00:15:00.910
it already told this I guess yeah so
00:15:07.149
refinements was used to conceal that
00:15:14.730
internal method so I investigated this
00:15:23.939
feature when implementing this and I found something weird its I found it's
00:15:32.350
actually not file scoped the documentation was lie and so I reported
00:15:40.360
to the red line
00:15:46.139
yeah well I told in its path curves but July I'm sorry
00:15:56.140
so here's an example showing the lie
00:16:03.550
when you you can define a refinement in
00:16:09.800
a module in this case a anonymous module extending object and then define the
00:16:18.830
object that is being refined then it works okay so what if we like to turn
00:16:27.050
them around like this firstly define a
00:16:32.080
method then define the refinements extending the methods then it doesn't
00:16:40.070
work so it's not actually false code but
00:16:45.920
like file scope plus physical positions code am I correct meant I thought it's a bug
00:16:55.940
but matt said it's an intended behavior I think this is very annoying behavior
00:17:07.819
it's so complex but but
00:17:20.100
but it's said to be incentive by Matt's so anyway please mind this and please
00:17:32.350
beware when you're actually using my appointment I guess it's the weirdest
00:17:39.340
future in Ruby so far so just be careful
00:17:47.880
anyway this funny feature was proposed and implemented by mr. Shue go Maya who's
00:17:57.040
Matt's boss and his company and this guy
00:18:02.140
created another weird feature in relief called protected so here's another topic
00:18:10.240
concerning method visibility and another
00:18:15.540
real feature in Ruby so here's an
00:18:23.380
example taking firm Hisle Andrew because like this is the correct way of using
00:18:32.760
protected but it's never used in this
00:18:38.020
way and math again he created if he
00:18:46.419
would design Ruby again he will not include Ruby in the language feature
00:18:55.260
because I guess he didn't like a teacher
00:19:00.299
so actually protected is very very
00:19:05.620
frequently used inside the rails code base but almost these use cases of
00:19:14.820
protected is misusing protected you just
00:19:20.500
can rewrite protected sits private and you could should still work so I tried
00:19:27.850
doing this growls like three years ago but I had to
00:19:36.409
change like 140 files and like about 200
00:19:43.249
additions 200 deletions and the tests were still working still passing but I
00:19:52.149
gave up pushing this top string because um it kind of broke some documentation
00:20:04.089
that hasn't happened three years ago but I finally pushed this last year by
00:20:11.869
separating that huge patch into like several small patches so it's actually
00:20:20.029
in reel five one well five one dozen does no longer abuse protected scope so
00:20:30.200
protective dead in Braille faster so he also should never use protected again by
00:20:39.200
the way sugar the period of these funny features is written on his another
00:20:46.460
project recently it's a text editor in reading so he's going to do a
00:20:59.089
presentation about the his new project text editor in next coming with the
00:21:04.999
conference called Ruby Taiji so don't miss it okay
00:21:11.460
so here's another topic mmm
00:21:20.530
private dick yes there's a tiny improvement around method visibility in
00:21:26.320
Ruby trail so in order to define a
00:21:31.570
private method we have to define the method like this in this case all
00:21:38.500
methods defined below that private or I'll become all private right or if it's
00:21:45.100
done like this you can do this also in this case the private call takes a
00:21:52.210
symbol of the method name right so just
00:21:59.170
like C++ or Java recent Ruby's can do this private test or public test right
00:22:08.610
it's rebel evolutionally handy right so
00:22:14.500
you don't have to repeat the method name twice so it's a very simple trick he
00:22:28.000
just the authorized attach just change the return value of the DEF statement so
00:22:35.950
it it sincerely actually doing this right testing the return value of death DEF
00:22:43.270
statement to the private segment right
00:22:49.290
so this patch was written four years ago
00:22:54.690
and I suppose this feature is very much important for especially period of rails
00:23:00.970
team again because this is the rail
00:23:07.150
style Oh does it is a kind of group of people
00:23:16.520
who want to write private this way in
00:23:21.830
this unique style oh I'm not sure if
00:23:27.679
it's a group of people and maybe anyway
00:23:33.070
there's always kind of like the devil between this style and this traditional
00:23:41.840
style so everybody is happy with this right we don't have to fight anymore
00:23:52.460
okay so that's why I said this feature
00:24:00.140
is very important for you for you Aaron
00:24:05.650
but private service actually very rarely used in side rails I just get bread
00:24:14.770
today and I found only 17 occurrences in private shift in rails the reason is
00:24:25.340
because there was a documentation problem in in private chef and so very
00:24:33.169
recent so rails users are docked to generate segmentation documents and also
00:24:42.410
couldn't properly generate the the documents private methods if it's
00:24:50.840
defined that way and it breaks with rails API judgment if you use this so
00:24:59.419
the problem is like this to use private search and then if you define any public
00:25:06.830
method below that public method also is like treated as a private method so that
00:25:24.820
because the parser is different from the Ruby Sparkle classic it because our duck
00:25:32.000
has its own really puzzle okay the parser is this this thing Ruby
00:25:41.419
likes done RB actually collects it the file is like this
00:25:48.610
it's a according to the comments it's a
00:25:53.690
ruby lexical analyzer written by K JSON who's the author of IRB and it requires
00:26:06.620
IRB Liam sighs right it's not a console
00:26:12.500
so it's a it's a dutchman generators it requires IRB can you use IV Parsons
00:26:19.640
teaching so there are three positives in
00:26:24.710
maybe pause why and Victor there's Santa libraries and they are be possible from
00:26:33.370
actually Ritter is a ruby posture in the
00:26:40.220
styling library so I guess they are
00:26:47.120
about should use this instead of creating its own positing right
00:26:52.240
so why what isn't our doc because Azoff was created before people is being
00:27:00.320
created this is the history so I tried
00:27:08.330
serum right the positive our doc to use wizard but I just failed was so tough to
00:27:18.260
talk good so I gave up to admit that I
00:27:24.289
brought this task to my Ruby Meetup and actually someone is using I mean working
00:27:31.549
on this to replace our dog possible to use gripper and it's going to be and this
00:27:40.610
person will present about this and the next Ruby cages so don't miss it so
00:27:50.180
anyway this is the history of Ruby posters and yes this one episode IRB was
00:28:00.320
created in the last century if it's been 20 years approximately from the first
00:28:08.450
birth of IRB so everyone let's celebrate the 20th birthday
00:28:14.030
higher be yeah and I guess be the
00:28:25.010
anniversary events is going to be happen in Ruby Tai Chi by the creator of IRB
00:28:35.120
himself anyway let's go back to the privates of problem how much when it's
00:28:46.220
go ahead twenty minutes okay okay okay
00:28:52.970
so I said I gave up replacing good are those possible but I just instead I just
00:29:01.700
made a tiny patch resolving my problem to Rails this is my patch you can check
00:29:07.880
online um so this patch enables just
00:29:14.620
correctly parsing our private self on our dock without replacing the whole
00:29:21.560
posture so this happened last year so it
00:29:27.410
took like three more than three years to support private chef and being rails
00:29:34.850
communities to allowing those communities to use this news
00:29:40.260
sex but it's now available because our
00:29:45.630
other have been released with this with my pet and rails 5-1 depends on that
00:29:54.270
version so you're free to use private test now yeah okay so the next topic is
00:30:06.390
keyword arguments this something looks
00:30:12.510
like she word arguments and rails since it's version one like this so these are
00:30:19.470
the met method definitions is some kind of keyword arguments or like this takes
00:30:28.590
very well there are your needs so it
00:30:34.410
certainly users ruby hash to pass in something looks like arguments
00:30:39.600
I mean keyword arguments it allows the
00:30:45.630
method call that's better than like passing in these arguments little names
00:30:54.110
but on the other hand the method definition looks like very weird I mean itself nothing to the users just
00:31:02.960
like pass in some kind of hash named options or you can pass in everything
00:31:11.580
like star arts it's it really sells the
00:31:17.400
method signature itself nothing to the users and it's actually included in
00:31:26.850
rails tool chain in active support so this is how rail extracts the options
00:31:35.640
from the given borrowings this method on
00:31:40.770
array called exact options since it's just a hash you can define a
00:31:48.100
default value inside the method like this and um yes inside a method and also
00:32:00.279
never forget to write a documentation about the default values outside the
00:32:07.600
document on the I'm solid method so you can also verify the option keys in this
00:32:14.019
way to make sure um you haven't gotten unexpected cheese this just raises when
00:32:25.360
an expected Keith looks given again you have to write both the code and the
00:32:32.710
document so so then Ruby to finally got
00:32:42.190
the core language feature key Bernard means was implemented by mummy three men
00:32:50.919
and insane so we can now rewrite the key
00:32:58.629
arguments ish something in rails from this to be like this here is a pet the
00:33:06.970
writings will talk to the methods so you see the method signature becomes more
00:33:13.570
like clear to the users what to take what key is to take and what default
00:33:19.629
values to take right also that implementation becomes shorter right and
00:33:26.529
I guess it won't answered because it's always like hash man equation and very
00:33:33.460
manipulation is written on feet thanks
00:33:41.170
so I created a branch using keyword arguments I mean introducing cumulative
00:33:48.140
in serial school days back in four years
00:33:53.420
ago before the agree to release and then upon some problem some specification
00:34:00.830
problem arose to our arguments in reading rails very often defines a key
00:34:08.020
method key that that is exactly like
00:34:13.040
Ruby keyword like if like validate if valid unless etc so the key argument
00:34:23.899
accurate method is actually can be defined like this and it can be called
00:34:29.210
like this but you can never like access that that variable and call this syntax
00:34:38.690
agree
00:34:45.320
so with qi now we can create a never can
00:34:50.570
access variable in Ruby okay I brought
00:34:56.480
this problem to record and discuss the bliss and so we introduced a new feature
00:35:02.810
in review one it's called binding local variable get this way we can get the
00:35:11.270
value this example defines a local
00:35:16.520
variable named meal so works right and
00:35:22.880
so I'd like to propose to rails to use
00:35:27.950
keyword arguments as the first class citizen API email thank you I haven't
00:35:36.620
actually proposed this yet but I'll work on this maybe after this conference
00:35:42.790
again run faster should make the code more readable and Queen and should
00:35:50.180
make more obvious documentation so I guess I'm going to do this so the next
00:35:58.580
topics require relatives
00:36:04.130
Hey yes reply relative this feature is originally introduced
00:36:09.900
into Ruby because of rails and it's
00:36:18.950
supposed to run faster than normal required because if the implementation is much more simple but rails doesn't
00:36:27.839
really use this feature today most of
00:36:32.869
requires in Ruby is normally required instead we put the cobalt in so there's
00:36:40.829
a huge room for performance improvement against using River relative so I
00:36:46.470
created a pant doing this I rewrote all requires in Kaiba Corps abilities and
00:36:53.720
benchmark the result was no significant
00:37:00.839
performance agreements so I haven't
00:37:07.529
posted this to upstream but I know why not can I just got with cogent he said
00:37:18.119
maybe bunglers doing good jobs redefining require and making it faster ok ok oh
00:37:31.950
you guessed it more investigate more after this conference anyway require
00:37:38.999
elective is basically a good thing so you may use it I I recommend you to use
00:37:45.509
it instead of you required should be faster again here's another topic
00:37:54.170
instruction sequence load and dumping load okay
00:38:00.150
these are public API things will be to see you again and koishi created something using this
00:38:07.339
but he said his version doesn't really make real sastras so this year
00:38:15.440
on Shopify created something resembles touka which is long and they say it's
00:38:21.520
making rails boots and faster very interesting it's kind of still veiled
00:38:31.150
mysterious but I heard one of the creative this plug-in is coming to Ruby
00:38:37.339
Kaiji and so if you'd like to know more about this plug-in I mean this feature
00:38:43.700
just come to really high key because I'm a very huge topic in coding in Ruby so
00:38:54.230
in recent versions of Ruby every string object has its own encoding okay and we
00:39:05.420
use various encoding actually even Maps uses other encoding other than utf-8
00:39:10.790
until like 5 years ago but Rails has to
00:39:21.349
be basically utf-8 only our framework
00:39:27.130
rails doesn't has to deal with multiple encodings internally I mean this can be
00:39:37.190
the best basic strategy against encodings in rails just keep everything
00:39:42.829
to be utf-8 and converts everything from the outside to utf-8
00:39:56.160
so for example you can use any encoding
00:40:02.500
food writing you templates by using
00:40:08.860
another file a killing word putting magic comments on the top but I mean
00:40:18.390
nobody's doing this in rails nobody is writing non-new tf8 templates so I guess
00:40:28.300
I told this like two years ago in Ralph's gone but I'm planning to drop
00:40:33.760
including multiple including support for action view actually there's the kind of
00:40:39.910
kind of 70% done quiet patch in my machine and have so haven't created a
00:40:46.440
like test testing catch sorry I'm just
00:40:52.360
so lazy I'll do this after so anyway
00:41:01.140
this library in access aboard I called X of the board multibyte since
00:41:08.350
like ten years ago which includes a huge
00:41:14.260
set of Unicode database in this file
00:41:24.940
so since the encoding handling has been improved in Ruby like this and it has
00:41:33.250
recently very important improvements in 2.4 so by using these features we can
00:41:44.540
totally remove these remove the active support version of multiple encoding
00:41:50.720
supports from EXO support and use the Ruby core feature are getting arms or M
00:41:56.540
sensing and instead actually we need to
00:42:02.480
do this as soon as possible because the maintain of the maintainer of the exit supports multiplied has just retired
00:42:11.360
remote solution so currently nobody is maintaining that Eclipse support
00:42:16.850
multiple something so I'd like to
00:42:23.930
propose to totally remove the web-accessible board multiply trim rails
00:42:30.050
and the maybe in the next version we've already created a pull request it's
00:42:36.830
still on the discussion but I hope to merge this into the next version okay
00:42:44.570
next topic frozen strings so we've got so many like
00:42:49.880
let me freeze some strings in rails kind of request in the past few years because
00:42:58.370
it makes it kind of makes rels faster orbit
00:43:04.330
so these are pros and cons of that freedom strings in the rails code base
00:43:11.470
it really makes the code ugly for example like this but calls jump restart
00:43:18.290
restart restart restart restart brief Dumfries for every string literals it's
00:43:24.230
just really quick honestly I really really don't like I don't want to see
00:43:29.720
this anymore so so I'm supposed to introduce a new
00:43:37.010
magic comment feature in Ruby just because I didn't want to see that code
00:43:43.000
to be more accurate there was already existing proposal adding them as a
00:43:50.030
comment and I just locate a strong platform for this proposal and some
00:43:59.660
maths accepted this proposal and so it wasn't introduced to Ruby 2 3 as a full
00:44:05.450
feature this is the magic comments frozen string literal through also Ruby
00:44:13.580
2 3 introduced a less known feature -
00:44:19.910
operator free screen literal the - string literal you've never heard of
00:44:26.600
this before I guess it's actually a little bit faster than calling doc freeze method on
00:44:34.070
string maybe never had should be care
00:44:41.390
about this but it's just a tip so anyway I would like to put the magic comment to
00:44:48.380
all files in rails but it is a little
00:44:53.780
bit too fast I mean really real or else fine because they'll file social
00:44:59.210
supports a ruby that does not support Moe are frozen screaming medic comment
00:45:07.390
so maybe we should wait until well 6 to do this
00:45:13.940
now here's another topic concerning performance so l5 does not support will
00:45:26.249
be younger than q1 just because we betrayed to introduce this feature repeatedly collects the symbol garbage
00:45:37.400
and due to this of the sword before
00:45:45.299
symbol GC Ralph was abusing like strings
00:45:50.759
instead of symbols like it rails converts every symbols in the outside
00:45:56.849
world to strings but I guess we don't have to do this in one this thing you
00:46:03.029
symbol as it is everywhere in the valves in the process we could do this and we
00:46:11.460
could reduce coverage strings by doing this I guess I just guess it's another
00:46:19.380
idea making real simpler so here is
00:46:24.420
another recent topic ruby is just unified six long and big mountains with
00:46:30.420
Imperium so if your code still access is fixed
00:46:37.859
number big nom it warns so if you find any ruby gem that warns just don't you
00:46:46.049
stop using it and find an alternative ok
00:46:51.749
finally its next topic I like to talk about something some methods that it
00:46:57.509
recently implemented in xsf words and then pour it into Ruby like this object
00:47:05.609
try called new liberal and ribbon or script here doc also get near it'll play
00:47:12.749
bro um here's another minor methods numeric positive and negative
00:47:21.390
or array the pens and pretend and as Nick stated the HH sold something like
00:47:33.100
this on Twitter accessport can survey experimental lab for a future cool
00:47:39.130
features in really ok on judges hold two more minutes here's another method fun
00:47:48.910
erase Holliman innumerable fun so this case is a little bit complex there used
00:47:55.600
to be a activesupport version of song and really kind of ported arrays from an
00:48:02.860
innumerable phone but in a different spec so that the behavior is slightly
00:48:11.590
different the first between the review version and rail surgeon but the ruby
00:48:18.850
version is faster than the rails one so we want to call the GUI version as
00:48:25.750
possible and then fall back to the browser is in if something's wrong with
00:48:31.180
ruby version so here is the situation as
00:48:38.500
I told you before I found out somehow done using refinements it kind of works
00:48:48.670
but it's so complex that implementation is so complex maybe we can make the
00:48:55.060
simpler when we dropped supports for the Ruby that doesn't have race home so
00:49:05.260
anyway there is such difficulties for real scene to support multiple version
00:49:11.620
of Ruby but further users it just can use the newest movie and use every new
00:49:19.480
features with Ruby you can do that for your applications so
00:49:26.080
like I showed ruby is getting better and
00:49:31.099
better same day and introducing new features for every blue agent so I
00:49:36.550
encourage you to upgrade your Ruby immediately to the newest one and use
00:49:42.470
new features enjoy new features so this is the end of my talk will be evolving
00:49:51.410
in rails also getting there and as a
00:49:57.410
commuter of both I'm kind of doing some like works for the both team and there's
00:50:08.050
so many more other things to do for both Ruby and rails so if you're interested
00:50:14.510
in myself I encourage you to join us the development of these language and plugin
00:50:21.440
and frameworks right that's it thank you very much so thank you for having me for
00:50:34.460
this conference and see you hopefully at another conference at Ruby tightly thank
00:50:42.440
you very much all right do have any questions we have time so we will take a
00:50:52.640
few questions in anyone
00:50:58.740
oh yeah yeah just opposed to mine
00:51:04.020
actually my first question today actually it's a comment so I did I did a
00:51:13.680
lot of benchmarks with keyword arguments in ruby 1.9 2.0 2.1 2.2 with the
00:51:19.470
representable gem because we started switching from the options equal hash to
00:51:24.599
the keyword argument and it was like four times slower than game ok because there was some improvement in 2.2 but it
00:51:32.010
was so slow that we had to stay with me with the like hash thing because they
00:51:37.920
used ruby hash in reaction implementation true yeah yeah yeah right
00:51:43.859
so it's been improved since two three I guess dude zero to three it exactly is
00:51:50.310
still slow in micro benchmark remind remind that slowness
00:52:01.020
okay I just promised to run the benchmarks again with 2.3 2.4 okay I'll
00:52:09.580
send you a pull request cool does anyone
00:52:19.510
else have questions yeah you can push
00:52:27.100
the mic so you mentioned with keyword
00:52:32.260
arguments if you use a ruby keyword at the key you will create some unreachable
00:52:39.960
variable there yes if you're running verbose mode will there be a warning from Ruby I don't think so okay thank
00:52:49.390
you all right I think there are no more questions thank you very much Matsuda