mailee 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Gemfile ADDED
@@ -0,0 +1,12 @@
1
+ source "http://rubygems.org"
2
+
3
+ gem "actionmailer", "~> 3.0"
4
+ gem "activeresource", "~> 3.0"
5
+ gem "activerecord", "~> 3.0"
6
+
7
+ group :development, :test do
8
+ gem "rspec", "~> 2.6.0"
9
+ gem "bundler", "~> 1.0.0"
10
+ gem "jeweler", "~> 1.6.4"
11
+ gem "sqlite3", "~> 1.3.4"
12
+ end
@@ -0,0 +1,79 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ abstract (1.0.0)
5
+ actionmailer (3.0.10)
6
+ actionpack (= 3.0.10)
7
+ mail (~> 2.2.19)
8
+ actionpack (3.0.10)
9
+ activemodel (= 3.0.10)
10
+ activesupport (= 3.0.10)
11
+ builder (~> 2.1.2)
12
+ erubis (~> 2.6.6)
13
+ i18n (~> 0.5.0)
14
+ rack (~> 1.2.1)
15
+ rack-mount (~> 0.6.14)
16
+ rack-test (~> 0.5.7)
17
+ tzinfo (~> 0.3.23)
18
+ activemodel (3.0.10)
19
+ activesupport (= 3.0.10)
20
+ builder (~> 2.1.2)
21
+ i18n (~> 0.5.0)
22
+ activerecord (3.0.10)
23
+ activemodel (= 3.0.10)
24
+ activesupport (= 3.0.10)
25
+ arel (~> 2.0.10)
26
+ tzinfo (~> 0.3.23)
27
+ activeresource (3.0.10)
28
+ activemodel (= 3.0.10)
29
+ activesupport (= 3.0.10)
30
+ activesupport (3.0.10)
31
+ arel (2.0.10)
32
+ builder (2.1.2)
33
+ diff-lcs (1.1.3)
34
+ erubis (2.6.6)
35
+ abstract (>= 1.0.0)
36
+ git (1.2.5)
37
+ i18n (0.5.0)
38
+ jeweler (1.6.4)
39
+ bundler (~> 1.0)
40
+ git (>= 1.2.5)
41
+ rake
42
+ mail (2.2.19)
43
+ activesupport (>= 2.3.6)
44
+ i18n (>= 0.4.0)
45
+ mime-types (~> 1.16)
46
+ treetop (~> 1.4.8)
47
+ mime-types (1.16)
48
+ polyglot (0.3.2)
49
+ rack (1.2.4)
50
+ rack-mount (0.6.14)
51
+ rack (>= 1.0.0)
52
+ rack-test (0.5.7)
53
+ rack (>= 1.0)
54
+ rake (0.9.2)
55
+ rspec (2.6.0)
56
+ rspec-core (~> 2.6.0)
57
+ rspec-expectations (~> 2.6.0)
58
+ rspec-mocks (~> 2.6.0)
59
+ rspec-core (2.6.4)
60
+ rspec-expectations (2.6.0)
61
+ diff-lcs (~> 1.1.2)
62
+ rspec-mocks (2.6.0)
63
+ sqlite3 (1.3.4)
64
+ treetop (1.4.10)
65
+ polyglot
66
+ polyglot (>= 0.3.1)
67
+ tzinfo (0.3.30)
68
+
69
+ PLATFORMS
70
+ ruby
71
+
72
+ DEPENDENCIES
73
+ actionmailer (~> 3.0)
74
+ activerecord (~> 3.0)
75
+ activeresource (~> 3.0)
76
+ bundler (~> 1.0.0)
77
+ jeweler (~> 1.6.4)
78
+ rspec (~> 2.6.0)
79
+ sqlite3 (~> 1.3.4)
@@ -1,172 +1,214 @@
1
- Mailee - Email marketing para quem entende de tecnologia.
2
- ==============
1
+ # Mailee - Email marketing para quem entende de tecnologia.
3
2
 
4
- O problema
5
- =
3
+ ## O problema
6
4
 
7
- Você está desenvolvendo um sistema (e-commerce, cms, erp...) e o seu cliente solicita a possibilidade de enviar e-mails promocionais, ou notícias, para diversos contatos. Por experiência própria, você sabe que enviar e-mails não é coisa para _scriptkiddies_, e que, de fato, não vale a pena o esforço de desenvolver todo um sistema que faça o envio, garanta a entrega, analise os retornos e também apresente resultados de tudo isso. O problema é que os sistemas que você conhece não permitem uma integração fácil e rápida com seus sistemas em Rails...
5
+ Você está desenvolvendo um sistema (e-commerce, cms, erp...) e o seu cliente solicita a possibilidade de enviar e-mails promocionais, ou notícias, para diversos contatos.
8
6
 
9
- A solução
10
- =
7
+ Por experiência própria, você sabe que enviar e-mails não é coisa para _scriptkiddies_, e que, de fato, não vale a pena o esforço de desenvolver todo um sistema que faça o envio, garanta a entrega, analise os retornos e também apresente resultados de tudo isso. O problema é que os sistemas que você conhece não permitem uma integração fácil e rápida com seus sistemas em Rails...
11
8
 
12
- Esta gem tem como objetivo manter os contatos da sua aplicação sincronizados com os contatos do Mailee (www.mailee.me) sem muito esforço. De fato, basta executar o método "sync_with_mailee" no seu modelo (clientes, contatos, pessoas...) que este irá automaticamente realizar as tarefas de inserir, atualizar, excluir e descadastrar via REST. No Mailee, seu cliente poderá então montar as mensagens e enviar para os contatos.
9
+ ## A solução
13
10
 
14
- O que posso fazer com a gem?
15
- =
11
+ Esta gem tem como objetivo manter os contatos da sua aplicação sincronizados com os contatos do Mailee (www.mailee.me) sem muito esforço.
16
12
 
