blog_logic 0.7.7 → 1.0.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 CHANGED
@@ -9,6 +9,7 @@ gem 'mongoid', '>= 2.0.0.beta.17'
9
9
  gem 'rails', '>= 3.0.1'
10
10
  gem 'rmagick', '2.12.2' # version compatible with heroku
11
11
  gem 'scaffold_logic', '>= 1.0.3'
12
+ gem 'tanker'
12
13
 
13
14
  group :development do
14
15
  gem 'jeweler'
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.7.7
1
+ 1.0.0
data/app/models/post.rb CHANGED
@@ -2,8 +2,17 @@ class Post
2
2
  include Mongoid::Document
3
3
  include Mongoid::Timestamps
4
4
  include BlogLogic::Base
5
+ include Tanker
5
6
 
6
- # Attributes =====================================================================================
7
+ # Constants ======================================================================================
8
+ STATES = ['draft', 'published']
9
+
10
+ # Scopes =========================================================================================
11
+ scope :drafts, :where => {:state => 'draft'}
12
+ scope :published, :where => {:state => 'published'}, :descending => :publication_date
13
+ scope :by_slug, lambda {|slug| {:where => {:slug.in => ["#{slug}".gsub('//','/'), "/#{slug}/".gsub('//','/')] } } }
14
+
15
+ # Mongoid ========================================================================================
7
16
  field :title
8
17
  field :content
9
18
  field :tags, :type => Array
@@ -14,30 +23,28 @@ class Post
14
23
  field :publication_date, :type => DateTime
15
24
  field :summary
16
25
 
17
- # Indices ========================================================================================
18
26
  index :slug, :unique => false
19
27
  index :state, :unique => false
20
28
 
21
- # Constants ======================================================================================
22
- STATES = ['draft', 'published']
23
-
24
- # Scopes =========================================================================================
25
- scope :drafts, :where => {:state => 'draft'}
26
- scope :published, :where => {:state => 'published'}, :descending => :publication_date
27
- scope :by_slug, lambda {|slug| {:where => {:slug.in => ["#{slug}".gsub('//','/'), "/#{slug}/".gsub('//','/')] } } }
28
-
29
- # Relationships ==================================================================================
30
29
  embedded_in :blog, :inverse_of => :posts
31
30
 
32
31
  # Behavior =======================================================================================
33
-
34
32
  attr_accessor :desired_slug
35
33
  has_slug :desired_slug
36
34
 
37
- # Callbacks ======================================================================================
35
+ # Tanker =========================================================================================
36
+ tankit 'idx' do
37
+ indexes :author
38
+ indexes :content
39
+ indexes :summary
40
+ indexes :tags
41
+ indexes :title
42
+ end
38
43
 
39
- # Validations ====================================================================================
44
+ after_destroy :delete_tank_indexes
45
+ after_save :update_tank_indexes
40
46
 
47
+ # Validations ====================================================================================
41
48
  class DesiredSlugPresenceAndUniquenessValidator < ActiveModel::EachValidator
42
49
  def validate_each(object, attribute, value)
43
50
  object.desired_slug = object.title unless object.desired_slug
@@ -51,16 +58,13 @@ class Post
51
58
  validates_presence_of :title
52
59
  validates_presence_of :content
53
60
 
54
- # Class methods ==================================================================================
55
-
56
61
  # Instance methods ===============================================================================
57
-
58
62
  def draft?
59
63
  self.state == 'draft' || self.state.nil?
60
64
  end
61
65
 
62
66
  def full_path
63
- "#{self.blog.humanize_path}#{self.humanize_path}".gsub('//','/')
67
+ self.path
64
68
  end
65
69
 
66
70
  def humanize_path
@@ -77,6 +81,10 @@ class Post
77
81
  self.blog.posts[i]
78
82
  end
79
83
 
84
+ def path
85
+ "#{self.blog.humanize_path}#{self.humanize_path}".gsub('//', '/')
86
+ end
87
+
80
88
  def previous_post
81
89
  i = self.my_index - 1
82
90
  i = self.blog.posts.size - 1 if i < 0
@@ -91,8 +99,16 @@ class Post
91
99
  self.state == 'published'
92
100
  end
93
101
 
102
+ def search_description
103
+ self.summary.gsub(/<\/?[^>]*>/, '')[0..199].html_safe
104
+ end
105
+
106
+ def search_title
107
+ self.title
108
+ end
109
+
94
110
  def unpublish!
95
- self.update_attributes(:state => 'draft', :publication_date => nil)
111
+ self.update_attributes :state => 'draft', :publication_date => nil
96
112
  end
97
113
 
98
114
  def state=(arg)
@@ -102,5 +118,4 @@ class Post
102
118
  def status
103
119
  self.state ? self.state.capitalize : 'Draft'
104
120
  end
