如何透過 Warbler 在 JVM 上部署 Rails 應用

48100c6a1c35816b467fb617ffd4cc1f?s=47 Jason Lee
September 11, 2015

如何透過 Warbler 在 JVM 上部署 Rails 應用

48100c6a1c35816b467fb617ffd4cc1f?s=128

Jason Lee

September 11, 2015
Tweet

Transcript

  1. 如何透過 Warbler 在 JVM 上部署 Rails 應⽤用 Jason Lee (LeeChSien)

    chsienlee@gmail.com 2015 / 09 / 11
  2. 關於我 • 李致賢 (Jason Lee) a.k.a LeeChSien • 即將畢業於政治⼤大學 (NCCU

    CS Master) • as a Ruby Developer since 2012 • Web Developer in
  3. 想⽤用 Ruby / Rails 來開發產品, 但是...

  4. 客⼾戶的環境 你想像中

  5. 客⼾戶的環境 實際的情形

  6. 客⼾戶的環境 • 環境沒有 Ruby Runtime • 產品需要封裝 (保護 Source Code)

    • Windows Only….
  7. Charles Nutter @ Taipei (2014/04/29)

  8. 嘗試使⽤用 JRuby ?

  9. JRuby Write once, run anywhere

  10. JRuby

  11. 如何使⽤用 JRuby 開發?

  12. JRuby 版本⽐比較 JRuby 1.7.0 Ruby 1.9.3 JRuby 1.7.4 Ruby 2.0

    JRuby 9.0.0.0 Ruby 2.2
  13. 使⽤用相容的 Gems • For example:activerecord-jdbc-adapter

  14. Migrate from MRI Rails 4.2 • byebug -> disable •

    web-console -> disable • binding_of_caller • therubyracer -> therubyrhino
  15. C Extension Alternatives • Nokogiri - pure java version •

    RMagick - RMagick4J • therubyracer - therubyrhino JRuby Wiki:C-Extension-Alternatives
  16. Thread-safety • Rails 本⾝身是 Thread-safe • 第三⽅方 Gems 必須是 Thread-safe

    • Sidekiq Wiki:Problems-and-Troubleshooting#threading • 你的程式碼必須是 Thread-safe
  17. Thread-safety • Global variables • Class variables • Class instance

    variables
  18. Race condition

  19. None
  20. Memoization

  21. None
  22. None
  23. Mutex Lock

  24. None
  25. Archive Your App with Warbler

  26. Warbler • Warbler 將你的 App 打包為可執⾏行的 .war files https://github.com/jruby/warbler •

    Start Server? • Rake task?
  27. Warbler • Configuration • warble.rb • web.xml.erb Warbler 1.4.X JRuby

    1.7.X Warbler 2.0.0 rc JRuby 9.0.0.0
  28. Compile .rb to .class warble.rb

  29. Compile .rb to .class

  30. JRuby-rack-worker web.xml.erb https://github.com/kares/jruby-rack-worker

  31. Unlimited Strength Crypto • Install the "Unlimited Strength" policy files

    from Oracle • Disable the crypto restriction programmatically JRuby Wiki:UnlimitedStrengthCrypto
  32. Tzinfo-data • No timezone data source could be found.
 To

    resolve this, either install TZInfo::Data
  33. Demo https://github.com/LeeChSien/rails-warbler-boilerplate

  34. Another Choice - TorqueBox

  35. Thank you!