拙作のgem、omniauth-lineを更新しました。
理由としては以下のPRの通りで、omniauth-oauth2の方の更新でcallback_urlメソッドが無くなってしまったので継承してるこっちのクラスで実装する必要ができた感じです。 恥ずかしながらcallback_urlメソッドが無くなった経緯は存じ上げません。。。。
ぶっちゃけ自分はもうこのgemを使ってないどころかRubyすらここ2~3年書いてない状態で、gemの更新もサボっていました。ただ、全く動かなくなるとか、セキュリティ的に問題があるgemに依存してるとかは流石に放置するわけには行かないなということでようやく重い腰を上げたわけです。
で、更新するためにはいろいろ環境を整える必要があるんですが、これがけっこう大変でした。なんせ2~3年Rubyに触れてないわけで完全に浦島太郎状態です。自分が触っていた頃はRubyはまだ2.2か2.3あたりが主流だったんですが、今となっては3.0が最新とのことで時代を感じてしまいます。
Railsも同様に進歩しててこちらは環境構築すらままなりません。Rubyはrbenvを入れればすんなりMacに入ってくるんですが、Railsは起動するためにいろいろやることが多いフレームワークです。まず入れるGemがめっちゃ多いですし、NativeExtensionもばりばり入ってたりします。
ということで、Docker上でRubyを入れてSinatraサーバを構築するようにdockerfileを作ってみました。おそらく殆どの人がRails上で使うgemの動作確認をSinatraで取っていいのか?という気もしますが、基本的な機能は同じように動くはずなのでよしとしましょう。
やってることは単純ですが、Omniauthのrequest_phaseがDefaultでPostメソッドしか許可されなくなったので、サンプルページのFormだけいい感じにする必要があります
get "/" do erb <<-"EOS" <form method='post' action='/auth/line'> <input type="hidden" name="authenticity_token" value='#{request.env["rack.session"]["csrf"]}'> <button type='submit'>Login with Line</button> </form> EOS end
https://github.com/kazasiki/test-omniauth-line/blob/master/app.rb#L17-L24
あとはDockerfileでRuby2.7のイメージを使って必要なGemを入れて、docker-composeの方で必要なポート開けたりSinatraの起動コマンド実行してるだけです。認証周りの情報は.envファイルで入れるようにしてます。
どれくらいomniauth-lineを使ってる人がいるのかはわかりませんが、更新が遅れてしまい申し訳ありませんでした。また、PRくださった方ありがとうございました。