はじめに
エンジニアとして就職して約1年、 久しぶりにRuby を書いてみたいなぁ、とふと思う。
最近流行りで弊社でもガンガン採用しているサーバーレスで実装しようということに。
「サーバーレス Ruby」 で検索すると一番最初にヒットした Ruby on Jets
すごい使いやすそう。。ほぼrails と使い方も同じだし。。
と思ったがいろいろとハマって腹がたったので記事にしましたww
腹立ちポイント
(その1) ruby 2.6 だけサポートされてない。
Ruby on Jets がサポートしている ruby のバージョンは 2.5 と 2.7 らしいです。
2.6 でもアプリの作成はできますが、デプロイでこけます。
(その2) jets deploy でハマった
$ jets deploy
(省略)
Command Failed cd /tmp/jets/jetsdemo/stage/opt && unzip -qo /tmp/jets/jetsdemo/serverlessgems/downloads/gems/nokogiri-1.11.5.zip > /dev/null 2>&1
これはおそらく Ruby on Rails でも起こるやつだと思いますが書きました。
$ jets clean:build
で解決
バージョン2.6 から 2.7 に変更したことによるものだと思ってます。
(その3) Serverlessgems のは無料枠にはRate Limitがある
jets deploy するときに、デフォでServerlessgems を使用することになっているのだが、その使用回数には制限があるらしいです。
$ jets deploy
(省略)
ERROR: Limit Reached. This project cannot be deployed.
You have used 31 out of 30
Your current plan: Free
Please upgrade your plan or wait until your download limit resets.
Your download limit resets every day.
https://rubyonjets.com/docs/extras/ruby-versions/
https://zenn.dev/shibata/articles/94257ebd2d33c4
解決策
(その1)
Serverlessgems 有料プラン登録
月50ドル〜 プランがいくつかあります。
これでRatelimit 問題は解決できますね。
(その2) jets deploy 時に Serverlessgems を使用しない
Jets.application.configure do
config.gems.disable = true
end
カスタムレイヤーの作成を自身で作成すれば serverlessgems を利用しなくともデプロイ可能です。
(その3) Serverless Framework でデプロイ
Serverless Framework の serverless-ruby-layerというプラグインを使えば結構簡単にデプロイできます。
こうなると、もはやRuby on Jetsである必要はないですね。 Ruby on Rails でも Sinatra でもフレームワーク使わなくても大丈夫です。
おわりに
やっぱり Serverless Framework のruntime rubyに方が使い勝手いいかもしれないです。
あとは、新しいフレームワーク使う時はちゃんとドキュメント一通り読んでから始めた方がいいですね。笑
あまりにも見切り発車すぎるとしょーもないとこで詰まっちゃうんで。