Madogiwa Blog

主に技術系の学習メモに使っていきます。

オレオレWebフレームワークのv0.1.2をリリースしました🥳

オレオレWebフレームワークのv0.1.2をリリースしました🥳

github.com

今回のアップデートで、unicornpumaといったRack::Handlerに対応したアプリケーションサーバーであれば好きなものを使えるようになりました🙌

変更方法は簡単でGemfileアプリケーションサーバーのgemを追加してMakanai::Settingsの値を変更してあげるだけです👍

pumaを使う場合は、Gemfilepumaを追加して、

gem 'puma'

下記のようにhandlerpumaを指定して、

require 'makanai/main'

Makanai::Settings.rack_app_config = { 
  handler: :puma,
  host: '0.0.0.0',
  port: '8080' 
}

router.get '/' do
  'Hello Makanai!'
end

起動してあげるだけです🙆‍♂️

$ ruby app.rb 
Puma starting in single mode...
* Version 4.3.1 (ruby 2.7.0-p0), codename: Mysterious Traveller
* Min threads: 0, max threads: 16
* Environment: development
* Listening on tcp://0.0.0.0:8080
Use Ctrl-C to stop

unicornを使う場合は、素のunicornRack::Handlerに対応してないので、unicorn-railsを使うと良い感じに起動できます🦄

gem 'unicorn-rails'
require 'makanai/main'
require 'unicorn-rails'

Makanai::Settings.rack_app_config = { 
  handler: :unicorn,
  host: '0.0.0.0',
  port: '8080' 
}

router.get '/' do
  'Hello Makanai!'
end
$ be ruby app.rb 
I, [2020-02-23T18:36:35.750377 #4936]  INFO -- : listening on addr=0.0.0.0:8080 fd=13
I, [2020-02-23T18:36:35.750546 #4936]  INFO -- : worker=0 spawning...
I, [2020-02-23T18:36:35.751820 #4936]  INFO -- : master process ready
I, [2020-02-23T18:36:35.752928 #4950]  INFO -- : worker=0 spawned pid=4950
I, [2020-02-23T18:36:35.753498 #4950]  INFO -- : worker=0 ready

仕組みとしてはhandlerで指定した値でRack::Handler.getを利用してRack::Handlerに対応したサーバーのClassを取得して起動しているという感じですね👀

www.rubydoc.info

Rack便利!!✨

(次は複数のDBMSに対応しようと思っているのですがRackみたいに共通のルールが整備されてないので大変😇)