17
- * Simplesmente utilizar as classes do Mailee para:
18
- * Criar, atualizar, buscar e excluir contatos.
19
- * Importar contatos com nome e email.
20
- * Criar, atualizar, buscar e excluir listas.
21
- * Criar, atualizar, buscar e excluir templates.
22
- * Criar rascunhos, enviar testes e enviar mensagens agora ou para uma data futura. O envio de mensagens permite enviar para uma lista, para um conjunto de emails, definindo o html na mão ou usando um template do Mailee.me e definindo áreas editáveis e de repetições.
23
- * Buscar datos dos relatórios.
24
- * Integrar com ActiveRecord (com ou sem Rails) e fazer um modelo sincronizar automaticamente com o Mailee.me.
25
- * Integrar com ActionMailer (com ou sem Rails) e fazer os mailers enviarem as mensagens pelo Mailee.me.
13
+ De fato, basta executar o método `sync_with_mailee` no seu modelo (clientes, contatos, pessoas...) que este irá automaticamente realizar as tarefas de inserir, atualizar, excluir e descadastrar via REST. No Mailee, seu cliente poderá então montar as mensagens e enviar para os contatos.
26
14
 
27
- Instalação
28
- =
15
+ ## O que posso fazer com a gem?
29
16
 
30
- * Adicione a seguinte linha ao seu Gemfile:
31
- > gem 'mailee'
32
- * E execute o bundle:
33
- > bundle install
34
- * Uma vez instalado, para configurar, execute:
35
- > rails g mailee_rails:setup
17
+ * Simplesmente utilizar as classes do Mailee para:
18
+ * Criar, atualizar, buscar e excluir contatos.
19
+ * Importar contatos com nome e email.
20
+ * Criar, atualizar, buscar e excluir listas.
21
+ * Criar, atualizar, buscar e excluir templates.
22
+ * Criar rascunhos, enviar testes e enviar mensagens agora ou para uma data futura. O envio de mensagens permite enviar para uma lista, para um conjunto de emails, definindo o html na mão ou usando um template do Mailee.me e definindo áreas editáveis e de repetições.
23
+ * Buscar datos dos relatórios.
24
+ * Integrar com ActiveRecord (com ou sem Rails) e fazer um modelo sincronizar automaticamente com o Mailee.me.
25
+ * Integrar com ActionMailer (com ou sem Rails) e fazer os mailers enviarem as mensagens pelo Mailee.me.
36
26
 
37
- Este comando irá solicitar sua URL da API e criar um initializer com toda a configuração necessária.
38
- A URL da API você descobre entrando no Mailee e indo em Configurações > Integração > REST
27
+ ## Instalação
28
+
29
+ Adicione a seguinte linha ao seu Gemfile:
30
+
31
+ ~~~.ruby
32
+ gem 'mailee'
33
+ ~~~
34
+
35
+ E execute o bundle:
36
+
37
+ bundle install
38
+
39
+ Uma vez instalado, para configurar, execute:
40
+
41
+ rails g mailee_rails:setup
42
+
43
+ Este comando irá solicitar sua URL da API e criar um initializer com toda a configuração necessária. A URL da API você descobre entrando no Mailee e indo em **Configurações > Integração > REST**
39
44
 
40
- Pronto!
45
+ Pronto!
46
+
47
+ ## Compatibilidade
41
48
 
42
- Compatibilidade
43
- =
49
+ Rails 3. 'Nuff said. Se você precisa de suporte ao Rails 2, baixe a versão 0.1.0, mas ela possui muito menos funcionalidades do que a versão atual.
44
50
 
45
- Rails 3. 'Nuff said. Se você precisa de suporte ao Rails 2, baixe a versão 0.1.0, mas ela possui muito menos funcionalidades do que a versão atual.
51
+ ## Uso
46
52
 
47
- Uso
48
- =
53
+ ### Na mão (console)
49
54
 
50
- * Na mão (console)
55
+ Você pode usar a api do maile "na mão". Basta abrir o console e usar:
51
56
 
52
- Você pode usar a api do maile "na mão". Basta abrir o console e usar:
53
- = code
54
57
  ruby script/console
58
+
55
59
  include Mailee
60
+
56
61
  Contact.find(:all)
57
62
  Contact.find(:first)
63
+
58
64
  Contact.search('russell')
65
+
59
66
  Contact.find_by_internal_id(789)
60
67
  Contact.find_by_email('russell@cambridge.edu.uk')
68
+
61
69
  Contact.create(:name => 'Bertrand Russell', :email => 'russell@cambridge.edu.uk')
62
70
  Contact.create(:email => 'ludwig@wittgenstein.edu.uk', :dynamic_attributes => {:influence => 'Frege'})
71
+
72
+ Contact.find_by_internal_id(789).put(:subscribe, :list => {:name => 'Analytic Philosophers'})
73
+ Contact.find_by_internal_id(789).put(:unsubscribe, :unsubscribe => {:reason => 'Email too long'})
74
+
63
75
  List.find(:all)
64
76
  List.find(:first)
65
77
  List.create(:name => 'My List')
78
+
66
79
  Template.find(:all)
67
80
  Template.find(:first)
68
81
  Template.create(:title => 'My Template', :html => File.read('mytemplate.html'))
82
+
69
83
  # Message with HTML and list
70
84
  message = Message.create :title => "Title", :subject => "Subject", :from_name => "Rorty", :from_email => "rorty@princeton.us", :html => File.read('myhtml.html'), :list_id => 987
85
+
71
86
  # Message with emails and template (with edits & repeats)
72
87
  message = Message.create :title => "Title", :subject => "Subject", :from_name => "Rorty", :from_email => "rorty@princeton.us", :template_id => 765, :edits => {:greeting => 'Hi Davidson!'}, :repeats => {:news => ['A good news', 'A bad news'], :emails => 'davidson@some.com davidson@another.com'}
73
88
  message.test([44,55,66])
74
89
  message.ready # send it now
75
90
  message.ready(10.days.from_now)
76
91
 
