我将一个项目部署到Heroku,目前正在获得一个" TypeError(没有将nil隐式转换为String)"在我尝试登录时,在我的heroku日志中。
它在当地运作良好,所以我不确定出了什么问题。
2017-05-22T09:28:53.701881+00:00 app[web.1]: I, [2017-05-22T09:28:53.701785 #4] INFO -- : [9748b196-6755-447a-a783-
03e1d4636790] Completed 500 Internal Server Error in 76ms (ActiveRecord: 1.0ms)
2017-05-22T09:28:53.624924+00:00 app[web.1]: I, [2017-05-22T09:28:53.624813 #4] INFO -- : [9748b196-6755-447a-a783-03e1d4636790] Started POST "/login" for 81.154.127.158 at 2017-05-22 09:28:53 +0000
2017-05-22T09:28:53.702530+00:00 app[web.1]: F, [2017-05-22T09:28:53.702491 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790]
2017-05-22T09:28:53.702586+00:00 app[web.1]: F, [2017-05-22T09:28:53.702545 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790] lib/auth.rb:8:in `issue'
2017-05-22T09:28:53.702441+00:00 app[web.1]: F, [2017-05-22T09:28:53.702368 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790]
2017-05-22T09:28:53.702489+00:00 app[web.1]: F, [2017-05-22T09:28:53.702444 #4] FATAL -- : [9748b196-6755-447a-a783-03e1d4636790] TypeError (no implicit conversion of nil into String):
2017-05-22T09:28:53.702587+00:00 app[web.1]: [9748b196-6755-447a-a783-03e1d4636790] app/controllers/authentications_controller.rb:16:in `login'
我认为在我的auth.rb或我的身份验证控制器中说某些内容出错了,但无法查看位置。
LIB / auth.rb:
def self.issue(payload, expiry_in_minutes=60*24*30)
payload[:exp] = expiry_in_minutes.minutes.from_now.to_i
JWT.encode(payload, auth_secret, ALGORITHM)
end
authentications_controller.rb:
def login
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
token = Auth.issue({ id: user.id })
render json: { token: token, user: UserSerializer.new(user) }, status: :ok
else
render json: { errors: ["Invalid login credentials."] }, status: 401
end
end
如果需要,您可以查看完整的回购HERE。
任何帮助都会受到大力赞赏!
答案 0 :(得分:2)
事实证明(来自评论),缺少环境变量。在终端/控制台中设置heroku中的那些就像这样。
heroku config:set MY_VARIABLE=myvalue
使用
获取环境变量列表同样令人愉快heroku config
# MY_VARIABLE: myvalue