2017-10-02 4 views
0

私はsendgrid-rubyライブラリを電子メールで送信しようとしていますが、行ごとに実行して作業できるスクリプトを作成しています。しかし、私は全体としてスクリプトを実行しようとすると、私はここでruby​​スクリプトとしてsendgrid-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)

を取得し、私はコールのために使用していたコードは次のとおりです。

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 

任意の洞察力前方に移動する方法への希望すばらしい、ありがとう!

+0

"Authorization": "Bearer '+ @api_key +' - これはclient.rbファイルの24行目です。あなたは '@api_key'がnilではないと確信していますか? – Anton

+0

'rails c'でその行を実行すると、正しい応答が出力されます。 @api_keyは正しいです。 –

+0

Railsコンソールは環境変数にアクセスできません。スクリプトはENV ['SENDGRID_API_KEY']をスクリプトから出力できません。 – Anton

答えて

0

Railsコンソールは環境変数をロードします。そのため、ENV ['SENDGRID_API_KEY']のコードがそこから実行されると、値があります。
環境をロードせずにスクリプトとして実行すると、結果はnilになります。
ここにドキュメント:
https://github.com/sendgrid/sendgrid-ruby#setup-environment-variables
これをエクスポートする必要があります。

関連する問題