2016-07-08 1 views
0

Je crée une gemme locale en utilisant httparty pour se connecter à un site Web spécifique pour obtenir un jeton d'authentification. J'ai pu obtenir le programme pour récupérer auth_token quand j'ai entré l'email et le mot de passe corrects. Cependant, si je mets le mauvais email/mot de passe, il retourne: NameError: uninitialized constant Gemname::InvalidStudentCodeErrormauvais nom d'utilisateur/mot de passe erreur de gestion en utilisant httparty

require 'httparty' 
class Gemname 
    include HTTParty 

    def initialize(email, password) 
    response = self.class.post("https://www.website.io/api/v1/sessions", body: {"email": email, "password": password}) 
#####error-handler##### 
    if StandardError 
     puts "invalid email/pass" 
    end 
####################### 
    @auth_token = response["auth_token"] 
    end 
end 

Il semble que la plupart des erreurs sont classées sous standard error. L'idée est de courir de l'irb Gemname.new('email', 'wrong-password'), il renverrait "Wrong email/password". Comment dois-je gérer l'erreur pour afficher le bon message?

Edit: J'ai essayé ces codes sur initialize:

if StandardError 
    "error" 
end 

J'ai aussi essayé

créé le dossier lib, un dossier nommé gemname -> error.rb error.rb:

class InvalidStudentCodeError < StandardError 
    def initialize(msg="invalid email or password") 
    super(msg) 
    end 
end 

et à l'initialisation:

raise InvalidStudentCodeError.new() if response.code == 401 
+0

Pouvez-vous montrer le code complet de la méthode? –

+0

@NicNilov édité - ajouté les lignes de code que j'ai essayé – Iggy

Répondre

0

La méthode Raise suivante a résolu le problème:

def initialize(email, password) 
    response = self.class.post("https://www.website.io/api/v1/sessions", body: {"email": email, "password": password}) 
    raise "invalid email/pass, bud" if response.code != 200 
    @auth_token = response["auth_token"] 
    end