ruby-lang.org And I’m maintaining ruby-lang.org. I support ruby commiter and make easy to get rubies all over the world like CDN.
! Our site is hosted by github and heroku. If you find something to improve and documentation errors in www.ruby-lang.org, you can fix and send a pull request. we can merge it.
asakusa.rb And I’m member of asakusa.rb. asakusa.rb is the most active meetup group in japan. we are talking about ruby and writing code every Tuesday.
ϛυϧΣΞͷΞοϓάϨʔυ ࣾ։ൃج൫ͷߏங ౷ܭج൫ͷߏங +409ͷӡ༻උ HJUIVC ηΩϡϦςΟࠪ ίʔυϨϏϡʔ ςετج൫ͷߏங ΞΫηεղੳج൫ͷߏங ։ൃϓϩηε ৽ਓڭҭ ݪߘࣥච ΧϯϑΝϨϯεൃද 044։ൃ αʔόʔߏཧͷ৽ ϦʔϯελʔτΞοϓ +FOLJOT 3VCZ3BJMT 3%#.4 ٕज़ج൫νʔϜ I’m at technical platform team on company. example for framework upgrade and opensource development, building to analysis platform etc.
Our Rails app 46 models 5000 lines in controllers 400 lines in routes.rb 1:1.3 code to test ratio our rails is traditional rails. probably our rails is same as your rails.
github workflow We use workflow like a github’s one. master branch is always to allow deployment and all-green test states. all of code is reviewed by others.
Ruby 1.8.6 Rails 2.0.2 30days had been running under ruby 1.8.6 and rails 2.0.2 when I joined. I was very surprised. because latest rails was 3.2 at that time.
the answer is this tweet. he said “Ruby 2.1.1 is too fast. We can make faster our web application only upgrading language version, It seems joke to me.”
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0 3.2 4.0 Slow Fast In Generally, Upgrading Ruby give more faster experience for us, but Upgrading Rails give more slower experience for us.
Ruby 1.8.6 1.8.7 1.9.3 2.0.0 2.1 Rails 2.0/2.1 2.3 3.0 3.2 4.0 Red line shows big wall of Upgrading Rails, and Blue line shows big wall of Upgrading Ruby for us
Rails 2.0 Rails 2.3 hotfix A migration A we made hot fix branch from Rails 2.0 branch. and made a migration branch from Rails 2.3, migration branch contains to rewrite code adopting more rails way, etc.
Rails 2.0 Rails 2.3 hotfix A migration A we finished migration branch, I merged it to rails 2.3 branch. I merged whole hotfixes and migrations to rails 2.3 branch.
Kage (kah-geh) is an HTTP shadow proxy server that sits between clients and your server(s) to enable "shadow requests". kage is an http shadow proxy server that sits between clients and your server to enable “shadow requests”. kage is developed by cookpad. cookpad is best recipe sharing service in japan.
the basic of kage real request this figure is basic usage of kage. we put kage at the back of nginx. while kage proxies a request to production, it duplicate the request and pass though it to staging environment.
we can test big changes with real request now. kage can build powerful test suites.
require "./config/environment"! ! use Rails::Rack::LogTailer! use Rails::Rack::Static! run ActionController::Dispatcher.new rack with rails 2.3 we are using rack with rails 2.3, it can be easily applied to rails 2.3.
Because we need to migrate rack in the future.
30days-front can’t use hyphen can’t use number can’t convert ! application.rb... but, I have one of big problem. our repository name can’t be converted to rails 3 style namespace. because our repository use hyphen and integer.
app1 app2 backgroundrb to dj I replaced old job worker named backgroundrb. backgroundrb is on-memory system, so it’s cleared when memory refresh. It means all job is deleted. We and our user got frustration on this situation. I replaced all of job system to persistent workers like delayed_job.
memory usage(giga byte) 0 1 2 3 4 3.8 3.2 2.0 2.1 But memory usage are increased 10-20% by Ruby 2.1. If you use PaaS service like heroku, you need to evaluate this situation before upgrading Ruby 2.1
https://www.ruby-lang.org/en/news/2014/03/10/regression-of-hash-reject-in-ruby-2-1-1/ I noticed you, Ruby 2.1.1 have regression feature. It’s difference behaviour of reject method on Inheritance Hash. Please read our announcement. This regression is already fixed Rails 4.0 and 4.1, If you use Rails 3.2, You need to applied workaround patch.
app1 app2 Our System used Kyoto Tycoon. Kyoto Tycoon is memcached compatible session storage, it have dual master function. but session client named dalli not support Kyoto tycoon on Rails 4.
Resp. time(ms) 0 60 120 180 240 300 287 189 3.2 4.0 This is benchmark of Rails4. rails 4 is slower than rails 3. it increased 100 micro seconds of response time.
1. Flash structure changes 2. Mutator methods called on Relation And I notice big incompatible things on Rails 4.1. One Flash structure changes. Rails changed key class of flash to String from Symbol. Two. Mutator methods called on Relation. before Rails 4.1 allows mutator methods like map exclamation on Relation objects. but Rails 4.1 raised this methods.
And changed namespace of Minitest. If you use ActionSupport::Testcase and test helper libraries like webmock. Probably Minitest broke these helpers. this is my Pull request of web mock, I already fixed it.
Resp. time(ms) 0 60 120 180 240 300 266 287 4.0 4.1 It’s benchmark of Rails 4.0 and 4.1. Rails 4.1 is faster than 4.0. but it’s slow than Rails 3.0 yet.
Ruby 1.9.3 2.0.0 2.1 2.2 Rails 3.0 3.2 ? 4.0 ? 4.1 ? I started to evaluate Rails 4.1 with Ruby 2.2. Ruby 2.2 will be releasing December 2014 for us. I work hard to solve incompatible changes before releases.
class Bar! def bar(foo = foo())! foo! end! ! def buzz(foo = foo)! foo! end! ! def foo! :buzz! end! end! ! p Bar.new.bar! p Bar.new.buzz This is example of incompatible changes on Ruby 2.2. class Bar have foo equal foo method arguments. bar method called foo methods, buzz method doesn’t called foo methods.
This changes break Rails. but it’s already fixed Rails 4.1 by Aaron Patterson. this patch is backported Rails 4.0. but didn’t fix 3.2 branch. If you still use Rails 3.2, You can’t use Ruby 2.2.
2. fix gem 4. fix Ruby 3. fix Rails 1. fix your code Fix your code. fix using gems. fix Rails. fix Ruby. You should get more controllable things. It’s expand your life!