{"id":262031,"date":"2015-07-22T13:02:02","date_gmt":"2015-07-22T09:02:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=262031"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=262031","title":{"rendered":"\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0430\u043a\u0442\u0443\u0430\u043b\u044c\u043d\u044b\u0445 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u043f\u043e Ruby #1: \u0441\u0442\u0430\u0442\u044c\u0438, \u0434\u043e\u043a\u043b\u0430\u0434\u044b, \u043f\u043e\u0434\u043a\u0430\u0441\u0442\u044b, \u0433\u0435\u043c\u044b"},"content":{"rendered":"<p>     \t<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/451\/1eb\/188\/4511eb1880e64f8a8c3dd62f59fd11c4.png\"\/><\/p>\n<p>  \u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e <a href=\"http:\/\/habrahabr.ru\/company\/at_consulting\/profile\/\">AT Consulting<\/a> \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Beeline.kz, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043d\u0430 Ruby on Rails. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0444\u0435\u0440\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u0435\u0442, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043e\u0431\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c. \u041f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 Ruby, \u044f \u0431\u0443\u0434\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Ruby-\u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442.<br \/>  \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0432 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043d\u043e \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0432\u0435\u0434\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u043a Ruby \u2013 \u044d\u0442\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430.<br \/>  <a name=\"habracut\"><\/a>  <\/p>\n<h3>\u041f\u043e\u0447\u0438\u0442\u0430\u0442\u044c<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/blog.codeship.com\/generational-gc-python-ruby\">Generational GC in Python and Ruby<\/a> \u2013 \u0430\u0432\u0442\u043e\u0440 <a href=\"http:\/\/patshaughnessy.net\/ruby-under-a-microscope\">Ruby Under a Microscope<\/a> \u0441\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u0435\u0442 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043c\u0443\u0441\u043e\u0440\u0430 Ruby \u0438 Python<\/li>\n<li><a href=\"http:\/\/solnic.eu\/2015\/06\/06\/cutting-corners-or-why-rails-may-kill-ruby.html\">Cutting Corners or Why Rails May Kill Ruby<\/a> \u2013 \u043d\u0430\u0448\u0443\u043c\u0435\u0432\u0448\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u0441 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0439 the Rails way \u0438 \u043f\u0440\u0438\u0447\u0438\u043d\u0430\u0445 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u043e\u043e\u0431\u0449\u0435\u0441\u0442\u0432\u0430 <\/li>\n<li><a href=\"http:\/\/devblog.avdi.org\/2015\/07\/08\/ruby-is-defined-by-terrible-tools\">Avdi Grimm \u2014 Ruby is defined by terrible tools<\/a> \u2013 \u0434\u0435\u043f\u0440\u0435\u0441\u0441\u0438\u0432\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f Avdi Grimm \u043e \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u044f \u0432 Ruby-\u043a\u043e\u043c\u043c\u044c\u044e\u043d\u0438\u0442\u0438<\/li>\n<li><a href=\"http:\/\/www.sitepoint.com\/implementing-lazy-enumerables-in-ruby\/\">Implementing Lazy Enumerables in Ruby<\/a> \u2013 \u0433\u043b\u0443\u0431\u043e\u043a\u0438\u0439 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b \u043e\u0431 Enumerable \u043f\u0435\u0440\u0435\u0434 \u0432\u044b\u0445\u043e\u0434\u043e\u043c \u043a\u043d\u0438\u0433\u0438 <a href=\"https:\/\/leanpub.com\/therubyclosuresbook\">\u00abThe Ruby Closures Book\u00bb<\/a> <\/li>\n<li><a href=\"http:\/\/radek.io\/2015\/07\/13\/ruby-scripting\/\">Bringing the best of Bash scripting to Ruby<\/a> <\/li>\n<li><a href=\"https:\/\/robots.thoughtbot.com\/rails-test-types-and-the-testing-pyramid\">Rails Test Types and the Testing Pyramid<\/a> \u2013 \u0430\u0434\u0430\u043f\u0442\u0430\u0446\u0438\u044f <a href=\"http:\/\/martinfowler.com\/bliki\/TestPyramid.html\">\u043f\u0438\u0440\u0430\u043c\u0438\u0434\u044b \u0442\u0435\u0441\u0442\u043e\u0432<\/a> \u041c\u0430\u0440\u0442\u0438\u043d\u0430 \u0424\u0430\u0443\u043b\u0435\u0440\u0430 \u043f\u043e\u0434 \u0442\u0435\u0440\u043c\u0438\u043d\u043e\u043b\u043e\u0433\u0438\u044e Rails<\/li>\n<li><a href=\"http:\/\/blog.honeybadger.io\/advanced-ruby-hash-techniques\/\">Advanced Ruby Hash Techniques<\/a> <\/li>\n<li><a href=\"https:\/\/robots.thoughtbot.com\/replace-coffeescript-with-es6\">Replace CoffeeScript with ES6<\/a> \u2013 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0435 ES6 \u0438 Coffee \u043e\u0442 thoughtbot<\/li>\n<li><a href=\"http:\/\/fancypixel.github.io\/blog\/2015\/01\/28\/react-plus-flux-backed-by-rails-api\/\">React + Flux Backed by Rails API<\/a> \u2013 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043e\u043f\u044b\u0442\u0430 \u0432\u043d\u0435\u0434\u0440\u0435\u043d\u0438\u044f React + Flux \u0441 API \u043d\u0430 \u0440\u0435\u043b\u044c\u0441\u0430\u0445. \u0412\u0442\u043e\u0440\u0430\u044f \u0447\u0430\u0441\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u0438 \u2013 <a href=\"http:\/\/fancypixel.github.io\/blog\/2015\/01\/29\/react-plus-flux-backed-by-rails-api-part-2\/\">\u0437\u0434\u0435\u0441\u044c<\/a>, \u0430 \u0442\u0440\u0435\u0442\u044c\u044f \u2013 <a href=\"http:\/\/fancypixel.github.io\/blog\/2015\/01\/30\/react-plus-flux-backed-by-rails-api-part-3\/\">\u0437\u0434\u0435\u0441\u044c<\/a> <\/li>\n<li><a href=\"https:\/\/blog.cloudcity.io\/2015\/07\/10\/how-bundler-works-a-history-of-ruby-dependency-management\/\">How Bundler Works: A History of Ruby Dependency Management<\/a> \u2013 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u043f\u043e\u0441\u0442 \u043f\u0440\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044e Bundler, \u0442\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 <a href=\"https:\/\/www.youtube.com\/watch?v=_bDRR_zfmSk\">\u043f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c<\/a> <a href=\"https:\/\/www.youtube.com\/watch?v=kwkbrOwLsZY\">\u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f<\/a> Aaron Patterson (\u043e\u0434\u043d\u043e\u0433\u043e \u0438\u0437 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043a\u043e\u043d\u0442\u0440\u0438\u0431\u0443\u0442\u0435\u0440\u043e\u0432) \u043d\u0430 \u044d\u0442\u0443 \u0442\u0435\u043c\u0443 <\/li>\n<\/ul>\n<h3>\u041f\u043e\u0441\u043c\u043e\u0442\u0440\u0435\u0442\u044c \u0438 \u043f\u043e\u0441\u043b\u0443\u0448\u0430\u0442\u044c<\/h3>\n<p>  <\/p>\n<ul>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"http:\/\/www.youtube.com\/watch?v=eBccDerJPJE\">GORUCO 2015: Nate Berkopec: Rails 5, Turbolinks 3, and the future of View-Over-the-Wire <\/a> (14:21) <\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"http:\/\/www.youtube.com\/watch?v=oT74HLvDo_A\">GORUCO 2015: Eileen Uchitelle: How to Performance<\/a> (25:43) \u2013 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 Eileen Uchitelle \u0438\u0437 Basecamp \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u0430 \u043e\u0442\u0441\u043b\u0435\u0436\u0438\u0432\u0430\u043b\u0430 \u0438 \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043b\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c Rails \u043d\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0442\u0435\u0441\u0442\u043e\u0432 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u043e\u0432 \u0438 \u0438\u043d\u0442\u0435\u0433\u0440\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0441\u0442\u043e\u0432 <\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"https:\/\/gorails.com\/episodes\/rails-5-actioncable-websockets\">Rails 5&#8217;s ActionCable and Websockets Introduction<\/a> (18:48) \u2013 \u043f\u043e\u043b\u043d\u043e\u0446\u0435\u043d\u043d\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 \u0432\u0435\u0431\u0441\u043e\u043a\u0435\u0442\u044b \u0432 Rails \u0432 \u0441\u043a\u0440\u0438\u043d\u043a\u0430\u0441\u0442\u0435 \u043e\u0442 GoRails<\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"http:\/\/www.youtube.com\/watch?v=4FtnvyH0qq4\">RailsConf 2015 \u2014 Internet of Things: Connecting Rails with the Real World<\/a> (31:24) \u2013 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0434\u043e\u043a\u043b\u0430\u0434 \u0441 RailsConf \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0443\u0436\u0435 \u0441\u0435\u0433\u043e\u0434\u043d\u044f, \u043d\u0435 \u043f\u043e\u043a\u0438\u0434\u0430\u044f \u043a\u0440\u0435\u0441\u043b\u0430 \u0438 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0431\u043e\u0447\u0435\u0433\u043e \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u043e\u0444\u0435\u0432\u0430\u0440\u043a\u0443 \u0433\u043e\u0442\u043e\u0432\u0438\u0442\u044c \u043a\u043e\u0444\u0435. \u0411\u0443\u0434\u0443\u0449\u0435\u0435 \u0437\u0430 IoT <\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"http:\/\/devblog.avdi.org\/2015\/05\/14\/new-rubytapas-freebie-immutable-iterators-with-tom-stuart\/\">Ruby Tapas \u2014 Immutable Iterators with Tom Stuart<\/a> \u2013 \u0431\u0435\u0441\u043f\u043b\u0430\u0442\u043d\u044b\u0439 \u0432\u044b\u043f\u0443\u0441\u043a \u0441\u043a\u0440\u0438\u043d\u043a\u0430\u0441\u0442\u0430 \u043e\u0442 Avdi Grimm \u043e \u0440\u0430\u0431\u043e\u0442\u0435 \u0441 \u043d\u0435\u0438\u0437\u043c\u0435\u043d\u044f\u0435\u043c\u044b\u043c\u0438 \u043a\u043e\u043b\u043b\u0435\u043a\u0446\u0438\u044f\u043c\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e Enumerator <\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d7a\/84f\/ccf\/d7a84fccf9ff4afc90bca5a3e44f3ac5.png\"\/> <a href=\"http:\/\/www.rwpod.com\/posts\/2015\/07\/06\/podcast-03-25.html#.VayQSBOqqkq\">RWpod 25 \u0432\u044b\u043f\u0443\u0441\u043a 03 \u0441\u0435\u0437\u043e\u043d\u0430<\/a> \u2013 Rails vs. Lotus, Rack: Writing middleware, Gkv, ES6 Feature Performance, Spectacle \u0438 \u043f\u0440\u043e\u0447\u0435\u0435 <\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d7a\/84f\/ccf\/d7a84fccf9ff4afc90bca5a3e44f3ac5.png\"\/> <a href=\"http:\/\/www.rwpod.com\/posts\/2015\/07\/14\/podcast-03-26.html#.VayQBhOqqko\">RWpod 26 \u0432\u044b\u043f\u0443\u0441\u043a 03 \u0441\u0435\u0437\u043e\u043d\u0430<\/a> \u2013 Action Cable, JRuby \u2014 Just Ruby, The Evolution of Go, jQuery 3.0 Alpha, Incremental DOM, Pure UI \u0438 \u043f\u0440\u043e\u0447\u0435\u0435<\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d7a\/84f\/ccf\/d7a84fccf9ff4afc90bca5a3e44f3ac5.png\"\/> <a href=\"https:\/\/ruby5.codeschool.com\/episodes\/611-episode-569-july-21st-2015\">Ruby5 Episode #569<\/a> \u2013 high performance caching with Readthis, colorized SQL logging backport for ActiveRecord, RMagick, Gemfiles, and Ruby operators.<\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/d7a\/84f\/ccf\/d7a84fccf9ff4afc90bca5a3e44f3ac5.png\"\/> <a href=\"http:\/\/bikeshed.fm\/24\"> The Bike Shed 24: You Look Good in a Lab Coat (Richard Schneeman)<\/a> \u2013 \u043e\u0431\u0441\u0443\u0436\u0434\u0435\u043d\u0438\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043f\u0430\u043c\u044f\u0442\u0438 \u0432 Ruby, \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043c\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0438 open source<\/li>\n<\/ul>\n<h3>\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/www.nateberkopec.com\/2015\/07\/15\/the-complete-guide-to-rails-caching.html\">Speed Up Your Rails App by 66% \u2014 The Complete Guide to Rails Caching<\/a> \u2013 \u043f\u043e\u0441\u0442 Nate Berkopec \u0441 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e\u043c \u043f\u0440\u0430\u043a\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0445 \u0441\u043e\u0432\u0435\u0442\u043e\u0432 \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u0437\u0430\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0430\u0448\u0435 Rails \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442\u0432\u0435\u0447\u0430\u0442\u044c \u0437\u0430 50-100\u043c\u0441<\/li>\n<li><a href=\"http:\/\/blog.honeybadger.io\/how-unicorn-talks-to-nginx-an-introduction-to-unix-sockets-in-ruby\/\">An introduction to unix sockets in Ruby<\/a> <\/li>\n<li> <a href=\"http:\/\/nithinbekal.com\/posts\/rails-action-cable\/\">Getting started with Rails 5&#8217;s ActionCable and websockets<\/a> \u2013 \u043e\u0442\u043b\u0438\u0447\u043d\u043e\u0435 \u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0432 ActionCable \u0434\u043b\u044f \u043d\u0430\u0447\u0438\u043d\u0430\u044e\u0449\u0438\u0445 <\/li>\n<li> <a href=\"http:\/\/blog.codeship.com\/running-rails-development-environment-docker\/\">Running a Rails Development Environment in Docker<\/a><\/li>\n<li> <a href=\"http:\/\/blog.honeybadger.io\/ruby-guide-environment-variables\/\">The Rubyist\u2019s Guide to Environment Variables<\/a> \u2013 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 Honeybadger \u043e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 \u043e\u043a\u0440\u0443\u0436\u0435\u043d\u0438\u044f, \u0430 \u0432 <a href=\"http:\/\/blog.honeybadger.io\/securing-environment-variables\/\">\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0435\u043d\u0438\u0438<\/a> \u0441\u0442\u0430\u0442\u044c\u0438 \u043e\u043d\u0438 \u0443\u0434\u0435\u043b\u044f\u044e\u0442 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438<\/li>\n<li> <a href=\"http:\/\/blog.skylight.io\/4-easy-ways-to-speed-up-your-rails-app\">4 Easy Ways to Speed Up Your Rails App<\/a><\/li>\n<li> <a href=\"http:\/\/vaidehijoshi.github.io\/blog\/2015\/07\/14\/writing-smart-migrations-references-reversible-and-indexes\/\">Writing Smart Migrations: References, Reversible, and Indexes<\/a><\/li>\n<li> <a href=\"http:\/\/tosbourn.com\/what-is-the-gemfile\/\">What is a Gemfile<\/a> \u2013 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043f\u0440\u043e Gemfile<\/li>\n<\/ul>\n<h3>\u0420\u0435\u043b\u0438\u0437\u044b, \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u044f, \u043d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u044f<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/rails\/actioncable\">Action Cable alpha<\/a> \u2013 DHH \u043e\u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u043b \u0430\u043b\u044c\u0444\u0430-\u0432\u0435\u0440\u0441\u0438\u044e \u0438 <a href=\"https:\/\/github.com\/rails\/actioncable-examples\">\u043f\u0440\u0438\u043c\u0435\u0440\u044b<\/a> \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0433\u043e API \u0434\u043b\u044f WebSockets \u0432 Rails 5 <\/li>\n<li><a href=\"https:\/\/medium.com\/evil-martians\/new-feature-in-rails-5-render-views-outside-of-actions-2fc1181e86a8\">Evil Martians \u2014 Render views outside of actions<\/a> \u2013 \u0440\u0430\u0441\u0441\u043a\u0430\u0437 \u0417\u043b\u044b\u0445 \u041c\u0430\u0440\u0441\u0438\u0430\u043d \u043f\u0440\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0443 \u043d\u043e\u0432\u043e\u0433\u043e API \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043c\u0435\u0442\u043e\u0434\u0430 render \u0432\u043d\u0435 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u043b\u0435\u0440\u0430. \u041d\u043e\u0432\u043e\u0432\u0432\u0435\u0434\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u0432 Rails 5 \u043f\u043e-\u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e, \u0430 \u043f\u043e\u043a\u0430 \u043c\u043e\u0436\u043d\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0432\u0438\u0434\u0435 \u0433\u0435\u043c\u0430 <\/li>\n<li><a href=\"https:\/\/github.com\/rails\/rails\/pull\/17102\">Remove `Rack::Lock` from Rails<\/a><\/li>\n<\/ul>\n<h3>Must-read<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"https:\/\/github.com\/bbatsov\/ruby-style-guide\">The Ruby Style Guide<\/a> \u0438 <a href=\"https:\/\/github.com\/arbox\/ruby-style-guide\/blob\/master\/README-ruRU.md\">\u043f\u0435\u0440\u0435\u0432\u043e\u0434<\/a> \u2013 \u0440\u0430\u0437\u0432\u0435 \u043c\u043e\u0436\u043d\u043e \u043f\u0438\u0441\u0430\u0442\u044c \u043d\u0430 Ruby \u0445\u043e\u0440\u043e\u0448\u043e, \u043d\u0435 \u043f\u0440\u043e\u0447\u0438\u0442\u0430\u0432 \u044d\u0442\u043e? <\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=WpkDN78P884\">Architecture the Lost Years by Robert Martin \u2014 Ruby Midwest 2011<\/a> (1:06:38) \u2013 \u044d\u043f\u0438\u0447\u043d\u043e\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u0420\u043e\u0431\u0435\u0440\u0442\u0430 \u041c\u0430\u0440\u0442\u0438\u043d\u0430 \u0441 \u043a\u0440\u0438\u0442\u0438\u043a\u043e\u0439 Rails Way, \u043a\u0440\u0430\u0442\u043a\u043e\u0439 \u0438\u0441\u0442\u043e\u0440\u0438\u0435\u0439 \u041e\u041e\u041f \u0438 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0441\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c\u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u043c\u0438 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u044b \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439<\/li>\n<li><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/f22\/161\/15a\/f2216115a374421495df9864acc847f0.png\"\/> <a href=\"https:\/\/www.youtube.com\/watch?v=8bZh5LMaSmE\">RailsConf 2014 \u2014 All the Little Things by Sandi Metz<\/a> (38:46) \u2013 \u043e\u0447\u0435\u0440\u0435\u0434\u043d\u043e\u0435 \u0431\u043b\u0435\u0441\u0442\u044f\u0449\u0435\u0435 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 Sandi Metz \u043e \u043f\u043e\u043b\u044c\u0437\u0435 \u0433\u043e\u043b\u043e\u0432\u044b \u043f\u0440\u0438 \u041e\u041e \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 <\/li>\n<li> <a href=\"http:\/\/hawkins.io\/2012\/07\/advanced_caching_revised\/\">Advanced Caching in Rails<\/a> \u2013 \u0441\u0435\u0440\u0438\u044f \u0441\u0442\u0430\u0442\u0435\u0439 Adam Hawkins, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u043d\u0430\u0443\u0447\u0438\u0442 \u0432\u0430\u0441 \u0432\u0441\u0435\u043c\u0443, \u0447\u0442\u043e \u0441\u0432\u044f\u0437\u0430\u043d\u043e \u0441 \u043a\u044d\u0448\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0432 Rails \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f\u0445<\/li>\n<li> <a href=\"https:\/\/medium.com\/@rdsubhas\/ruby-in-production-lessons-learned-36d7ab726d99\">Ruby in Production: Lessons Learned<\/a> \u2013 \u0432\u0441\u0435, \u0447\u0442\u043e \u043d\u0443\u0436\u043d\u043e \u0437\u043d\u0430\u0442\u044c \u043e \u0434\u0435\u043f\u043b\u043e\u0435 Rails \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 + \u0448\u0430\u0431\u043b\u043e\u043d \u043d\u0430 \u0433\u0438\u0442\u0445\u0430\u0431\u0435<\/li>\n<li> <a href=\"http:\/\/blog.codeclimate.com\/blog\/2012\/10\/17\/7-ways-to-decompose-fat-activerecord-models\/\">7 Patterns to Refactor Fat ActiveRecord Models<\/a> \u2013 \u0431\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0432\u0430\u0448\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0441\u043a\u043e\u0440\u043e \u043d\u0430\u0447\u043d\u0443\u0442 \u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0442\u044c \u0432\u0430\u043c \u0431\u043e\u043b\u044c \u0438 \u0441\u0442\u0440\u0430\u0434\u0430\u043d\u0438\u044f. \u0422\u0430\u043a\u0436\u0435, \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e <a href=\"https:\/\/www.youtube.com\/watch?v=IqajIYxbPOI\">\u0432\u0438\u0434\u0435\u043e<\/a><\/li>\n<\/ul>\n<h3>\u0412\u0441\u0442\u0440\u0435\u0447\u0438 \u0438 \u043a\u043e\u043d\u0444\u0435\u0440\u0435\u043d\u0446\u0438\u0438<\/h3>\n<p>  <\/p>\n<ul>\n<li><a href=\"http:\/\/habrahabr.ru\/company\/rambler-co\/blog\/261997\/\">23 \u0438\u044e\u043b\u044f RailsClub Ruby meetup \u21162 \u0432 \u043e\u0444\u0438\u0441\u0435 Rambler&#038;Co<\/a> <\/li>\n<li><a href=\"http:\/\/railsclub.ru\/\">26 \u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f RailsClub Moscow 2015<\/a> <\/li>\n<\/ul>\n<div class=\"polling\">\n<form action=\"\/json\/polling\/\" class=\"poll\" method=\"post\">\n<div class=\"poll_title\">\u041a\u0430\u043a\u0438\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432 \u0432 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0435 \u043c\u043e\u0436\u0435\u0442 \u0431\u044b\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435?<\/div>\n<p>  \t\t<input type=\"hidden\" name=\"post_id\" value=\"263047\"\/> \t\t<input type=\"hidden\" name=\"polling_question_id\" value=\"13825\"\/>  \t\t<\/p>\n<table class=\"answer\">\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv68079\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"68079\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv68079\">\u0412\u0438\u0434\u0435\u043e\/\u0441\u043a\u0440\u0438\u043d\u043a\u0430\u0441\u0442\u044b<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv68081\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"68081\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv68081\">\u041c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b \u043d\u0430 \u0440\u0443\u0441\u0441\u043a\u043e\u043c \u044f\u0437\u044b\u043a\u0435<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv68083\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"68083\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv68083\">\u0411\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f \u043a \u0441\u0441\u044b\u043b\u043a\u0430\u043c<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv68085\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"68085\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv68085\">\u041e\u0431\u0443\u0447\u0430\u044e\u0449\u0438\u0435 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u044b<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv68087\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"68087\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv68087\">\u0420\u0435\u0446\u0435\u043d\u0437\u0438\u0438 \u043d\u0430 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u043a\u043d\u0438\u0433\u0438<\/label> \t\t\t\t<\/td>\n<\/tr>\n<tr>\n<td class=\"input\"> \t\t\t\t\t<input type=\"checkbox\" id=\"vv68089\" \t\t\t\t\t\tclass=\"checkbox js-field-data\" \t\t\t\t\t\tname=\"variant[]\" \t\t\t\t\t\tvalue=\"68089\" \/> \t\t\t\t<\/td>\n<td class=\"label\"> \t\t\t\t\t<label for=\"vv68089\">\u041e\u0431\u0437\u043e\u0440 \u0433\u0435\u043c\u043e\u0432<\/label> \t\t\t\t<\/td>\n<\/tr>\n<\/table>\n<p class=\"total\">\u041d\u0438\u043a\u0442\u043e \u0435\u0449\u0451 \u043d\u0435 \u0433\u043e\u043b\u043e\u0441\u043e\u0432\u0430\u043b. \u0412\u043e\u0437\u0434\u0435\u0440\u0436\u0430\u0432\u0448\u0438\u0445\u0441\u044f \u043d\u0435\u0442.<\/p>\n<\/p><\/form>\n<p class=\"for_users_only_msg\">\u0422\u043e\u043b\u044c\u043a\u043e \u0437\u0430\u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0438 \u043c\u043e\u0433\u0443\u0442 \u0443\u0447\u0430\u0441\u0442\u0432\u043e\u0432\u0430\u0442\u044c \u0432 \u043e\u043f\u0440\u043e\u0441\u0435. <a href=\"https:\/\/habrahabr.ru\/auth\/login\/\">\u0412\u043e\u0439\u0434\u0438\u0442\u0435<\/a>, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430.<\/p>\n<\/p><\/div>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/263047\/\"> http:\/\/habrahabr.ru\/post\/263047\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>     \t<img decoding=\"async\" src=\"https:\/\/habrastorage.org\/files\/451\/1eb\/188\/4511eb1880e64f8a8c3dd62f59fd11c4.png\"\/><\/p>\n<p>  \u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u042f \u0440\u0430\u0431\u043e\u0442\u0430\u044e <a href=\"http:\/\/habrahabr.ru\/company\/at_consulting\/profile\/\">AT Consulting<\/a> \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043a\u043e\u043c\u0430\u043d\u0434\u0443 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u043f\u043e\u0440\u0442\u0430\u043b\u0430 Beeline.kz, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043c\u044b \u043f\u0438\u0448\u0435\u043c \u043d\u0430 Ruby on Rails. \u041f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0432 \u043d\u0430\u0448\u0435\u0439 \u0441\u0444\u0435\u0440\u0435 \u0431\u044b\u0441\u0442\u0440\u043e \u0443\u0441\u0442\u0430\u0440\u0435\u0432\u0430\u0435\u0442, \u043f\u0440\u0438\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043f\u043e\u0441\u0442\u043e\u044f\u043d\u043d\u043e \u0441\u043b\u0435\u0434\u0438\u0442\u044c \u0437\u0430 \u043d\u043e\u0432\u043e\u0441\u0442\u044f\u043c\u0438 \u0438 \u043e\u0431\u0443\u0447\u0430\u0442\u044c\u0441\u044f \u043d\u043e\u0432\u044b\u043c \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f\u043c. \u041f\u043e \u043c\u0435\u0440\u0435 \u043d\u0430\u043a\u043e\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u043e\u0432\u043e\u0441\u0442\u0435\u0439 \u0438 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u0441\u0432\u044f\u0437\u0430\u043d\u043d\u044b\u0445 \u0441 Ruby, \u044f \u0431\u0443\u0434\u0443 \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c Ruby-\u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442.<br \/>  \u0411\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u044f \u0441\u043e\u0431\u0440\u0430\u043b \u0432 \u0434\u0430\u0439\u0434\u0436\u0435\u0441\u0442\u0435, \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u044b \u043d\u0430 \u0430\u043d\u0433\u043b\u0438\u0439\u0441\u043a\u043e\u043c, \u043d\u043e \u044f \u043d\u0430\u0434\u0435\u044e\u0441\u044c, \u0447\u0442\u043e \u044d\u0442\u043e \u043d\u0435 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430, \u0432\u0435\u0434\u044c \u043f\u0435\u0440\u0432\u044b\u0439 \u0448\u0430\u0433 \u043a Ruby \u2013 \u044d\u0442\u043e \u0438\u0437\u0443\u0447\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u0430.  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-262031","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262031","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=262031"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/262031\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=262031"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=262031"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=262031"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}