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 +1 -0
- data/VERSION +1 -1
- data/app/models/post.rb +36 -21
- data/blog_logic.gemspec +5 -2
- data/config/environments/test.rb +5 -2
- metadata +24 -10
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
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
|
-
#
|
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
|
-
#
|
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
|
-
|
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
|
-
|
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
|
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.
|
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-
|
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"])
|
data/config/environments/test.rb
CHANGED
@@ -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
|
-
|
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:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
+
- 1
|
7
8
|
- 0
|
8
|
-
-
|
9
|
-
|
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-
|
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:
|
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: :
|
155
|
+
type: :runtime
|
156
156
|
version_requirements: *id009
|
157
157
|
- !ruby/object:Gem::Dependency
|
158
|
-
name:
|
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:
|
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: *
|
200
|
+
version_requirements: *id012
|
187
201
|
description: An engine for search-engine-optimized blog management.
|
188
202
|
email: corey@seologic.com
|
189
203
|
executables: []
|