Получение драгоценных камней Pony или Mail для работы с Sinatra / Heroku - PullRequest
2 голосов
/ 03 апреля 2012

Я новичок в Ruby, поэтому извиняюсь, если этот вопрос прост.И большое спасибо заранее за вашу помощь.

У нас есть приложение Sinatra, которое было развернуто на Heroku.Мы пытаемся добавить страницу, которая отправляет простое электронное письмо.Я добавил надстройку SendGrid в приложение Heroku.Теперь я просто пытаюсь добавить код Ruby, который создает и отправляет сообщение, используя информацию SMTP-сервера SendGrid.

Проблема в том, что я установил гем Mail в приложении Heroku(добавляя в Gemfile), я получаю сообщение об ошибке, когда приложение Heroku запускается с жалобой на то, что «treetop / runtime» не установлено:

←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m /app/.bundle/gems/ruby/1.9.1/gems/mail-2.4.4/lib/mail.rb:75:in `require': no such file to load -- treetop/runtime (LoadError)
←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m  from /app/.bundle/gems/ruby/1.9.1/gems/mail-2.4.4/lib/mail.rb:75:in `rescue in block in <module:Mail>'
←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m  from /app/.bundle/gems/ruby/1.9.1/gems/mail-2.4.4/lib/mail.rb:69:in `block in <module:Mail>'
←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m  from /app/.bundle/gems/ruby/1.9.1/gems/mail-2.4.4/lib/mail.rb:68:in `each'
←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m  from /app/.bundle/gems/ruby/1.9.1/gems/mail-2.4.4/lib/mail.rb:68:in `<module:Mail>'
←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m  from /app/.bundle/gems/ruby/1.9.1/gems/mail-2.4.4/lib/mail.rb:2:in `<top (required)>'
←[32m2012-04-03T16:37:49+00:00 app[web.1]:←[0m  from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/runtime.rb:64:in `require'

Аналогично, когда я пытаюсь установить гем Pony, онжалуется, что не может загрузить почту.Как ни странно, это все работает в моей локальной системе, поэтому я думаю, что это проблема с Heroku.Я просто не могу заставить Heroku полностью загрузить все, что нужно, от Pony или Mail для успешного запуска.(Примечание: я даже не могу запустить Heroku, поэтому не могу даже проверить фактическую отправку кода электронной почты.)

Буду признателен за любую конкретную помощь / понимание.Кто-нибудь сталкивался с этим с Героку?Существуют ли другие драгоценные камни, которые могут работать для этой простой цели?

Спасибо!

PS В комплекте успешно установлены mail (2.4.4) и pony (1.4).

Ответы [ 2 ]

7 голосов
/ 07 июня 2012

Было бы полезно увидеть фрагменты кода для вашего основного сценария ruby-маршрутизации. Но для моего приложения sinatra я настроил конфигурации почты как.

Mail.defaults do
  delivery_method :smtp, {
    :address => 'smtp.sendgrid.net',
    :port => 587,
    :domain => 'heroku.com',
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD'],
    :authentication => 'plain',
    :enable_starttls_auto => true
  }
end

И в моем отправке контактный адрес электронной почты

mail = Mail.deliver do
    to <youremail>
    from <someone>
    subject 'Feedback for my Sintra app'
    text_part do
        body <your feedback>
    end
end

Надеюсь, это поможет.

1 голос
/ 10 июля 2012

В случае, если вам нужны некоторые настройки для Pony вместо Mail (они очень похожи):

configure :production do # I have a different hash for development settings.
  email_options, {      
    :from => "noreply@midas.heroku.com",
    :via => :smtp,
    :via_options => {
      :address => 'smtp.sendgrid.net',
      :port => '587',
      :domain => 'heroku.com',
      :user_name => ENV['SENDGRID_USERNAME'],
      :password => ENV['SENDGRID_PASSWORD'],
      :authentication => :plain,
      :enable_starttls_auto => true
    },
  }
end

Pony.options = settings.email_options

Убедитесь, что вы установили имя пользователя и пароль sendgrid через настройки конфигурации, например,

heroku config:add SENDGRID_USERNAME=GIVEN_USERNAME SENDGRID_PASSWORD=GIVEN_PASSWORD

Чтобы отправить очень просто, просто позвоните Pony.mail и передайте ему хэш с 'to' и 'body' и т. Д. (Я уверен, что вы это знаете, но я просто стараюсь быть тщательным!)

Я также использую v1.4, но у меня не было такой же проблемы, но если он говорит, что не может загрузить Mail, когда вы переключаетесь на Pony, я бы проверил на мошенническое утверждение require.

...