2017-05-22 3 views
-1

Ich habe ein Projekt auf Heroku bereitgestellt und erhalte derzeit einen "TypeError (keine implizite Umwandlung von Nil in String)" in meinen Heroku-Logs, wenn ich es versuche und Anmeldung.TypeError (keine implizite Konvertierung von Nil in String) beim Anmelden bei Heroku

Es funktioniert gut lokal, so bin ich mir nicht sicher, was schief läuft.

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' 

Ich denke, es sagt etwas falsch in meinem entweder auth.rb oder meine Auth-Controller wird, aber kann nicht sehen, wo.

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 

Sie einen Blick auf die volle Repo haben HERE, wenn nötig.

Jede Hilfe würde massiv geschätzt werden!

+0

Ich denke nicht, 'Nutzlast [: exp] = expiry_in_minutes.minutes.from_now.to_i' Diese Linie wird Arbeit, dies kann Sie einen anderen Fehler werfen sagen 'undefined Methode' Minuten 'für Fixnum' – Sravan

+0

sollten Sie nicht 'Daten' in der Nutzlast ?, vielleicht anstelle von' id: user.id' was Sie brauchen, ist 'Daten : user.id'. Da bin ich mir nicht sicher, ich habe JWT Juwel noch nie benutzt. – fanta

+0

Ich habe es genau so geschrieben und es hat absolut funktioniert, also bin ich mir nicht sicher, warum es diesmal nicht funktioniert. Es funktioniert, wenn ich es auf localhost ausführe, erst nachdem ich es auf Heroku bereitgestellt habe, hat es diesen Fehler. Ich habe andere Beiträge gelesen, die nahelegen, dass es mit der Gem-Datei zu tun sein könnte, aber ich habe das ebenfalls aktualisiert und funktioniert immer noch nicht. –

Antwort

1

Es stellte sich heraus (aus den Kommentaren), dass es eine fehlende Umgebungsvariable gab. Die Einstellung in Heroku erfolgt vom Terminal/Konsole aus.

heroku config:set MY_VARIABLE=myvalue 

die Liste der Umgebungsvariablen zu erhalten ist genauso gut mit

heroku config 
# MY_VARIABLE: myvalue 

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

Verwandte Themen