77
- * Com modelos (ActiveRecord)
78
-
79
- Esta gem é feita para manter um modelo AciveRecord sincronizado com os contatos do Mailee. Para fazer isto, basta colocar o método "sync_with_mailee" em seu modelo. Se o seu modelo se chama "Contact", por exemplo, o código seria este:
80
- =code
81
- class Contact < ActiveRecord::Base
82
- sync_with_mailee
83
- end
84
- A priori, a gem espera que você tenha pelo menos os campos de email e optins, e pressupõe que estes campos se chamem "email" e "news". Se os campos da sua tabela não tem estes nomes, você pode fazer o seguinte:
85
- =code
86
- class Contact < ActiveRecord::Base
87
- sync_with_mailee :email => :my_email_column, :news => :my_optin_column
88
- end
89
- Onde "my_email_column" é a coluna que guarda o e-mail na sua tabela e "my_optin_column" o booleano que guarda o optin.
90
- A gem também pode manter o nome do seu contato sincronizado, bastando para isto ter um campo "name" que será mapeado por padrão, mas que também pode ser sobrescrito:
91
- =code
92
- class Contact < ActiveRecord::Base
93
- sync_with_mailee :name => :my_name_column
94
- end
95
- Se o valor do campo "news" (ou o que você utilizar para optin) for false, a gem não cadastrará o contato no Mailee. Se o contato já estiver cadastrado e o valor deste campo mudar para falso, o contato será descadastrado e _não_ poderá ser mais cadastrado no Mailee (normas de privacidade). Se ele estiver falso e mudar para verdadeiro, ele irá cadastrá-lo.
96
- =code
97
- class Contact < ActiveRecord::Base
98
- sync_with_mailee :list => "Nome da sua lista"
99
- end
100
- Você também pode (e a gente recomenda que você o faça) informar a lista na qual você quer que o contato seja inscrito quando ele for cadastrado no Mailee.me. Assim, quando você for criar uma campanha todos seus contatos cadastrados pelo seu sistema já estarão em uma lista. Aí é só enviar para esta lista e pronto.
101
-
102
- * Com mailers (ActionMailer)
92
+ ### Com modelos (ActiveRecord)
93
+
94
+ Esta gem é feita para manter um modelo AciveRecord sincronizado com os contatos do Mailee.
95
+
96
+ Para fazer isto, basta colocar o método `sync_with_mailee` em seu modelo. Se o seu modelo se chama `Contact`, por exemplo, o código seria este:
97
+
98
+ ~~~.ruby
99
+ class Contact < ActiveRecord::Base
100
+ sync_with_mailee
101
+ end
102
+ ~~~
103
+
104
+ A priori, a gem espera que você tenha pelo menos os campos de email e optins, e pressupõe que estes campos se chamem `email` e `news`. Se os campos da sua tabela não tem estes nomes, você pode fazer o seguinte:
105
+
106
+ ~~~.ruby
107
+ class Contact < ActiveRecord::Base
108
+ sync_with_mailee :email => :my_email_column, :news => :my_optin_column
109
+ end
110
+ ~~~
111
+
112
+ Onde `my_email_column` é a coluna que guarda o e-mail na sua tabela e `my_optin_column` o booleano que guarda o optin.
113
+
114
+ A gem também pode manter o nome do seu contato sincronizado, bastando para isto ter um campo `name` que será mapeado por padrão, mas que também pode ser sobrescrito:
115
+
116
+ ~~~.ruby
117
+ class Contact < ActiveRecord::Base
118
+ sync_with_mailee :name => :my_name_column
119
+ end
120
+ ~~~
121
+
122
+ Se o valor do campo `news` (ou o que você utilizar para optin) for `false`, a gem não cadastrará o contato no Mailee.
123
+ Se o contato já estiver cadastrado e o valor deste campo mudar para `falso`, o contato será descadastrado e **não** poderá ser mais cadastrado no Mailee (normas de privacidade).
124
+ Se ele estiver `falso` e mudar para `verdadeiro`, ele irá cadastrá-lo.
125
+
126
+ ~~~.ruby
127
+ class Contact < ActiveRecord::Base
128
+ sync_with_mailee :list => "Nome da sua lista"
129
+ end
130
+ ~~~
131
+
132
+ Você também pode (e a gente recomenda que você o faça) informar a lista na qual você quer que o contato seja inscrito quando ele for cadastrado no Mailee.me. Assim, quando você for criar uma campanha todos seus contatos cadastrados pelo seu sistema já estarão em uma lista. Aí é só enviar para esta lista e pronto.
133
+
134
+ ### Com mailers (ActionMailer)
103
135
 
104
- Esta gem permite que você utilize o Mailee.me como meio de enviar suas mensagens sem precisar configurar um servidor smtp ou algo pareceido.
136
+ Esta gem permite que você utilize o Mailee.me como meio de enviar suas mensagens sem precisar configurar um servidor smtp ou algo pareceido.
105
137
 
106
- Você pode optar por enviar todas as mensagens por ele, ou só as mensagens de determinados mailers. Para a configuração global, adicione a seguinte linha ao seu arquivo de ambiente (config/environments/production.rb ou development.rb):
138
+ Você pode optar por enviar todas as mensagens por ele, ou só as mensagens de determinados mailers.
139
+
140
+ Para a configuração global, adicione a seguinte linha ao seu arquivo de ambiente (`config/environments/production.rb` ou `development.rb`):
107
141
 
108
- = code
109
- config.action_mailer.delivery_method = Mailee::Mailer
142
+ ~~~.ruby
143
+ config.action_mailer.delivery_method = Mailee::Mailer
144
+ ~~~
110
145
 
111
- Agora, se você quer enviar apenas mensagens de um certo mailer pelo Mailee, basta adicionar o método "send_with_mailee" em cada um:
146
+ Agora, se você quer enviar apenas mensagens de um certo mailer pelo Mailee, basta adicionar o método `send_with_mailee` em cada um:
112
147
 
113
- = code
114
- class Notifications < ActionMailer::Base
115
- send_with_mailee
116
- ...
117
- end
148
+ ~~~.ruby
149
+ class Notifications < ActionMailer::Base
150
+ send_with_mailee
151
+ ...
152
+ end
153
+ ~~~
118
154
 
119
- É importante definir o from com o formato completo:
120
-
121
- = code
122
- class Notifications < ActionMailer::Base
123
- default :from => "Plato <plato@liceum.gr>
124
- ...
125
- end
126
-
127
- Ao enviar uma mensagem, você pode também optar por enviá-la agora ou no futuro:
128
-
129
- = code
130
- class Notifications < ActionMailer::Base
131
- def signup(client, date=Time.now)
132
- mail :date => date, :to => client.email
133
- end
134
- def feedback(client, date=Time.now)
135
- mail :date => date, :to => client.email
136
- end
137
- end
138
- ...
155
+ É importante definir o from com o formato completo:
156
+
157
+ ~~~.ruby
158
+ class Notifications < ActionMailer::Base
159
+ default :from => "Plato <plato@liceum.gr>
160
+ ...
161
+ end
162
+ ~~~
163
+
164
+ Ao enviar uma mensagem, você pode também optar por enviá-la agora ou no futuro:
165
+
166
+ ~~~.ruby
167
+ class Notifications < ActionMailer::Base
168
+ def signup(client, date=Time.now)
169
+ mail :date => date, :to => client.email
170
+ end
171
+ def feedback(client, date=Time.now)
172
+ mail :date => date, :to => client.email
173
+ end
174
+ end
175
+ ~~~
176
+
139
177
  Notifications.signup(client).deliver
