blog_logic 0.7.7 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: []