前提・実現したいこと
Knockというgemを使いJWT認証を実装したRails6のアプリをHerokuにデプロイしました。
認証については「Auth0」で作る!認証付きシングルページアプリケーションという本を参考にしました。
ローカル環境だと問題なくログインできるのですが、開発環境ではログインできず、500エラーが発生します。
heroku logs --tail
でログを調べたところ以下のようになり、``TypeError (no implicit conversion of nil into String):`というエラーが発生しておりました。
どこに原因があるのか全くわからないので、お力を貸していただけると助かります。
発生している問題・エラーメッセージ
$ heroku logs --tail 2020-03-17T05:20:49.755460+00:00 app[web.1]: I, [2020-03-17T05:20:49.755320 #4] INFO -- : [16022dde-fca1-4bd1-b15d-841c2b177eba] Started POST "/api/v1/user_token" for 101.140.226.52 at 2020-03-17 05:20:49 +0000 2020-03-17T05:20:49.756895+00:00 app[web.1]: I, [2020-03-17T05:20:49.756813 #4] INFO -- : [16022dde-fca1-4bd1-b15d-841c2b177eba] Processing by Api::V1::UserTokenController#create as HTML 2020-03-17T05:20:49.757000+00:00 app[web.1]: I, [2020-03-17T05:20:49.756922 #4] INFO -- : [16022dde-fca1-4bd1-b15d-841c2b177eba] Parameters: {"auth"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]"}, "user_token"=>{"auth"=>{"email"=>"test@gmail.com", "password"=>"[FILTERED]"}}} 2020-03-17T05:20:49.824130+00:00 app[web.1]: D, [2020-03-17T05:20:49.823925 #4] DEBUG -- : [16022dde-fca1-4bd1-b15d-841c2b177eba] User Load (1.5ms) SELECT "users".* FROM "users" WHERE "users"."email" = $1 LIMIT $2 [["email", "test@gmail.com"], ["LIMIT", 1]] 2020-03-17T05:20:50.189727+00:00 heroku[router]: at=info method=POST path="/api/v1/user_token" host=appname.herokuapp.com request_id=16022dde-fca1-4bd1-b15d-841c2b177eba fwd="101.140.226.52" dyno=web.1 connect=0ms service=438ms status=500 bytes=189 protocol=https 2020-03-17T05:20:50.186220+00:00 app[web.1]: I, [2020-03-17T05:20:50.186095 #4] INFO -- : [16022dde-fca1-4bd1-b15d-841c2b177eba] Completed 500 Internal Server Error in 429ms (ActiveRecord: 27.5ms | Allocations: 2435) 2020-03-17T05:20:50.188043+00:00 app[web.1]: F, [2020-03-17T05:20:50.187913 #4] FATAL -- : [16022dde-fca1-4bd1-b15d-841c2b177eba] 2020-03-17T05:20:50.188044+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] TypeError (no implicit conversion of nil into String): 2020-03-17T05:20:50.188046+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] 2020-03-17T05:20:50.188047+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] jwt (1.5.6) lib/jwt.rb:75:in `digest' 2020-03-17T05:20:50.188048+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] jwt (1.5.6) lib/jwt.rb:75:in `sign_hmac' 2020-03-17T05:20:50.188048+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] jwt (1.5.6) lib/jwt.rb:36:in `sign' 2020-03-17T05:20:50.188049+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] jwt (1.5.6) lib/jwt.rb:96:in `encoded_signature' 2020-03-17T05:20:50.188049+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] jwt (1.5.6) lib/jwt.rb:106:in `encode' 2020-03-17T05:20:50.188061+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] knock (2.1.1) app/model/knock/auth_token.rb:14:in `initialize' 2020-03-17T05:20:50.188062+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] knock (2.1.1) app/controllers/knock/auth_token_controller.rb:22:in `new' 2020-03-17T05:20:50.188063+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] knock (2.1.1) app/controllers/knock/auth_token_controller.rb:22:in `auth_token' 2020-03-17T05:20:50.188064+00:00 app[web.1]: [16022dde-fca1-4bd1-b15d-841c2b177eba] knock (2.1.1) app/controllers/knock/auth_token_controller.rb:8:in `create' ...
該当のソースコード
rb
1 2# user_token_controller.rb 3 4module Api 5 module V1 6 class UserTokenController < Knock::AuthTokenController 7 skip_before_action :verify_authenticity_token, raise: false 8 end 9 end 10end
試したこと
https://qiita.com/at-946/items/a656a2672659f15b6544を参考にheroku run rails app:update:bin
というコマンドを実行してみましたが変わりませんでした。
補足情報(FW/ツールのバージョンなど)
Ruby on Rails 6.0.2
回答1件
あなたの回答
tips
プレビュー