Рельсы Пользовательские библиотеки перекодирования сухим способом
У меня есть этот файл mailchimp.rb, но я думаю, что он не эффективен.
class MailchimpAdapter
class << self
def remove_from_mailchimp_list(user, bucket_id)
connection = Gibbon.new
lists = connection.lists
begin
connection.list_unsubscribe({:id => lists["data"][user_type_id]["id"], :email_address => user.email, :delete_member => true, :send_goodbye => false, :send_notify => false})
rescue Exception => ex
end
end
def add_to_mailchimp_list(user, bucket_id)
connection = Gibbon.new
lists = connection.lists
begin
connection.list_subscribe({:id => lists["data"][user_type_id]["id"], :email_address => user.email, :merge_vars => {:FNAME => user.user_name, :LNAME => ""}, :double_optin => false})
rescue Exception => ex
end
end
end
end
Есть ли лучший способ кодировать этот класс? Потому что я повторяю эту часть
connection = Gibbon.new
lists = connection.lists
1 ответ
Я бы сделал что-то вроде этого:
class MailchimpAdapter
class << self
def remove_from_mailchimp_list(user, bucket_id)
list_operation do |connection, lists|
connection.list_unsubscribe({:id => lists["data"][user_type_id]["id"], :email_address => user.email, :delete_member => true, :send_goodbye => false, :send_notify => false})
end
end
def add_to_mailchimp_list(user, bucket_id)
list_operation do |connection, lists|
connection.list_subscribe({:id => lists["data"][user_type_id]["id"], :email_address => user.email, :merge_vars => {:FNAME => user.user_name, :LNAME => ""}, :double_optin => false})
end
end
private
def list_operation
connection = Gibbon.new
lists = connection.lists
begin
yield(connection, lists)
rescue Exception => ex
end
end
end
end