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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9b39fdbd73795a29fb6f1f300d92c333666742a2
4
- data.tar.gz: b247a8adc76637db9504b5cb62e9f2667ce577ec
3
+ metadata.gz: 97372c56f9bbf66fbf16f0e635649c216f7e9cee
4
+ data.tar.gz: 28ad9ad53df078158cd2547b143f66e0bf02ad5a
5
5
  SHA512:
6
- metadata.gz: c53ae62db423a6e55a004c5fb658e19106529de50b24570b2cc16d1c842cf497a7a384f6179eaabcbd3c5d3c09c3c95d879451f4141e142ba0b907da77b1e798
7
- data.tar.gz: ae2b705af810ac7ffeac666f26182699d831b06804a22048252dd0b5dcc62fd8fec91173403f253c3a078f638587f0587fa4bfb0eee920e5ec99aa4f247bf80d
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
- Add migrations and migrate
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
- rake railties:install:migrations
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
 
@@ -1,2 +1,3 @@
1
1
  @import "settings/*";
2
+ @import "mixins/*";
2
3
  @import "modules/*";
@@ -0,0 +1,8 @@
1
+ .ellipsis {
2
+ display: inline-block;
3
+ white-space: nowrap;
4
+ overflow: hidden;
5
+ text-overflow: ellipsis;
6
+ -o-text-overflow: ellipsis;
7
+ -ms-text-overflow: ellipsis;
8
+ }
@@ -5,7 +5,11 @@
5
5
  @extend %clickable;
6
6
  }
7
7
  .message-timestamp {
8
- @extend .timestamp--long;
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
- @extend .tiny;
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 Extensions
6
- module Solr
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,3 +1,3 @@
1
1
  module GeorgiaMailer
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -1,4 +1,13 @@
1
- # desc "Explaining what the task does"
2
- # task :georgia_mailer do
3
- # # Task goes here
4
- # end
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.0
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-03 00:00:00.000000000 Z
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