140
178
  Notifications.feedback(client, 3.days.from_now).deliver
141
179
 
142
- Por fim, ao enviar uma mensagem, a gem adiciona um método que representa a mensagem no Mailee.me, veja:
180
+ Por fim, ao enviar uma mensagem, a gem adiciona um método que representa a mensagem no Mailee.me, veja:
143
181
 
144
- = code
145
182
  mail = Notifications.signup(client).deliver
146
- mail.mailee_message.id # Retorna o id
147
- mail.mailee_message.html # Retorna o html
183
+ mail.mailee_message.id # Retorna o id
184
+ mail.mailee_message.html # Retorna o html
148
185
  # e assim por diante...
149
186
 
150
- Isto é útil, pois você já pode monitorar os resultados com este id:
187
+ Isto é útil, pois você já pode monitorar os resultados com este id:
151
188
 
152
- = code
153
189
  mail = Notifications.signup(client).deliver
154
190
  Mailee::Report.find(mail.mailee_message.id)
155
191
 
156
- * Tarefas (rake)
192
+ ### Tarefas (rake)
193
+
194
+ Caso você já tenha itens cadastrados, é necessário adicionar estes contatos ao Mailee antes de mais nada. Para isso execute a tarefa rake:
195
+
196
+ $ rake mailee:send CLASS=Contact
197
+
198
+ Onde `Contact` é o nome do seu modelo. Se você quer apenas enviar os contatos a partir de uma determinada data, você pode fazê-lo desta forma:
199
+
200
+ $ rake mailee:send CLASS=Contact AFTER=5.days.ago
201
+
202
+ Neste caso, ele vai apenas sincronizar os contatos que foram atualizados (baseado no campo `updated_at`) nos últimos 5 dias.
203
+
204
+ ## Cuidado!
157
205
 
158
- Caso você tenha itens cadastrados, é necessário adicionar estes contatos ao Mailee antes de mais nada. Para isso execute a tarefa rake:
159
- > rake mailee:send CLASS=Contact
160
- Onde "Contact" é o nome do seu modelo. Se você quer apenas enviar os contatos a partir de uma determinada data, você pode fazê-lo desta forma:
161
- > rake mailee:send CLASS=Contact AFTER=5.days.ago
162
- Neste caso, ele vai apenas sincronizar os contatos que foram atualizados (baseado no campo "updated_at") nos últimos 5 dias.
206
+ A gem utiliza a API REST do Mailee para enviar dados, por isto cuide bem da sua URL - se alguém descobrir isso pode ser ruim.
163
207
 
164
- Cuidado!
165
- =
208
+ Para saber qual o contato na sua aplicação a gem utiliza um campo disponível no Mailee chamado `internal_id` o qual recebe o `id` da sua tabela na criação.
166
209
 
167
- A gem utiliza a API REST do Mailee para enviar dados, por isto cuide bem da sua URL - se alguém descobrir isso pode ser ruim. Para saber qual o contato na sua aplicação a gem utiliza um campo disponível no Mailee chamado "internal_id" o qual recebe o "id" da sua tabela na criação. Este id é usado nas atualizações, descadastros e exclusões, então tome (ou avise seu cliente para tomar!) cuidado ao editar este campo na interface do Mailee.
210
+ Este id é usado nas atualizações, descadastros e exclusões, então tome (ou avise seu cliente para tomar!) cuidado ao editar este campo na interface do Mailee.
168
211
 
169
- Dúvidas?
170
- =
212
+ ## Dúvidas?
171
213
 
172
- Qualquer dúvida, não hesite em falar conosco pelo e-mail suporte@mailee.me, pelo twitter @maileeme ou pelo IRC #maileeme.
214
+ Qualquer dúvida, não hesite em falar conosco pelo e-mail suporte@mailee.me, pelo twitter @maileeme ou pelo IRC #maileeme.
data/Rakefile CHANGED
@@ -1,17 +1,26 @@
1
+ # coding: utf-8
2
+
1
3
  require 'rubygems'
4
+ require 'bundler'
5
+ begin
6
+ Bundler.setup(:default, :development)
7
+ rescue Bundler::BundlerError => e
8
+ $stderr.puts e.message
9
+ $stderr.puts "Run `bundle install` to install missing gems"
10
+ exit e.status_code
11
+ end
2
12
  require 'rake'
3
13
 
4
14
  begin
5
15
  require 'jeweler'
6
16
  Jeweler::Tasks.new do |gem|
7
17
  gem.name = "mailee"
8
- gem.summary = %Q{Gem de integração do Mailee.me}
18
+ gem.summary = %Q{Gem para uso da API do Mailee.me}
9
19
  gem.description = %Q{Permite sincronizar automaticamente seus modelos com o Mailee.me, inclusive com gerenciamento de optin.}
10
20
  gem.email = "suporte@mailee.me"
11
21
  gem.homepage = "http://help.mailee.me/integration_rails.html"
12
22
  gem.authors = ["Juan Maiz"]
13
- # gem.add_development_dependency "thoughtbot-shoulda", ">= 0"
14
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
23
+ # dependencies defined in Gemfile
15
24
  end
16
25
  Jeweler::GemcutterTasks.new
17
26
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.0
@@ -1,7 +1,7 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
3
  gem 'rails', '3.0.0'
4
- gem 'mailee', '0.4.3'
4
+ gem 'mailee', '0.5.0'
5
5
  # Bundle edge Rails instead:
6
6
  # gem 'rails', :git => 'git://github.com/rails/rails.git'
7
7
 
@@ -38,7 +38,7 @@ GEM
38
38
  activesupport (>= 2.3.6)
39
39
  mime-types
40
40
  treetop (>= 1.4.5)
