concen 0.1.4 → 0.1.5
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/README.md +5 -1
- data/app/models/concen/page.rb +14 -18
- data/concen.gemspec +1 -1
- data/lib/concen/version.rb +1 -1
- data/test/support/raw_text/code_blocks.txt +1 -3
- data/test/support/raw_text/slug.txt +3 -0
- data/test/support/raw_text/title.txt +1 -0
- data/test/unit/grid_file_test.rb +1 -1
- data/test/unit/page_test.rb +15 -4
- metadata +31 -27
data/README.md
CHANGED
@@ -128,7 +128,11 @@ If you have used Concen for any of your websites and would like to be listed her
|
|
128
128
|
|
129
129
|
## Version History
|
130
130
|
|
131
|
-
- **0.1.
|
131
|
+
- **0.1.5** (23 August 2011):
|
132
|
+
|
133
|
+
- A better approach of handling slug. Slug by default is generated from title. It can then be overwritten by specifying "Slug" in metadata declaration (from the text editor).
|
134
|
+
|
135
|
+
- **0.1.4** (22 August 2011):
|
132
136
|
|
133
137
|
- Simpler setup process (only in 2 steps).
|
134
138
|
- Brief guide is available upon the completion of setup.
|
data/app/models/concen/page.rb
CHANGED
@@ -18,7 +18,7 @@ module Concen
|
|
18
18
|
field :level, :type => Integer
|
19
19
|
field :title, :type => String
|
20
20
|
field :description, :type => String
|
21
|
-
field :
|
21
|
+
field :slug, :type => String
|
22
22
|
field :raw_text, :type => String
|
23
23
|
field :content, :type => Hash, :default => {}
|
24
24
|
field :position, :type => Integer
|
@@ -29,12 +29,12 @@ module Concen
|
|
29
29
|
field :status, :type => String
|
30
30
|
|
31
31
|
validates_presence_of :title
|
32
|
-
validates_presence_of :
|
32
|
+
validates_presence_of :slug
|
33
33
|
validates_uniqueness_of :title, :scope => [:parent_id, :level], :case_sensitive => false
|
34
|
-
validates_uniqueness_of :
|
34
|
+
validates_uniqueness_of :slug, :scope => [:parent_id, :level], :case_sensitive => false
|
35
35
|
|
36
36
|
before_validation :parse_raw_text
|
37
|
-
before_validation :
|
37
|
+
before_validation :set_slug
|
38
38
|
before_save :set_publish_month
|
39
39
|
before_create :set_position
|
40
40
|
after_save :unset_unused_dynamic_fields
|
@@ -45,7 +45,7 @@ module Concen
|
|
45
45
|
# This scope should not be chained with other any_of criteria.
|
46
46
|
# Because the mongo driver takes a hash for a query,
|
47
47
|
# and a hash doesn't allow duplicate keys.
|
48
|
-
scope :with_slug, ->(slug) {
|
48
|
+
scope :with_slug, ->(slug) { where(:slug => slug) }
|
49
49
|
|
50
50
|
scope :with_position, where(:position.exists => true)
|
51
51
|
scope :published, lambda {
|
@@ -57,22 +57,14 @@ module Concen
|
|
57
57
|
|
58
58
|
index :parent_id, :background => true
|
59
59
|
index :publish_time, :background => true
|
60
|
-
index :
|
60
|
+
index :slug, :background => true
|
61
61
|
|
62
62
|
# Get the list of dynamic fields by checking againts this array.
|
63
63
|
# Values should mirror the listed fields above.
|
64
|
-
PREDEFINED_FIELDS = [:_id, :parent_id, :level, :created_at, :updated_at, :
|
64
|
+
PREDEFINED_FIELDS = [:_id, :parent_id, :level, :created_at, :updated_at, :slug, :content, :raw_text, :position, :grid_files, :title, :description, :publish_time, :labels, :authors, :status]
|
65
65
|
|
66
66
|
# These fields can't be overwritten by user's meta data when parsing raw_text.
|
67
|
-
PROTECTED_FIELDS = [:_id, :parent_id, :level, :created_at, :updated_at, :
|
68
|
-
|
69
|
-
def slug
|
70
|
-
if user_defined_slug = self.read_attribute(:slug)
|
71
|
-
user_defined_slug
|
72
|
-
else
|
73
|
-
self.default_slug
|
74
|
-
end
|
75
|
-
end
|
67
|
+
PROTECTED_FIELDS = [:_id, :parent_id, :level, :created_at, :updated_at, :content, :raw_text, :position, :grid_files]
|
76
68
|
|
77
69
|
def content_in_html(key = "main", data={})
|
78
70
|
if content = self.content.try(:[], key)
|
@@ -230,8 +222,12 @@ module Concen
|
|
230
222
|
|
231
223
|
protected
|
232
224
|
|
233
|
-
def
|
234
|
-
|
225
|
+
def set_slug
|
226
|
+
if self.slug.blank?
|
227
|
+
self.slug = self.title.parameterize if self.title
|
228
|
+
else
|
229
|
+
self.slug = self.slug.parameterize
|
230
|
+
end
|
235
231
|
end
|
236
232
|
|
237
233
|
def set_position
|
data/concen.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.email = ["steve.randy@gmail.com"]
|
10
10
|
s.homepage = "https://github.com/steverandy/concen"
|
11
11
|
s.summary = "Control and monitor Rails application."
|
12
|
-
s.description = "A Rails Engine to control and monitor Rails application from a web interface. It includes content capturing system, real-time traffic monitoring, and real-time performance monitoring. It
|
12
|
+
s.description = "A Rails Engine to control and monitor Rails application from a web interface. It includes content capturing system, real-time traffic monitoring, and real-time performance monitoring. It's built to be flexible and customizable."
|
13
13
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
s.rubyforge_project = "concen"
|
data/lib/concen/version.rb
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
Title: Something New
|
data/test/unit/grid_file_test.rb
CHANGED
@@ -36,6 +36,6 @@ class GridFileTest < ActiveSupport::TestCase
|
|
36
36
|
page = Fabricate "concen/page"
|
37
37
|
grid_file = page.grid_files.build
|
38
38
|
grid_file.store File.read("#{Rails.root}/public/404.html"), "404.html"
|
39
|
-
assert grid_file.filename.include?(grid_file.
|
39
|
+
assert grid_file.filename.include?(grid_file.grid_id.to_s), "Filename does not include grid_id."
|
40
40
|
end
|
41
41
|
end
|
data/test/unit/page_test.rb
CHANGED
@@ -60,10 +60,21 @@ class PageTest < ActiveSupport::TestCase
|
|
60
60
|
assert_equal page.content_in_html, File.read("#{File.dirname(__FILE__)}/../support/raw_text/code_blocks.html")
|
61
61
|
end
|
62
62
|
|
63
|
-
test "should have
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
test "should have slug automatically generated" do
|
64
|
+
page1 = Fabricate "concen/page", :title => "Something New"
|
65
|
+
assert_equal page1.slug, "something-new"
|
66
|
+
|
67
|
+
page2 = Fabricate.build "concen/page", :title => nil
|
68
|
+
page2.raw_text = File.read "#{File.dirname(__FILE__)}/../support/raw_text/title.txt"
|
69
|
+
page2.save
|
70
|
+
assert_equal page2.slug, "something-new"
|
71
|
+
end
|
72
|
+
|
73
|
+
test "should be able to set slug from raw_text" do
|
74
|
+
page = Fabricate.build "concen/page", :title => nil
|
75
|
+
page.raw_text = File.read "#{File.dirname(__FILE__)}/../support/raw_text/slug.txt"
|
76
|
+
page.save
|
77
|
+
assert_equal page.slug, "something-else"
|
67
78
|
end
|
68
79
|
|
69
80
|
test "should not be created without title" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: concen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-08-
|
12
|
+
date: 2011-08-23 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: compass
|
16
|
-
requirement: &
|
16
|
+
requirement: &70272212467340 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 0.11.5
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70272212467340
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: haml
|
27
|
-
requirement: &
|
27
|
+
requirement: &70272212466880 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 3.1.0
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70272212466880
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: mustache
|
38
|
-
requirement: &
|
38
|
+
requirement: &70272212466420 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 0.99.4
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70272212466420
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: redcarpet
|
49
|
-
requirement: &
|
49
|
+
requirement: &70272212465960 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 2.0.0b3
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70272212465960
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: mongoid
|
60
|
-
requirement: &
|
60
|
+
requirement: &70272212465500 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 2.0.0
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70272212465500
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: mongo-rails-instrumentation
|
71
|
-
requirement: &
|
71
|
+
requirement: &70272212465040 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ~>
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: 0.2.4
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70272212465040
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: bson_ext
|
82
|
-
requirement: &
|
82
|
+
requirement: &70272212464580 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ~>
|
@@ -87,10 +87,10 @@ dependencies:
|
|
87
87
|
version: 1.3.0
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70272212464580
|
91
91
|
- !ruby/object:Gem::Dependency
|
92
92
|
name: rack-gridfs
|
93
|
-
requirement: &
|
93
|
+
requirement: &70272212464120 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
96
|
- - ~>
|
@@ -98,10 +98,10 @@ dependencies:
|
|
98
98
|
version: 0.4.1
|
99
99
|
type: :runtime
|
100
100
|
prerelease: false
|
101
|
-
version_requirements: *
|
101
|
+
version_requirements: *70272212464120
|
102
102
|
- !ruby/object:Gem::Dependency
|
103
103
|
name: chronic
|
104
|
-
requirement: &
|
104
|
+
requirement: &70272212463660 !ruby/object:Gem::Requirement
|
105
105
|
none: false
|
106
106
|
requirements:
|
107
107
|
- - ~>
|
@@ -109,10 +109,10 @@ dependencies:
|
|
109
109
|
version: 0.4.3
|
110
110
|
type: :runtime
|
111
111
|
prerelease: false
|
112
|
-
version_requirements: *
|
112
|
+
version_requirements: *70272212463660
|
113
113
|
- !ruby/object:Gem::Dependency
|
114
114
|
name: mime-types
|
115
|
-
requirement: &
|
115
|
+
requirement: &70272212463200 !ruby/object:Gem::Requirement
|
116
116
|
none: false
|
117
117
|
requirements:
|
118
118
|
- - ~>
|
@@ -120,10 +120,10 @@ dependencies:
|
|
120
120
|
version: '1.16'
|
121
121
|
type: :runtime
|
122
122
|
prerelease: false
|
123
|
-
version_requirements: *
|
123
|
+
version_requirements: *70272212463200
|
124
124
|
- !ruby/object:Gem::Dependency
|
125
125
|
name: bcrypt-ruby
|
126
|
-
requirement: &
|
126
|
+
requirement: &70272212462740 !ruby/object:Gem::Requirement
|
127
127
|
none: false
|
128
128
|
requirements:
|
129
129
|
- - ~>
|
@@ -131,10 +131,10 @@ dependencies:
|
|
131
131
|
version: 2.1.4
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
|
-
version_requirements: *
|
134
|
+
version_requirements: *70272212462740
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: domainatrix
|
137
|
-
requirement: &
|
137
|
+
requirement: &70272212462280 !ruby/object:Gem::Requirement
|
138
138
|
none: false
|
139
139
|
requirements:
|
140
140
|
- - ~>
|
@@ -142,10 +142,10 @@ dependencies:
|
|
142
142
|
version: 0.0.10
|
143
143
|
type: :runtime
|
144
144
|
prerelease: false
|
145
|
-
version_requirements: *
|
145
|
+
version_requirements: *70272212462280
|
146
146
|
description: A Rails Engine to control and monitor Rails application from a web interface.
|
147
147
|
It includes content capturing system, real-time traffic monitoring, and real-time
|
148
|
-
performance monitoring. It
|
148
|
+
performance monitoring. It's built to be flexible and customizable.
|
149
149
|
email:
|
150
150
|
- steve.randy@gmail.com
|
151
151
|
executables: []
|
@@ -380,10 +380,12 @@ files:
|
|
380
380
|
- test/support/raw_text/code_blocks.txt
|
381
381
|
- test/support/raw_text/multi_content.html
|
382
382
|
- test/support/raw_text/multi_content.txt
|
383
|
+
- test/support/raw_text/slug.txt
|
383
384
|
- test/support/raw_text/smartypants.html
|
384
385
|
- test/support/raw_text/smartypants.txt
|
385
386
|
- test/support/raw_text/smartypants_escape.html
|
386
387
|
- test/support/raw_text/smartypants_escape.txt
|
388
|
+
- test/support/raw_text/title.txt
|
387
389
|
- test/test_helper.rb
|
388
390
|
- test/unit/concen_test.rb
|
389
391
|
- test/unit/grid_file_test.rb
|
@@ -452,10 +454,12 @@ test_files:
|
|
452
454
|
- test/support/raw_text/code_blocks.txt
|
453
455
|
- test/support/raw_text/multi_content.html
|
454
456
|
- test/support/raw_text/multi_content.txt
|
457
|
+
- test/support/raw_text/slug.txt
|
455
458
|
- test/support/raw_text/smartypants.html
|
456
459
|
- test/support/raw_text/smartypants.txt
|
457
460
|
- test/support/raw_text/smartypants_escape.html
|
458
461
|
- test/support/raw_text/smartypants_escape.txt
|
462
|
+
- test/support/raw_text/title.txt
|
459
463
|
- test/test_helper.rb
|
460
464
|
- test/unit/concen_test.rb
|
461
465
|
- test/unit/grid_file_test.rb
|