105
-
106
- end
121
+ end
data/blog_logic.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{blog_logic}
8
- s.version = "0.7.7"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Bantik"]
12
- s.date = %q{2011-08-31}
12
+ s.date = %q{2011-09-01}
13
13
  s.description = %q{An engine for search-engine-optimized blog management.}
14
14
  s.email = %q{corey@seologic.com}
15
15
  s.extra_rdoc_files = [
@@ -823,6 +823,7 @@ Gem::Specification.new do |s|
823
823
  s.add_runtime_dependency(%q<rails>, [">= 3.0.1"])
824
824
  s.add_runtime_dependency(%q<rmagick>, ["= 2.12.2"])
825
825
  s.add_runtime_dependency(%q<scaffold_logic>, [">= 1.0.3"])
826
+ s.add_runtime_dependency(%q<tanker>, [">= 0"])
826
827
  s.add_development_dependency(%q<jeweler>, [">= 0"])
827
828
  s.add_development_dependency(%q<nokogiri>, [">= 0"])
828
829
  s.add_development_dependency(%q<rspec>, [">= 1.2.9"])
@@ -835,6 +836,7 @@ Gem::Specification.new do |s|
835
836
  s.add_dependency(%q<rails>, [">= 3.0.1"])
836
837
  s.add_dependency(%q<rmagick>, ["= 2.12.2"])
837
838
  s.add_dependency(%q<scaffold_logic>, [">= 1.0.3"])
839
+ s.add_dependency(%q<tanker>, [">= 0"])
838
840
  s.add_dependency(%q<jeweler>, [">= 0"])
839
841
  s.add_dependency(%q<nokogiri>, [">= 0"])
840
842
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
@@ -848,6 +850,7 @@ Gem::Specification.new do |s|
848
850
  s.add_dependency(%q<rails>, [">= 3.0.1"])
849
851
  s.add_dependency(%q<rmagick>, ["= 2.12.2"])
850
852
  s.add_dependency(%q<scaffold_logic>, [">= 1.0.3"])
853
+ s.add_dependency(%q<tanker>, [">= 0"])
851
854
  s.add_dependency(%q<jeweler>, [">= 0"])
852
855
  s.add_dependency(%q<nokogiri>, [">= 0"])
853
856
  s.add_dependency(%q<rspec>, [">= 1.2.9"])
@@ -33,6 +33,9 @@ BlogLogic::Application.configure do
33
33
  # Print deprecation notices to the stderr
34
34
  config.active_support.deprecation = :stderr
35
35
 
36
+ # Custom settings
36
37
  config.admin_host = 'admin.bloglogic.com'
37
-
38
- end
38
+ # tanker gem
39
+ config.index_tank_url = 'http://:PctyyJitroN8iv@82wog.api.indextank.com'
40
+ config.tanker_pagination_backend = :kaminari
41
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blog_logic
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
+ - 1
7
8
  - 0
8
- - 7
9
- - 7
10
- version: 0.7.7
9
+ - 0
10
+ version: 1.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Bantik
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-08-31 00:00:00 -05:00
18
+ date: 2011-09-01 00:00:00 -05:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -141,7 +141,7 @@ dependencies:
141
141
  type: :runtime
142
142
  version_requirements: *id008
143
143
  - !ruby/object:Gem::Dependency
144
- name: jeweler
144
+ name: tanker
145
145
  prerelease: false
146
146
  requirement: &id009 !ruby/object:Gem::Requirement
147
147
  none: false
@@ -152,10 +152,10 @@ dependencies:
152
152
  segments:
153
153
  - 0
154
154
  version: "0"
155
- type: :development
155
+ type: :runtime
156
156
  version_requirements: *id009
157
157
  - !ruby/object:Gem::Dependency
158
- name: nokogiri
158
+ name: jeweler
159
159
  prerelease: false
160
160
  requirement: &id010 !ruby/object:Gem::Requirement
161
161
  none: false
@@ -169,9 +169,23 @@ dependencies:
169
169
  type: :development
170
170
  version_requirements: *id010
171
171
  - !ruby/object:Gem::Dependency
172
- name: rspec
172
+ name: nokogiri
173
173
  prerelease: false
174
174
  requirement: &id011 !ruby/object:Gem::Requirement
175
+ none: false
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ hash: 3
180
+ segments:
181
+ - 0
182
+ version: "0"
183
+ type: :development
184
+ version_requirements: *id011
185
+ - !ruby/object:Gem::Dependency
186
+ name: rspec
187
+ prerelease: false
188
+ requirement: &id012 !ruby/object:Gem::Requirement
175
189
  none: false
176
190
  requirements:
177
191
  - - ">="
@@ -183,7 +197,7 @@ dependencies:
183
197
  - 9
184
198
  version: 1.2.9
185
199
  type: :development
186
- version_requirements: *id011
200
+ version_requirements: *id012
187
201
  description: An engine for search-engine-optimized blog management.
188
202
  email: corey@seologic.com
189
203
  executables: []