41
- mailee (0.4.3)
41
+ mailee (0.5.0)
42
42
  mime-types (1.16)
43
43
  polyglot (0.3.1)
44
44
  rack (1.2.1)
@@ -70,6 +70,6 @@ PLATFORMS
70
70
  ruby
71
71
 
72
72
  DEPENDENCIES
73
- mailee (= 0.4.3)
73
+ mailee (= 0.5.0)
74
74
  rails (= 3.0.0)
75
75
  sqlite3-ruby
@@ -43,10 +43,6 @@ module Mailee
43
43
  unless self.column_names.include?(self.sync_options[:news].to_s)
44
44
  self.sync_options[:news] = nil
45
45
  end
46
- if self.sync_options[:list]
47
- lists = List.find(:all).map(&:name)
48
- raise "A lista '#{self.sync_options[:list]}' não existe no Mailee.me." unless lists.include?(self.sync_options[:list])
49
- end
50
46
  end
51
47
  include InstanceMethods
52
48
  end
@@ -41,7 +41,14 @@ module Mailee
41
41
  put(:unsubscribe, :unsubscribe => {:reason => 'Motivo não especificado'}.merge(data))
42
42
  end
43
43
  def subscribe(list)
44
- put(:subscribe, :list => {:name => list})
44
+ print "Warning: Mailee::Contact.subscribe will be deprecated. Use Mailee::Contact.list_subscribe instead."
45
+ put(:list_subscribe, :list => list)
46
+ end
47
+ def list_subscribe(list)
48
+ put(:list_subscribe, :list => list)
49
+ end
50
+ def list_unsubscribe(list)
51
+ put(:list_unsubscribe, :list => list)
45
52
  end
46
53
  end
47
54
 
@@ -21,7 +21,7 @@ class MaileeRails < Rails::Railtie
21
21
  puts "Invalid URL. Please try again:"
22
22
  url = readline.gsub(/\n/,'').gsub(/\s+/, '')
23
23
  else
24
- puts "I think need support. Please talk to us on IRC (#maileeme) or send an email to suporte@mailee.me"
24
+ puts "I think you need support. Please talk to us on IRC (#maileeme) or send an email to suporte@mailee.me"
25
25
  exit
26
26
  end
27
27
  end
@@ -1,125 +1,137 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{mailee}
8
- s.version = "0.5.0"
8
+ s.version = "0.6.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Juan Maiz"]
12
- s.date = %q{2011-03-28}
12
+ s.date = %q{2011-10-21}
13
13
  s.description = %q{Permite sincronizar automaticamente seus modelos com o Mailee.me, inclusive com gerenciamento de optin.}
14
14
  s.email = %q{suporte@mailee.me}
15
15
  s.extra_rdoc_files = [
16
16
  "LICENSE",
17
- "README.markdown",
18
- "README.markdown.pt",
19
- "README.rdoc"
17
+ "README.markdown",
18
+ "README.markdown.pt"
20
19
  ]
