すでに解決した回答に対する質問があるのは初めてです。これは、なぜ私の小さな修正が最初にそれを解決したのかについてです。
私は、Daniel Kehoe による Learn Rails book tutorial に従い、人々を MailChimp リストに登録するためのアプリケーションを作成しています。私は Gibbon gem を使用しています。本の中で、これは変数を設定するために使用されるモデルのコード (の一部) です。
def subscribe
mailchimp = Gibbon::API.new(Rails.application.secrets.mailchimp_api_key)
result = mailchimp.lists.subscribe({
:id => Rails.application.secrets.mailchimp_list_id,
<more code here for email and stuff>
end
問題の変数の secrets.yml ファイルは次のようになります。
mailchimp_api_key: <%= ENV["MAILCHIMP_API_KEY"] %>
mailchimp_list_id: <%= ENV["MAILCHIMP_LIST_ID"] %>
そして、私は Windows を使用しているので、それらの実際の値を application.yml に設定します。
MAILCHIMP_API_KEY: mysecretkey
MAILCHIMP_LIST_ID: mysecretid
これは、ローカルで完全に正常に機能することに注意してください。サーバーを実行してサブスクライブできます。しかし、それを Heroku にプッシュしheroku config:set MAILCHIMP_API_KEY=mysecretkey
、 と同じことを介して ENV 変数を設定するとMAILCHIMP_LIST_ID
、機能しません。具体的には、エラーを返しますInvalid Mailchimp List ID:
。
そのため、設定して実際に設定されていることを確認しても、リスト IDにはまったく値がありません。
Config Vars に関する Heroku 独自のヘルプ テキストを検索して問題を解決しました。そこでは、次のように推奨されていますENV['KEY']
。
モデルのコードを変更したので、使用する代わりにRails.application.secrets.mailchimp_list_id
次のようになりました。
def subscribe
mailchimp = Gibbon::API.new(Rails.application.secrets.mailchimp_api_key)
result = mailchimp.lists.subscribe({
:id => ENV['MAILCHIMP_LIST_ID'],
<more code here for email and stuff>
end
そして、ご存知のとおり、Heroku (およびローカル) で動作します! しかし、なぜですか?つまり、API キーについては同じ種類のコードを理解しましたが、リスト ID については理解できませんでした。これは奇妙に思えます。また、問題の本がこれについて反映していないのはなぜですか?著者は非常に定期的に更新するつもりのようで、ほぼ宗教的な献身で質問に答えているのを目にします。この問題に遭遇するのは私だけですか?
編集:以下で解決。私は今、少しばかげていると感じています.いつものように、物事には非常に簡単な解決策があります. この本には、実際にはsecrets.ymlファイルで本番環境に複製されたキーが含まれていることに注意してください。おそらく、環境変数とフィガロgemを使用するという問題全体に対する代替ソリューションを見つけなければならなかったため、その部分を見逃していました. この本に何か批判があるとすれば、それは私たち貧弱な Windows ユーザーに対応していないということだ。:)