Save 37% off PRO during our Black Friday Sale! »

[ITeaConf 2021] Как дела, Руби?

[ITeaConf 2021] Как дела, Руби?

https://iteaconf.ru

----

Вакансии Злых марсиан: https://career.habr.com/companies/evilmartians

52cc8a838bf44a589d2572833b2dd1b9?s=128

Vladimir Dementyev

November 14, 2021
Tweet

Transcript

  1. WHAT'S UP, RUBY? by Vladimir Dementyev

  2. palkan_tula palkan Почему про Ruby? 2 github.com/palkan evilmartians.com

  3. palkan_tula palkan Место Ruby в мире веб-разработки 3 jetbrains.com/lp/devecosystem-2021/

  4. palkan_tula palkan Место Ruby в мире веб-разработки 4 redmonk.com/sogrady/2021/08/05/language-rankings-6-21/

  5. palkan_tula palkan Под капотом — Ruby 5

  6. palkan_tula palkan 6 Язык для чтения

  7. palkan_tula palkan 7 No bothersome semicolons to type mechanically at

    the end of each line No troublesome type declarations to keep in sync (especially in separate files) No unnecessary words just to keep the compiler happy No error-prone framework code
  8. palkan_tula palkan 8 Ruby is designed to make programmers happy

    It allows you to concentrate on the creative side of programming, with less stress Matz (Yukihiro Matsumoto)
  9. palkan_tula palkan Родословная 9 rigaux.org/language-study/diagram.html

  10. palkan_tula palkan Доска почёта 10 2008 RSpec 2005 2007 2011

    2006
  11. palkan_tula palkan Доска почёта 11 2008 RSpec 2005 2007 2011

    2006 2005
  12. palkan_tula palkan Йеси-паси 12

  13. palkan_tula palkan Атака Rails клонов 13

  14. palkan_tula palkan Ruby заражает 14

  15. palkan_tula palkan Так как там Ruby? 15 isrubydead.com

  16. palkan_tula palkan Ruby 2021 16 def beach(*temperature) case temperature in

    :celcius | :c, (20 ..45) :favorable in :kelvin | :k, (293 ..318) :scientifically_favorable in :fahrenheit | :f, (68 ..113) :favorable_in_us else :avoid_beach end end
  17. palkan_tula palkan Ruby 2021 17 RBS (Type Signatures for Ruby)

  18. palkan_tula palkan Ruby 2021 18 server = Ractor.new do puts

    "Server sends: ping" Ractor.yield 'ping' received = Ractor.receive puts "Server received: #{received}" end client = Ractor.new(server) do |srv| received = srv.take puts "Client received: #{received}" puts "Client sends: pong" srv.send 'pong' end [client, server].each(&:take) Ractor — Ruby actor
  19. palkan_tula palkan Ruby — вампир 🤔 19

  20. palkan_tula palkan Ruby Type Signatures 20 I hate type annotations

    Аннотации типов — это костыль Если мы добавим типы в язык, то их сложно будет убрать из него в будущем, когда вывод типов будет полностью автоматическим
  21. palkan_tula palkan TypeProf 21 github.com/ruby/typeprof

  22. evl.ms/chronicles/climbing-steep-hills-or-adopting-ruby-types

  23. palkan_tula palkan Пессимисты 23 sorbet.org

  24. palkan_tula palkan 24

  25. palkan_tula palkan Ractor 25 Настоящий параллелизм, или прощай GIL brandur.org/nanoglyphs/018-ractors

  26. palkan_tula palkan Ruby-трёшка 26

  27. palkan_tula palkan Ractor 27 Не любит делиться — сложно ему

    будет в нашем мире Ractor.shareable?(1) # => true Ractor.shareable?('foo') # => false Ractor.shareable?('foo'.freeze) # => true
  28. palkan_tula palkan Ruby-трёшка+ 28

  29. palkan_tula palkan Fiber 29 Кооперативная многозадачность

  30. palkan_tula palkan Fiber 30 От полностью ручного управления к автоматическому

    Ruby 2 Ruby 3
  31. palkan_tula palkan Fiber Scheduler 31 Интерфейс, не реализация

  32. palkan_tula palkan Fiber Scheduler 32 Интерфейс, не реализация Without changing

    existing code 🙀
  33. palkan_tula palkan Приоритеты 33

  34. palkan_tula palkan Совместимость 34

  35. palkan_tula palkan Совместимость 35 В обе стороны 🙃 evilmartians.com/blog/ruby-next-make-all-rubies-quack-alike

  36. palkan_tula palkan От Ruby к Rails 36

  37. palkan_tula palkan Just-in-Time 37 rubykaigi.org/2021-takeout/presentations/maximecb.html

  38. palkan_tula palkan Rails 7 38

  39. palkan_tula palkan Rails 7 frontend 39

  40. palkan_tula palkan Кризис веб-разработки 40

  41. palkan_tula palkan Rails 2021 41 Full-stack возвращается noti.st/palkan/v01SxZ/frontend-bez-frontenda

  42. palkan_tula palkan Full-stack Rails 42 HTML-over-the-Wire

  43. palkan_tula palkan NEW MAGIC 43 hotwired.dev

  44. palkan_tula palkan Hotwire 44 Turbo Drive (ex-Turbolinks) и Frames —

    SPA «для бедных» Turbo Streams — обновление HTML через WebSockets Stimulus — «живая вода» для HTML
  45. palkan_tula palkan Stimulus 45

  46. palkan_tula palkan Hotwire 46 evilmartians.com/blog/hotwire-reactive-rails-with-no-javascript

  47. palkan_tula palkan Stimulus Reflex 47 docs.stimulusreflex.com Hotwire для взрослых

  48. palkan_tula palkan Sockpuppet 48 github.com/jonathan-s/django-sockpuppet

  49. palkan_tula palkan View Component 49 HTML компоненты на Ruby viewcomponent.org

  50. palkan_tula palkan View Component 50 # app/components/button/component.rb class Button ::Component

    < ViewComponent ::Base attr_reader :label, :icon def initialize(label:, icon: nil) @label = label @icon = icon end alias icon? icon end # app/components/button/component.html.erb <button class="btn"> <% if icon? %> <i><%= icon %> </i> <% end %> <% == label %> </button>
  51. palkan_tula palkan Монолит или..? 51

  52. palkan_tula palkan Модульный монолит 52

  53. palkan_tula palkan Rails Engines 53

  54. palkan_tula palkan Shopify 54 shopify.engineering/shopify-monolith

  55. palkan_tula palkan Hanami 55 Не Рельсами едиными hanamirb.org

  56. palkan_tula palkan Подготовка к запуску 56 Вы всё ещё используете

    Capistrano?..
  57. palkan_tula palkan Kuby 57 getkuby.io

  58. palkan_tula palkan Kuby 58 Kuby.define("anycable-rails-demo") do environment(:production) do app_creds =

    read_creds(:production) docker do credentials do username app_creds[:do_token] password app_creds[:do_token] end image_url "registry.digitalocean.com/anycable/anycable-rails-demo" end kubernetes do add_plugin :rails_app do hostname "kuby-demo.anycable.io" end add_plugin :anycable_rpc add_plugin :anycable_go provider :digitalocean do access_token app_creds[:do_token] cluster_id app_creds[:do_cluster_id] end end end end На выходе сотни строк кода для Docker и Kubernetes kuby setup && kuby build && kuby push && kuby deploy
  59. palkan_tula palkan Пост-Ruby 59

  60. СПАСИБО! @palkan @palkan_tula evilmartians.com @evilmartians