21
20
  s.files = [
22
- ".gitignore",
23
- ".rspec",
24
- "LICENSE",
25
- "MIT-LICENSE",
26
- "README.markdown",
27
- "README.rdoc",
28
- "Rakefile",
29
- "VERSION",
30
- "app/.gitignore",
31
- "app/Gemfile",
32
- "app/Gemfile.lock",
33
- "app/README",
34
- "app/Rakefile",
35
- "app/app/controllers/application_controller.rb",
36
- "app/app/helpers/application_helper.rb",
37
- "app/app/mailers/foo.rb",
38
- "app/app/views/foo/bar.html.erb",
39
- "app/app/views/foo/baz.text.erb",
40
- "app/app/views/layouts/application.html.erb",
41
- "app/config.ru",
42
- "app/config/application.rb",
43
- "app/config/boot.rb",
44
- "app/config/database.yml",
45
- "app/config/environment.rb",
46
- "app/config/environments/development.rb",
47
- "app/config/environments/production.rb",
48
- "app/config/environments/test.rb",
49
- "app/config/initializers/backtrace_silencers.rb",
50
- "app/config/initializers/inflections.rb",
51
- "app/config/initializers/mailee.rb",
52
- "app/config/initializers/mime_types.rb",
53
- "app/config/initializers/secret_token.rb",
54
- "app/config/initializers/session_store.rb",
55
- "app/config/locales/en.yml",
56
- "app/config/routes.rb",
57
- "app/db/schema.rb",
58
- "app/db/seeds.rb",
59
- "app/doc/README_FOR_APP",
60
- "app/lib/tasks/.gitkeep",
61
- "app/public/404.html",
62
- "app/public/422.html",
63
- "app/public/500.html",
64
- "app/public/favicon.ico",
65
- "app/public/images/rails.png",
66
- "app/public/index.html",
67
- "app/public/javascripts/application.js",
68
- "app/public/javascripts/controls.js",
69
- "app/public/javascripts/dragdrop.js",
70
- "app/public/javascripts/effects.js",
71
- "app/public/javascripts/prototype.js",
72
- "app/public/javascripts/rails.js",
73
- "app/public/robots.txt",
74
- "app/public/stylesheets/.gitkeep",
75
- "app/script/rails",
76
- "app/test.rb",
77
- "app/test/functional/foo_test.rb",
78
- "app/test/performance/browsing_test.rb",
79
- "app/test/test_helper.rb",
80
- "app/vendor/plugins/.gitkeep",
81
- "init.rb",
82
- "install.rb",
83
- "lib/mailee.rb",
84
- "lib/mailee/action_mailer.rb",
85
- "lib/mailee/active_record.rb",
86
- "lib/mailee/active_resource.rb",
87
- "lib/mailee/railties.rb",
88
- "mailee.gemspec",
89
- "pkg/mailee-0.1.0.gem",
90
- "pkg/mailee-0.1.1.gem",
91
- "pkg/mailee-0.1.2.gem",
92
- "pkg/mailee-0.4.4.gem",
93
- "spec/am_spec_helper.rb",
94
- "spec/ar_spec_helper.rb",
95
- "spec/mailee-api-am_spec.rb",
96
- "spec/mailee-api-ar_spec.rb",
97
- "spec/mailee-api_spec.rb",
98
- "spec/spec_helper.rb",
99
- "tasks/mailee_tasks.rake"
21
+ ".rspec",
22
+ "Gemfile",
23
+ "Gemfile.lock",
24
+ "LICENSE",
25
+ "MIT-LICENSE",
26
+ "README.markdown",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "app/.gitignore",
30
+ "app/Gemfile",
31
+ "app/Gemfile.lock",
32
+ "app/README",
33
+ "app/Rakefile",
34
+ "app/app/controllers/application_controller.rb",
35
+ "app/app/helpers/application_helper.rb",
36
+ "app/app/mailers/foo.rb",
37
+ "app/app/views/foo/bar.html.erb",
38
+ "app/app/views/foo/baz.text.erb",
39
+ "app/app/views/layouts/application.html.erb",
40
+ "app/config.ru",
41
+ "app/config/application.rb",
42
+ "app/config/boot.rb",
43
+ "app/config/database.yml",
44
+ "app/config/environment.rb",
45
+ "app/config/environments/development.rb",
46
+ "app/config/environments/production.rb",
47
+ "app/config/environments/test.rb",
48
+ "app/config/initializers/backtrace_silencers.rb",
49
+ "app/config/initializers/inflections.rb",
50
+ "app/config/initializers/mailee.rb",
51
+ "app/config/initializers/mime_types.rb",
52
+ "app/config/initializers/secret_token.rb",
53
+ "app/config/initializers/session_store.rb",
54
+ "app/config/locales/en.yml",
55
+ "app/config/routes.rb",
56
+ "app/db/schema.rb",
57
+ "app/db/seeds.rb",
58
+ "app/doc/README_FOR_APP",
59
+ "app/lib/tasks/.gitkeep",
60
+ "app/public/404.html",
61
+ "app/public/422.html",
62
+ "app/public/500.html",
63
+ "app/public/favicon.ico",
64
+ "app/public/images/rails.png",
65
+ "app/public/index.html",
66
+ "app/public/javascripts/application.js",
67
+ "app/public/javascripts/controls.js",
68
+ "app/public/javascripts/dragdrop.js",
69
+ "app/public/javascripts/effects.js",
70
+ "app/public/javascripts/prototype.js",
71
+ "app/public/javascripts/rails.js",
72
+ "app/public/robots.txt",
73
+ "app/public/stylesheets/.gitkeep",
74
+ "app/script/rails",
75
+ "app/test.rb",
76
+ "app/test/functional/foo_test.rb",
77
+ "app/test/performance/browsing_test.rb",
78
+ "app/test/test_helper.rb",
79
+ "app/vendor/plugins/.gitkeep",
80
+ "init.rb",
81
+ "install.rb",
82
+ "lib/mailee.rb",
83
+ "lib/mailee/action_mailer.rb",
84
+ "lib/mailee/active_record.rb",
85
+ "lib/mailee/active_resource.rb",
86
+ "lib/mailee/railties.rb",
87
+ "mailee.gemspec",
88
+ "pkg/mailee-0.1.0.gem",
89
+ "pkg/mailee-0.1.1.gem",
90
+ "pkg/mailee-0.1.2.gem",
91
+ "pkg/mailee-0.4.4.gem",
92
+ "pkg/mailee-0.5.1.gem",
93
+ "spec/am_spec_helper.rb",
94
+ "spec/ar_spec_helper.rb",
95
+ "spec/mailee-api-am_spec.rb",
96
+ "spec/mailee-api-ar_spec.rb",
97
+ "spec/mailee-api_spec.rb",
98
+ "spec/spec_helper.rb",
99
+ "tasks/mailee_tasks.rake"
100
100
  ]
