我正在努力在我的 Rails 应用程序中使用 Heroku 发送带有 actionmailer 的 gmail。
我已将我的 gmail 用户名和密码正确设置为 Heroku 配置变量,但我仍然遇到身份验证错误。我终于发现我需要创建一个初始化程序,但是我无法将所有内容连接在一起。以下代码在 heroku 日志中显示正确的用户名和密码,但出现 NoMethodError。不知道在哪里放置方法以使其全部工作。我试过把它放在我的 users_controller 中,但这会使整个事情崩溃。
一旦我开始工作,我打算将我的 S3 东西添加到这个初始化程序中。
我的初始化程序/heroku.rb
GMAIL_CREDENTIALS = { :username => ENV['GMAIL_USERNAME'],
:password => ENV['GMAIL_PASSWORD'] }
我的邮件程序/user_mailer.rb
class UserMailer < ActionMailer::Base
default from: "mygmailaddress", :gmail_credentials => GMAIL_CREDENTIALS
def signup_confirmation(user)
@user = user
mail to: user.email, subject: "Sign Up Confirmation"
end
end
并在我的 users_controller 中创建:
def create
@user = User.new(params[:user])
if @user.save
UserMailer.signup_confirmation(@user).deliver
sign_in @user
flash[:success] = "Welcome to Plain Vanilla!"
redirect_to @user
else
render 'new'
end
end
heroku 日志中的错误消息:
Completed 500 Internal Server Error in 482ms
app/controllers/users_controller.rb:21:in `create'
NoMethodError (undefined method `encoding' for {:username=>"mygmailusername",
:password=>"mypassword"}:Hash):
谢谢你的帮助!
查理