我有一個正在開發的Rails應用程序(v4.2),當用戶註冊該站點時,我想將它們簽署到我的Mailchimp郵件列表中。我用sucker_punch和長臂猿寶石作爲後臺工作實施了這個過程。在這裏閱讀更多(Rails Mailchimp Background Job Not Implemented Error)Rails ActiveJob後臺作業重複Pinging Mailchimp
我已經得到它在user.rb文件中使用after_commit調用。
我現在遇到的唯一問題是,似乎ActiveJob會一次又一次地成功執行此方法,直到Mailchimp迴應400錯誤,該錯誤已添加電子郵件。
我怎樣才能得到ActiveJob或這種方法只打一次Mailchimp API?
這裏是我的後臺作業:
class AddUserToRegistrationListJob < ActiveJob::Base
queue_as :default
require 'gibbon'
def perform(user_id)
user = User.find(user_id)
email = user.email
first_name = user.first_name
last_name = user.last_name
mailchimp_list_id = "my list id here"
Gibbon::Request.api_key = "my api key here"
Gibbon::Request.timeout = 15
gibbon = Gibbon::Request.new
gibbon.lists("#{mailchimp_list_id}").members.create(
body:
{
email_address: email,
status: "subscribed",
merge_fields: {FNAME: first_name, LNAME: last_name
}})
end
end
我user.rb文件:
after_create :add_user_to_registration_list
def add_user_to_registration_list
AddUserToRegistrationListJob.perform_later(self)
end
工作是否有機會提出異常並重試? – pdoherty926
似乎沒有任何異常提出,除了有關使用'find'的棄用警告 – JohnOHFS
您應該改變您對長臂猿的使用,以首先檢查相關用戶是否已被添加到列表中。 –