2017-10-02 12 views
0

J'essaie d'envoyer un email à la bibliothèque sendgrid-ruby, et j'ai réussi à écrire un script que je peux exécuter ligne par ligne et me mettre au travail. Cependant, lorsque je tente d'exécuter le script dans son ensemble, je reçoisProblèmes avec l'exécution de la bibliothèque sendgrid-ruby en tant que script ruby ​​

/Users/andrewaccuardi/.rvm/gems/ruby-2.4.1/gems/sendgrid-ruby-5.1.0/lib/sendgrid/client.rb:24:in `+': no implicit conversion of nil into String (TypeError)

Voici le code que je me sers de l'appel:

require 'sendgrid-ruby' 
include SendGrid 

sg = SendGrid::API.new(api_key: ENV['SENDGRID_API_KEY']) 
email = SendGrid::Mail.new 
email.from = SendGrid::Email.new(email: "[email protected]", name: "Example User") 
email.subject = "Your Email's Subject" 

p = SendGrid::Personalization.new 
p.add_to(SendGrid::Email.new(email: "example_email", name: "example_name")) 
p.add_substitution(Substitution.new(key: '-companyName-', value: 'Example_company')) 
p.add_substitution(Substitution.new(key: '-eventName-', value: 'DINOSAUR PARTY')) 
p.add_substitution(Substitution.new(key: '-eventDays-', value: '35')) 
p.add_substitution(Substitution.new(key: '-eventStartDate-', value: '08/15/1993')) 
p.add_substitution(Substitution.new(key: '-eventEndDate-', value: '12/22/1992')) 
p.add_substitution(Substitution.new(key: '-eventStartTime-', value: '12:30pm')) 
p.add_substitution(Substitution.new(key: '-eventEndTime-', value: '12:30am')) 
p.add_substitution(Substitution.new(key: '-eventAddress-', value: '1234 SE Main St.')) 
p.add_substitution(Substitution.new(key: '-eventYears-', value: '3')) 
p.add_substitution(Substitution.new(key: '-eventWebsite-', value: 'www.example.com')) 
p.add_substitution(Substitution.new(key: '-eventFacebook-', value: 'facebook.com/example')) 
p.add_substitution(Substitution.new(key: '-eventTwitter-', value: 'twitter.com/example')) 
p.add_substitution(Substitution.new(key: '-eventOtherMedia-', value: 'othermedia.com/example')) 
p.add_substitution(Substitution.new(key: '-eventDescription-', value: "Vape shoreditch fixie man bun vexillologist VHS. You probably haven't heard of them stumptown edison bulb, echo park narwhal +1 skateboard portland poutine pok pok bitters activated charcoal pinterest. Mlkshk 90's jean shorts kale chips four dollar toast glossier. Ennui semiotics brunch twee man braid lumbersexual chia plaid. Crucifix kogi tofu cardigan. Roof party sustainable jean shorts umami asymmetrical dreamcatcher. Offal biodiesel edison bulb tofu raw denim cred. Kogi banh mi shoreditch.")) 
p.add_substitution(Substitution.new(key: '-eventAttendance-', value: '50+')) 
p.add_substitution(Substitution.new(key: '-eventCategory-', value: 'Entertainment')) 
p.add_substitution(Substitution.new(key: '-eventGender-', value: 'Female')) 
p.add_substitution(Substitution.new(key: '-eventAge-', value: '21+')) 
p.add_substitution(Substitution.new(key: '-eventRequest-', value: 'Beer')) 
p.add_substitution(Substitution.new(key: '-sellingRequest-', value: 'Email Blast')) 
p.add_substitution(Substitution.new(key: '-repsNeeded-', value: '5')) 
p.add_substitution(Substitution.new(key: '-tapsNeeded-', value: '10')) 
p.add_substitution(Substitution.new(key: '-cupsNeeded-', value: '15')) 
p.add_substitution(Substitution.new(key: '-alcoholPermit-', value: 'Yeah, buddy')) 
p.add_substitution(Substitution.new(key: '-food-', value: 'Pizza')) 
p.add_substitution(Substitution.new(key: '-promoOpps-', value: 'Lots')) 
p.add_substitution(Substitution.new(key: '-nonProfName-', value: 'Non-profit example name')) 
p.add_substitution(Substitution.new(key: '-nonProfWebsite-', value: 'www.nonprofitexample.com')) 
p.add_substitution(Substitution.new(key: '-nonProfEmail-', value: '[email protected]')) 
p.add_substitution(Substitution.new(key: '-nonProfPhone-', value: '555-555-3331')) 

email.add_personalization(p) 
email.template_id = "684f302c-5669-4114-a953-c3e15d6de44d" 
response = sg.client.mail._('send').post(request_body: email.to_json) 
puts response.status_code 
puts response.body 
puts response.headers 

Toute idée sur la façon d'avancer serait sois super, merci!

+0

"Autorisation": "Porteur '+ @api_key +'" - ceci provient de la ligne 24 du fichier client.rb. Etes-vous sûr que le '@api_key' n'est pas nul? – Anton

+0

Lorsque je lance cette ligne dans mes 'rails c', la réponse est correcte. @api_key est correct. –

+0

La console Rails a accès aux variables d'environnement et votre script ne peut pas .. imprimer l'ENV ['SENDGRID_API_KEY'] à partir du script. – Anton

Répondre

0

La console Rails charge les variables d'environnement de sorte que lorsque le code est exécuté à partir de là, l'ENV ['SENDGRID_API_KEY'] a une valeur.
Lorsque vous l'exécutez en tant que script sans charger l'environnement, le résultat est nul.
Par la documentation ici:
https://github.com/sendgrid/sendgrid-ruby#setup-environment-variables
Vous devez exporter ceci.