部署到Heroku时,在登录时出现TypeError(nil没有隐式转换为String)

时间:2017-05-22 10:31:43

标签: ruby-on-rails ruby heroku

我将一个项目部署到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

任何帮助都会受到大力赞赏!

1 个答案:

答案 0 :(得分:2)

事实证明(来自评论),缺少环境变量。在终端/控制台中设置heroku中的那些就像这样。

heroku config:set MY_VARIABLE=myvalue

使用

获取环境变量列表同样令人愉快
heroku config
# MY_VARIABLE:   myvalue 

https://devcenter.heroku.com/articles/config-vars