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 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.4** (23 August 2011):
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.
@@ -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 :default_slug, :type => String
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 :default_slug
32
+ validates_presence_of :slug
33
33
  validates_uniqueness_of :title, :scope => [:parent_id, :level], :case_sensitive => false
34
- validates_uniqueness_of :default_slug, :scope => [:parent_id, :level], :case_sensitive => false
34
+ validates_uniqueness_of :slug, :scope => [:parent_id, :level], :case_sensitive => false
35
35
 
36
36
  before_validation :parse_raw_text
37
- before_validation :set_default_slug
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) { any_of({:slug => slug}, {:default_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 :default_slug, :background => true
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, :default_slug, :content, :raw_text, :position, :grid_files, :title, :description, :publish_time, :labels, :authors, :status]
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, :default_slug, :content, :raw_text, :position, :grid_files]
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 set_default_slug
234
- self.default_slug = self.title.parameterize if self.title
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
@@ -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. Its built to be flexible and customizable."
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"
@@ -1,3 +1,3 @@
1
1
  module Concen
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -14,6 +14,4 @@ Redcarpet is basically a Ruby wrapper of [Upskirt](https://github.com/tanoku/red
14
14
 
15
15
  To integrate Rercarpet and Haml in your Rails app, first add the Redcarpet gem in the `Gemfile`.
16
16
 
17
- ```
18
- gem "redcarpet", "~> 1.17.2"
19
- ```
17
+ gem "redcarpet", "~> 1.17.2"
@@ -0,0 +1,3 @@
1
+ Title: Something
2
+
3
+ Slug: something-else
@@ -0,0 +1 @@
1
+ Title: Something New
@@ -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.id.to_s), "Filename does not include grid_file id."
39
+ assert grid_file.filename.include?(grid_file.grid_id.to_s), "Filename does not include grid_id."
40
40
  end
41
41
  end
@@ -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 default_slug" do
64
- page = Fabricate "concen/page"
65
- assert_not_nil page.default_slug
66
- assert page.default_slug.length > 0
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
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-22 00:00:00.000000000Z
12
+ date: 2011-08-23 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: compass
16
- requirement: &70288294752920 !ruby/object:Gem::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: *70288294752920
24
+ version_requirements: *70272212467340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: haml
27
- requirement: &70288294752460 !ruby/object:Gem::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: *70288294752460
35
+ version_requirements: *70272212466880
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: mustache
38
- requirement: &70288294752000 !ruby/object:Gem::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: *70288294752000
46
+ version_requirements: *70272212466420
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: redcarpet
49
- requirement: &70288294751540 !ruby/object:Gem::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: *70288294751540
57
+ version_requirements: *70272212465960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: mongoid
60
- requirement: &70288294751080 !ruby/object:Gem::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: *70288294751080
68
+ version_requirements: *70272212465500
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: mongo-rails-instrumentation
71
- requirement: &70288294750620 !ruby/object:Gem::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: *70288294750620
79
+ version_requirements: *70272212465040
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: bson_ext
82
- requirement: &70288294750160 !ruby/object:Gem::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: *70288294750160
90
+ version_requirements: *70272212464580
91
91
  - !ruby/object:Gem::Dependency
92
92
  name: rack-gridfs
93
- requirement: &70288294749700 !ruby/object:Gem::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: *70288294749700
101
+ version_requirements: *70272212464120
102
102
  - !ruby/object:Gem::Dependency
103
103
  name: chronic
104
- requirement: &70288294749240 !ruby/object:Gem::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: *70288294749240
112
+ version_requirements: *70272212463660
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: mime-types
115
- requirement: &70288294748780 !ruby/object:Gem::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: *70288294748780
123
+ version_requirements: *70272212463200
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: bcrypt-ruby
126
- requirement: &70288294748320 !ruby/object:Gem::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: *70288294748320
134
+ version_requirements: *70272212462740
135
135
  - !ruby/object:Gem::Dependency
136
136
  name: domainatrix
137
- requirement: &70288294747860 !ruby/object:Gem::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: *70288294747860
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. Its built to be flexible and customizable.
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