101
101
  s.homepage = %q{http://help.mailee.me/integration_rails.html}
102
- s.rdoc_options = ["--charset=UTF-8"]
103
102
  s.require_paths = ["lib"]
104
103
  s.rubygems_version = %q{1.3.7}
105
- s.summary = %q{Gem de integração do Mailee.me}
106
- s.test_files = [
107
- "spec/am_spec_helper.rb",
108
- "spec/ar_spec_helper.rb",
109
- "spec/mailee-api-am_spec.rb",
110
- "spec/mailee-api-ar_spec.rb",
111
- "spec/mailee-api_spec.rb",
112
- "spec/spec_helper.rb"
113
- ]
104
+ s.summary = %q{Gem para uso da API do Mailee.me}
114
105
 
115
106
  if s.respond_to? :specification_version then
116
107
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
117
108
  s.specification_version = 3
118
109
 
119
110
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
111
+ s.add_runtime_dependency(%q<actionmailer>, ["~> 3.0"])
112
+ s.add_runtime_dependency(%q<activeresource>, ["~> 3.0"])
113
+ s.add_runtime_dependency(%q<activerecord>, ["~> 3.0"])
114
+ s.add_development_dependency(%q<rspec>, ["~> 2.6.0"])
115
+ s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
116
+ s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
117
+ s.add_development_dependency(%q<sqlite3>, ["~> 1.3.4"])
120
118
  else
119
+ s.add_dependency(%q<actionmailer>, ["~> 3.0"])
120
+ s.add_dependency(%q<activeresource>, ["~> 3.0"])
121
+ s.add_dependency(%q<activerecord>, ["~> 3.0"])
122
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
123
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
124
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
125
+ s.add_dependency(%q<sqlite3>, ["~> 1.3.4"])
121
126
  end
122
127
  else
128
+ s.add_dependency(%q<actionmailer>, ["~> 3.0"])
129
+ s.add_dependency(%q<activeresource>, ["~> 3.0"])
130
+ s.add_dependency(%q<activerecord>, ["~> 3.0"])
131
+ s.add_dependency(%q<rspec>, ["~> 2.6.0"])
132
+ s.add_dependency(%q<bundler>, ["~> 1.0.0"])
133
+ s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
134
+ s.add_dependency(%q<sqlite3>, ["~> 1.3.4"])
123
135
  end
124
136
  end
125
137
 
Binary file
@@ -4,6 +4,7 @@ require 'rspec'
4
4
  require 'sqlite3'
5
5
  require 'active_record'
6
6
  require 'mailee'
7
+ require 'mailee/active_record'
7
8
 
8
9
  RSpec.configure do |config|
9
10
  Mailee::Config.site = "http://api.869a72b17b05a.mailee-api.mailee.me"
@@ -35,9 +35,9 @@ describe "Mailee" do
35
35
  it "should get all contacts" do
36
36
  Array.new(25){|i| Mailee::Contact.create :email => "rest_test_#{@moment}_#{i}@test.com"}
37
37
  contacts = Mailee::Contact.find(:all)
38
- contacts.size.should be(15)
38
+ contacts.size.should == 15
39
39
  contacts = Mailee::Contact.find(:all, :params => {:page => 2, :by_keyword => "rest_test_#{@moment}" })
40
- contacts.size.should be(10)
40
+ contacts.size.should == 10
41
41
  end
42
42
 
43
43
  it "should create contact - and find by id" do
@@ -108,6 +108,13 @@ describe "Mailee" do
108
108
  contact.unsubscribe.should_not be nil
109
109
  end
110
110
 
111
+ it "should create a contact, subscribe to a list and unsubscribe from a list" do
112
+ contact = Mailee::Contact.create :email => "rest_test_#{@moment}@test.com"
113
+ contact.list_subscribe("rest_test_#{@moment}").should_not be nil
114
+ Mailee::List.all.find{|l| l.name == "rest_test_#{@moment}"}.name.should == "rest_test_#{@moment}"
115
+ contact.list_unsubscribe("rest_test_#{@moment}").should_not be nil
116
+ end
117
+
111
118
  it "should search contacts" do
112
119
  Mailee::Contact.search("rest_test").should_not be nil
113
120
  end
@@ -142,7 +149,8 @@ describe "Mailee" do
142
149
  message.ready(10.days.from_now).should_not be nil
143
150
  end
144
151
 
145
- it "should import (quick) - specific methods" do Mailee::Quick.import("rest_test_#{@moment}@test.com\nrest_test_2_#{@moment}@test.com\nrest_test_3_#{@moment}@test.com").should_not be nil
152
+ it "should import (quick) - specific methods" do
153
+ Mailee::Quick.import("rest_test_#{@moment}@test.com\nrest_test_2_#{@moment}@test.com\nrest_test_3_#{@moment}@test.com").should_not be nil
146
154
  end
147
155
 
148
156
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mailee
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
8
+ - 6
9
9
  - 0
10
- version: 0.5.0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Juan Maiz
@@ -15,10 +15,118 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-03-28 00:00:00 -03:00
18
+ date: 2011-10-21 00:00:00 -02:00
19
19
  default_executable:
20
- dependencies: []
21
-
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ requirement: &id001 !ruby/object:Gem::Requirement
23
+ none: false
24
+ requirements:
25
+ - - ~>
26
+ - !ruby/object:Gem::Version
27
+ hash: 7
28
+ segments:
29
+ - 3
30
+ - 0
31
+ version: "3.0"
32
+ type: :runtime
33
+ name: actionmailer
34
+ prerelease: false
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ none: false
39
+ requirements:
40
+ - - ~>
41
+ - !ruby/object:Gem::Version
42
+ hash: 7
43
+ segments:
44
+ - 3
45
+ - 0
46
+ version: "3.0"
47
+ type: :runtime
48
+ name: activeresource
49
+ prerelease: false
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ~>
56
+ - !ruby/object:Gem::Version
57
+ hash: 7
58
+ segments:
59
+ - 3
60
+ - 0
61
+ version: "3.0"
62
+ type: :runtime
63
+ name: activerecord
64
+ prerelease: false
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ requirement: &id004 !ruby/object:Gem::Requirement
68
+ none: false
69
+ requirements:
70
+ - - ~>
71
+ - !ruby/object:Gem::Version
72
+ hash: 23
73
+ segments:
74
+ - 2
75
+ - 6
76
+ - 0
77
+ version: 2.6.0
78
+ type: :development
79
+ name: rspec
80
+ prerelease: false
81
+ version_requirements: *id004
82
+ - !ruby/object:Gem::Dependency
83
+ requirement: &id005 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ~>
87
+ - !ruby/object:Gem::Version
88
+ hash: 23
89
+ segments:
90
+ - 1
91
+ - 0
92
+ - 0
93
+ version: 1.0.0
94
+ type: :development
95
+ name: bundler
96
+ prerelease: false
97
+ version_requirements: *id005
98
+ - !ruby/object:Gem::Dependency
99
+ requirement: &id006 !ruby/object:Gem::Requirement
100
+ none: false
101
+ requirements:
102
+ - - ~>
103
+ - !ruby/object:Gem::Version
104
+ hash: 7
105
+ segments:
106
+ - 1
107
+ - 6
108
+ - 4
109
+ version: 1.6.4
110
+ type: :development
111
+ name: jeweler
112
+ prerelease: false
113
+ version_requirements: *id006
114
+ - !ruby/object:Gem::Dependency
115
+ requirement: &id007 !ruby/object:Gem::Requirement
116
+ none: false
117
+ requirements:
118
+ - - ~>
119
+ - !ruby/object:Gem::Version
120
+ hash: 19
121
+ segments:
122
+ - 1
123
+ - 3
124
+ - 4
125
+ version: 1.3.4
126
+ type: :development
127
+ name: sqlite3
128
+ prerelease: false
129
+ version_requirements: *id007
22
130
  description: Permite sincronizar automaticamente seus modelos com o Mailee.me, inclusive com gerenciamento de optin.
23
131
  email: suporte@mailee.me
24
132
  executables: []
@@ -29,14 +137,13 @@ extra_rdoc_files:
29
137
  - LICENSE
30
138
  - README.markdown
31
139
  - README.markdown.pt
32
- - README.rdoc
33
140
  files:
34
- - .gitignore
35
141
  - .rspec
142
+ - Gemfile
143
+ - Gemfile.lock
36
144
  - LICENSE
37
145
  - MIT-LICENSE
38
146
  - README.markdown
39
- - README.rdoc
40
147
  - Rakefile
41
148
  - VERSION
42
149
  - app/.gitignore
@@ -102,6 +209,7 @@ files:
102
209
  - pkg/mailee-0.1.1.gem
103
210
  - pkg/mailee-0.1.2.gem
104
211
  - pkg/mailee-0.4.4.gem
212
+ - pkg/mailee-0.5.1.gem
105
213
  - spec/am_spec_helper.rb
106
214
  - spec/ar_spec_helper.rb
107
215
  - spec/mailee-api-am_spec.rb
@@ -115,8 +223,8 @@ homepage: http://help.mailee.me/integration_rails.html
115
223
  licenses: []
116
224
 
117
225
  post_install_message:
118
- rdoc_options:
119
- - --charset=UTF-8
226
+ rdoc_options: []
227
+
120
228
  require_paths:
121
229
  - lib
122
230
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -143,11 +251,6 @@ rubyforge_project:
143
251
  rubygems_version: 1.3.7
144
252
  signing_key:
145
253
  specification_version: 3
146
- summary: "Gem de integra\xC3\xA7\xC3\xA3o do Mailee.me"
147
- test_files:
148
- - spec/am_spec_helper.rb
149
- - spec/ar_spec_helper.rb
150
- - spec/mailee-api-am_spec.rb
151
- - spec/mailee-api-ar_spec.rb
152
- - spec/mailee-api_spec.rb
153
- - spec/spec_helper.rb
254
+ summary: Gem para uso da API do Mailee.me
255
+ test_files: []
256
+
data/.gitignore DELETED
@@ -1 +0,0 @@
1
- mailee-api-test.db
@@ -1,64 +0,0 @@
1
- = Mailee - Email marketing para quem entende de tecnologia.
2
- ==============
3
-
4
- == O problema
5
-
6
- Você está desenvolvendo um sistema (e-commerce, cms, erp...) e o seu cliente solicita a possibilidade de enviar e-mails promocionais, ou notícias, para diversos contatos. Por experiência própria, você sabe que enviar e-mails não é coisa para _scriptkiddies_, e que, de fato, não vale a pena o esforço de desenvolver todo um sistema que faça o envio, garanta a entrega, analise os retornos e também apresente resultados de tudo isso. O problema é que os sistemas que você conhece não permitem uma integração fácil e rápida com seus sistemas em Rails...
7
-
8
- == A solução
9
-
10
- Este plugin tem como objetivo manter os contatos da sua aplicação sincronizados com os contatos do Mailee (www.mailee.me) sem muito esforço. De fato, basta executar o método "sync_with_mailee" no seu modelo (clientes, contatos, pessoas...) que este irá automaticamente realizar as tarefas de inserir, atualizar, excluir e descadastrar via REST. No Mailee, seu cliente poderá então montar as mensagens e enviar para os contatos.
11
-
12
- == Instalação
13
-
14
- * Execute o seguinte comando em sua aplicação Rails:
15
- > script/plugin install git@github.com:softa/mailee-api.git
16
- * Adicione a seguinte linha de configuração em sua aplicação:
17
- Mailee::Config.site = 'http://api.chave.subdominio.wizee.net'
18
- O site você descobre entrando no Mailee e indo em Configurações > Integração > REST
19
-
20
- Pronto!
21
-
22
- == Uso
23
-
24
- * Na mão (console)
25
- Você pode usar a api do maile "na mão". Basta abrir o console e usar:
26
- > ruby script/console
27
- >> Contact.find(:all)
28
- >> Contact.find(:first)
29
- >> Contact.create(:name => 'Bertrand Russell', :email => 'russell@cambridge.edu.uk')
30
- Mais exemplos você encontra(rá) na (futura) documentação da API.
31
- * Com modelos (ActiveRecord)
32
- Este plugin é feito para manter um modelo AciveRecord sincronizado com os contatos do Mailee. Para fazer isto, basta colocar o método "sync_with_mailee" em seu modelo. Se o seu modelo se chama "Contact", por exemplo, o código seria este:
33
- =code
34
- class Contact < ActiveRecord::Base
35
- sync_with_mailee
36
- end
37
- A priori, o plugin espera que você tenha pelo menos um campo de email e pressupõe que o nome deste campo é "email". Se o campo da sua tabela não tem este nome, você pode fazer o seguinte:
38
- =code
39
- class Contact < ActiveRecord::Base
40
- sync_with_mailee :email => :my_email_column
41
- end
42
- Onde "my_email_column" é a coluna que guarda o e-mail na sua tabela.
43
- O plugin também pode manter o nome do seu contato sincronizado, bastando para isto ter um campo "name" que será mapeado por padrão, mas que também pode ser sobrescrito:
44
- =code
45
- class Contact < ActiveRecord::Base
46
- sync_with_mailee :email => :my_email_column, :name => :my_name_column
47
- end
48
- Por fim, o plugin permite que o cadastro no Mailee seja condicionado a um campo booleano (o padrão é "news"), que corresponde ao "opt-in" (a escolha de receber ou não mensagens) do seu contato. Ou seja, se o valor do campo for false, o plugin não cadastrará o contato no Mailee, e se o contato já estiver cadastrado e o valor deste campo mudar para falso, o contato será descadastrado e _não_ poderá ser mais cadastrado no Mailee (normas de privacidade). Para mudar o campo, basta:
49
- =code
50
- class Contact < ActiveRecord::Base
51
- sync_with_mailee :email => :my_email_column, :name => :my_name_column, :news => :do_you_really_accept_to_receive_our_newsletter
52
- end
53
- * Tarefas (rake)
54
- Caso você já tenha itens cadastrados, é necessário adicionar estes contatos ao Mailee antes de mais nada. Para isso execute a tarefa rake:
55
- > rake mailee:send CLASS=Contact
56
- Onde "Contact" é o nome do seu modelo. Se você quer apenas enviar os contatos a partir de uma determinada data, você pode fazê-lo desta forma:
57
- > rake mailee:send CLASS=Contact AFTER=5.days.ago
58
- Neste caso, ele vai apenas sincronizar os contatos que foram atualizados (baseado no campo "updated_at") nos últimos 5 dias.
59
- * Mas... como isso funciona, caso eu precise saber?
60
- O plugin utiliza a API REST do Mailee para enviar dados, por isto cuide bem da sua URL - se alguém descobrir isso pode ser ruim. Para saber qual o contato na sua aplicação o plugin utiliza um campo disponível no Mailee chamado "internal_id" o qual recebe o "id" da sua tabela na criação. Este id é usado nas atualizações, descadastros e exclusões, então tome (ou avise seu cliente para tomar!) cuidado ao editar este campo na interface do Mailee.
61
-
62
- == Dúvidas?
63
-
64
- Qualquer dúvida, não hesite em falar conosco pelo e-mail suporte@mailee.me.