georgia_mailer 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -7
- data/app/assets/stylesheets/georgia_mailer/application.css.scss +1 -0
- data/app/assets/stylesheets/georgia_mailer/mixins/_ellipsis.scss +8 -0
- data/app/assets/stylesheets/georgia_mailer/modules/_message.scss +8 -3
- data/app/models/georgia_mailer/message.rb +2 -6
- data/lib/generators/georgia_mailer/install/install_generator.rb +23 -0
- data/{app/models/georgia/extensions/solr/georgia_mailer_message.rb → lib/georgia/indexer/extensions/solr_adapter/georgia_mailer/message.rb} +14 -2
- data/lib/georgia/indexer/extensions/tire_adapter/georgia_mailer/message.rb +43 -0
- data/lib/georgia_mailer/version.rb +1 -1
- data/lib/tasks/georgia_mailer_tasks.rake +13 -4
- metadata +6 -19
- data/app/models/georgia_mailer/concerns/solr_georgia_mailer_message_extension.rb +0 -42
- data/app/models/georgia_mailer/concerns/tire_georgia_mailer_message_extension.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97372c56f9bbf66fbf16f0e635649c216f7e9cee
|
4
|
+
data.tar.gz: 28ad9ad53df078158cd2547b143f66e0bf02ad5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5f2f18244dad2fe6376c42f269af67f70cca35028138577fd1eb615226893771ffaf85f77380a7b25c1cea30f2286d5d81c6f388158b4dd0d8753e9c722c264
|
7
|
+
data.tar.gz: dc2bd696472c16b6489c127ffbe62c34808420f949d79d77e9bec5b751930bdf0ce0267760fabb85a7cc30f17170f8125f6bea4a3fd05156dbbf3a7878c7522d
|
data/README.md
CHANGED
@@ -6,14 +6,11 @@ Make sure you have a working Georgia installation before proceding with these in
|
|
6
6
|
|
7
7
|
### Installation
|
8
8
|
|
9
|
-
|
9
|
+
The install generator will add missing migrations and automatically migrate your database.
|
10
|
+
If you selected ElasticSearch as your indexer with Tire, your index will be created.
|
11
|
+
Finally, it will mount the engine in your routes.rb file under '/mailer'
|
10
12
|
|
11
|
-
|
12
|
-
rake db:migrate
|
13
|
-
|
14
|
-
If you selected ElasticSearch as your indexer, create the GeorgiaMailer::Message index:
|
15
|
-
|
16
|
-
rake environment tire:import CLASS=GeorgiaMailer::Message FORCE=true
|
13
|
+
rails generate georgia_mailer:install
|
17
14
|
|
18
15
|
### Heroku
|
19
16
|
|
@@ -5,7 +5,11 @@
|
|
5
5
|
@extend %clickable;
|
6
6
|
}
|
7
7
|
.message-timestamp {
|
8
|
-
|
8
|
+
white-space: nowrap;
|
9
|
+
text-align: right;
|
10
|
+
font-size: 0.9em;
|
11
|
+
width: 125px;
|
12
|
+
max-width: 125px;
|
9
13
|
}
|
10
14
|
|
11
15
|
.message-info {
|
@@ -43,11 +47,12 @@
|
|
43
47
|
}
|
44
48
|
|
45
49
|
.message-attachment {
|
46
|
-
|
50
|
+
white-space: nowrap;
|
51
|
+
width: 25px;
|
52
|
+
max-width: 25px;
|
47
53
|
}
|
48
54
|
|
49
55
|
.message-message span {
|
50
|
-
@extend .nowrap;
|
51
56
|
@extend .ellipsis;
|
52
57
|
max-width: 800px;
|
53
58
|
}
|
@@ -1,6 +1,8 @@
|
|
1
1
|
module GeorgiaMailer
|
2
2
|
class Message < ActiveRecord::Base
|
3
3
|
|
4
|
+
include Georgia::Indexer::Adapter
|
5
|
+
|
4
6
|
attr_accessible :name, :email, :subject, :message, :attachment, :phone
|
5
7
|
delegate :url, :current_path, :size, :content_type, :filename, to: :attachment
|
6
8
|
|
@@ -24,11 +26,5 @@ module GeorgiaMailer
|
|
24
26
|
@status ||= spam ? 'spam' : 'clean'
|
25
27
|
end
|
26
28
|
|
27
|
-
include Georgia::Indexer::Adapter
|
28
|
-
is_searchable({
|
29
|
-
solr: GeorgiaMailer::Concerns::SolrGeorgiaMailerMessageExtension,
|
30
|
-
tire: GeorgiaMailer::Concerns::TireGeorgiaMailerMessageExtension
|
31
|
-
})
|
32
|
-
|
33
29
|
end
|
34
30
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module GeorgiaMailer
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < ::Rails::Generators::Base
|
4
|
+
|
5
|
+
def mount_engine
|
6
|
+
route "mount GeorgiaMailer::Engine => '/mailer'"
|
7
|
+
end
|
8
|
+
|
9
|
+
def run_migrations
|
10
|
+
rake "railties:install:migrations"
|
11
|
+
rake "db:migrate"
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_indices
|
15
|
+
if defined? Tire
|
16
|
+
say("Creating elasticsearch indices", :yellow)
|
17
|
+
rake "environment tire:import CLASS=GeorgiaMailer::Message FORCE=true"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -2,8 +2,8 @@ require 'active_support/concern'
|
|
2
2
|
|
3
3
|
module Georgia
|
4
4
|
module Indexer
|
5
|
-
module
|
6
|
-
module
|
5
|
+
module SolrAdapter
|
6
|
+
module GeorgiaMailerMessageExtension
|
7
7
|
extend ActiveSupport::Concern
|
8
8
|
|
9
9
|
included do
|
@@ -25,6 +25,18 @@ module Georgia
|
|
25
25
|
time :created_at
|
26
26
|
end
|
27
27
|
|
28
|
+
def self.search_index model, params
|
29
|
+
search do
|
30
|
+
fulltext params[:query] do
|
31
|
+
fields(:name, :email, :message, :subject, :phone)
|
32
|
+
end
|
33
|
+
facet :spam
|
34
|
+
with(:spam, (params[:s] || 'clean'))
|
35
|
+
order_by (params[:o] || :created_at), (params[:dir] || :desc)
|
36
|
+
paginate(page: params[:page], per_page: (params[:per] || 25))
|
37
|
+
end.results
|
38
|
+
end
|
39
|
+
|
28
40
|
end
|
29
41
|
end
|
30
42
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
|
3
|
+
module Georgia
|
4
|
+
module Indexer
|
5
|
+
module TireAdapter
|
6
|
+
module GeorgiaMailerMessageExtension
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
|
11
|
+
include ::Tire::Model::Search
|
12
|
+
include ::Tire::Model::Callbacks
|
13
|
+
|
14
|
+
def to_indexed_json
|
15
|
+
{
|
16
|
+
name: name,
|
17
|
+
email: email,
|
18
|
+
message: message,
|
19
|
+
subject: subject,
|
20
|
+
phone: phone,
|
21
|
+
status: status,
|
22
|
+
created_at: created_at.strftime('%F')
|
23
|
+
}.to_json
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.search_index model, params
|
27
|
+
model.tire.search(page: (params[:page] || 1), per_page: (params[:per] || 25)) do
|
28
|
+
if params[:query].present?
|
29
|
+
query do
|
30
|
+
boolean do
|
31
|
+
must { string params[:query], default_operator: "AND" }
|
32
|
+
end
|
33
|
+
end
|
34
|
+
sort { by (params[:o] || :created_at), (params[:dir] || :desc) }
|
35
|
+
end
|
36
|
+
end.results
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -1,4 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
namespace :messages do
|
2
|
+
|
3
|
+
desc "Send to Akismet all unverified messages"
|
4
|
+
task verify: :environment do
|
5
|
+
puts "Check for spam. Currently have #{GeorgiaMailer::Message.spam.count} spam and #{GeorgiaMailer::Message.ham.count} ham messages."
|
6
|
+
puts "Checking #{GeorgiaMailer::Message.where(verified_at: nil).count} unverified messages."
|
7
|
+
GeorgiaMailer::Message.where(verified_at: nil).find_each do |message|
|
8
|
+
message.update_attributes(spam: message.spam?, verified_at: Time.zone.now)
|
9
|
+
end
|
10
|
+
puts "Check completed. #{GeorgiaMailer::Message.spam.count} spam. #{GeorgiaMailer::Message.ham.count} ham."
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: georgia_mailer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mathieu Gagné
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: rails
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 3.2.6
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 3.2.6
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: georgia
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -78,11 +64,9 @@ files:
|
|
78
64
|
- app/assets/javascripts/georgia_mailer/application.js
|
79
65
|
- app/assets/stylesheets/georgia_mailer/settings/_color.scss
|
80
66
|
- app/assets/stylesheets/georgia_mailer/modules/_message.scss
|
67
|
+
- app/assets/stylesheets/georgia_mailer/mixins/_ellipsis.scss
|
81
68
|
- app/assets/stylesheets/georgia_mailer/application.css.scss
|
82
69
|
- app/decorators/georgia_mailer/message_decorator.rb
|
83
|
-
- app/models/georgia/extensions/solr/georgia_mailer_message.rb
|
84
|
-
- app/models/georgia_mailer/concerns/tire_georgia_mailer_message_extension.rb
|
85
|
-
- app/models/georgia_mailer/concerns/solr_georgia_mailer_message_extension.rb
|
86
70
|
- app/models/georgia_mailer/message.rb
|
87
71
|
- app/controllers/georgia/messages_controller.rb
|
88
72
|
- app/controllers/georgia_mailer/messages_controller.rb
|
@@ -101,7 +85,10 @@ files:
|
|
101
85
|
- config/routes.rb
|
102
86
|
- db/migrate/001_create_georgia_mailer_messages.rb
|
103
87
|
- lib/tasks/georgia_mailer_tasks.rake
|
88
|
+
- lib/generators/georgia_mailer/install/install_generator.rb
|
104
89
|
- lib/georgia_mailer.rb
|
90
|
+
- lib/georgia/indexer/extensions/solr_adapter/georgia_mailer/message.rb
|
91
|
+
- lib/georgia/indexer/extensions/tire_adapter/georgia_mailer/message.rb
|
105
92
|
- lib/georgia_mailer/engine.rb
|
106
93
|
- lib/georgia_mailer/version.rb
|
107
94
|
- MIT-LICENSE
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module GeorgiaMailer
|
4
|
-
module Concerns
|
5
|
-
module SolrGeorgiaMailerMessageExtension
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
|
10
|
-
searchable do
|
11
|
-
text :name
|
12
|
-
text :email
|
13
|
-
text :message
|
14
|
-
text :subject
|
15
|
-
text :phone
|
16
|
-
string :spam do
|
17
|
-
status
|
18
|
-
end
|
19
|
-
string :name
|
20
|
-
string :email
|
21
|
-
string :phone
|
22
|
-
string :subject
|
23
|
-
string :message
|
24
|
-
time :created_at
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.search_index model, params
|
28
|
-
@search = Georgia::Message.search do
|
29
|
-
fulltext params[:query] do
|
30
|
-
fields(:name, :email, :message, :subject, :phone)
|
31
|
-
end
|
32
|
-
facet :spam
|
33
|
-
with(:spam, (params[:s] || 'clean'))
|
34
|
-
order_by (params[:o] || :created_at), (params[:dir] || :desc)
|
35
|
-
paginate(page: params[:page], per_page: (params[:per] || 25))
|
36
|
-
end.results
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'active_support/concern'
|
2
|
-
|
3
|
-
module GeorgiaMailer
|
4
|
-
module Concerns
|
5
|
-
module TireGeorgiaMailerMessageExtension
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
|
8
|
-
included do
|
9
|
-
|
10
|
-
include ::Tire::Model::Search
|
11
|
-
include ::Tire::Model::Callbacks
|
12
|
-
|
13
|
-
def to_indexed_json
|
14
|
-
{
|
15
|
-
name: name,
|
16
|
-
email: email,
|
17
|
-
message: message,
|
18
|
-
subject: subject,
|
19
|
-
phone: phone,
|
20
|
-
status: status,
|
21
|
-
created_at: created_at.strftime('%F')
|
22
|
-
}.to_json
|
23
|
-
end
|
24
|
-
|
25
|
-
def self.search model, params
|
26
|
-
model.tire.search(page: (params[:page] || 1), per_page: (params[:per] || 25)) do
|
27
|
-
if params[:query].present?
|
28
|
-
query do
|
29
|
-
boolean do
|
30
|
-
must { string params[:query], default_operator: "AND" }
|
31
|
-
end
|
32
|
-
end
|
33
|
-
sort { by (params[:o] || :created_at), (params[:dir] || :desc) }
|
34
|
-
end
|
35
|
-
end.results
|
36
|
-
end
|
37
|
-
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|