2013-08-24 55 views
0

這是一個新手問題,所以請原諒我,我一直在使用rails,但這是我第一次嘗試從heroku應用程序中不包含rails的寶石 - 只是一個普通的Ruby應用程序。 確定我有一個app.rb文件看起來像這樣:Actionmailer - heroku應用程序

require "sinatra" 
require 'koala' 
require 'action_mailer' 
ActionMailer::Base.raise_delivery_errors = true 

ActionMailer::Base.delivery_method = :smtp 
ActionMailer::Base.smtp_settings = { 
    :address => "smtp.sendgrid.net", 
    :port  => 587, 
    :domain => "MYDOMAIN", 
    :authentication => :plain, 
    :user_name  => "USER_NAME", 
    :password  => "PASSWORD", 
    :enable_starttls_auto => true 
    } 
ActionMailer::Base.view_paths= File.dirname(__FILE__) 

class TestMailer < ActionMailer::Base 

    default :from => "MY_EMAIL" 

    def welcome_email 
    mail(:to => "MY_EMAIL", :subject => "Test mail", :body => "Test mail body") 
    end 
end 

我想要做的是運行

TestMailer::deliver_test_email 
在控制檯

,並得到詳細信息或運行

TestMailer::deliver_test_email.deliver 

發送測試郵件

但我得到的是:

NameError: uninitialized constant Object::TestMailer 

我在Gemfile中和它也包含了的ActionMailer Gemfile.lock的

我相信這是一些簡單的一個有經驗的Ruby開發,但我奮力任何人都可以幫助我嗎?

感謝

+0

你是從哪個控制檯運行的?你有沒有加載app.rb?您還需要爲您的gemfile實際使用'bundler/setup'。 –

+0

感謝Fredrick的迴應。是的,我加載了app.rb,並且在控制檯中運行它(而不是irb)。我運行一些檢查來查看需要什麼,最後我使用了Mail來代替它,這似乎更加順利。 – Jon

回答

0

試驗和研究的幾個小時後,我結束了使用Mail代替,這是我最後的代碼在運行時正常工作,我希望它可以幫助誰是有同樣的問題,因爲我是誰: )

require 'mail' 

Mail.defaults do 

    delivery_method :smtp, { :address => "smtp.sendgrid.net", 

          :port  => 587, 
          :domain => "MY_DOMAIN", 
          :user_name => "USER_NAME", 
          :password => "PASSWORD", 
          :authentication => 'plain', 
          :enable_starttls_auto => true } 
end 

mail = Mail.deliver do 
    to 'EMAIL' 
    from 'Your Name <[email protected]_DOMAIN>' 
    subject 'This is the subject of your email' 
    text_part do 
    body 'hello world in text' 
    end 
    html_part do 
    content_type 'text/html; charset=UTF-8' 
    body '<b>hello world in HTML</b>' 
    end 
end