permalink 1.1.2 → 1.2.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/.rspec CHANGED
@@ -1 +1 @@
1
- --colour --format documentation
1
+ --colour --format documentation --profile
@@ -1,70 +1,67 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- permalink (1.1.2)
4
+ permalink (1.2.0)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
8
8
  specs:
9
- activemodel (3.0.5)
10
- activesupport (= 3.0.5)
11
- builder (~> 2.1.2)
12
- i18n (~> 0.4)
13
- activerecord (3.0.5)
14
- activemodel (= 3.0.5)
15
- activesupport (= 3.0.5)
16
- arel (~> 2.0.2)
17
- tzinfo (~> 0.3.23)
18
- activesupport (3.0.5)
19
- archive-tar-minitar (0.5.2)
20
- arel (2.0.9)
21
- bson (1.2.4)
22
- bson_ext (1.2.4)
23
- builder (2.1.2)
24
- columnize (0.3.2)
25
- diff-lcs (1.1.2)
26
- i18n (0.5.0)
27
- jnunemaker-validatable (1.8.4)
28
- activesupport (>= 2.3.4)
29
- linecache19 (0.5.11)
30
- ruby_core_source (>= 0.1.4)
31
- mongo (1.2.2)
32
- bson (>= 1.2.2)
33
- mongo_mapper (0.8.6)
34
- activesupport (>= 2.3.4)
35
- jnunemaker-validatable (~> 1.8.4)
36
- plucky (~> 0.3.6)
37
- mongoid (2.0.0.rc.7)
9
+ activemodel (3.1.1)
10
+ activesupport (= 3.1.1)
11
+ builder (~> 3.0.0)
12
+ i18n (~> 0.6)
13
+ activerecord (3.1.1)
14
+ activemodel (= 3.1.1)
15
+ activesupport (= 3.1.1)
16
+ arel (~> 2.2.1)
17
+ tzinfo (~> 0.3.29)
18
+ activesupport (3.1.1)
19
+ multi_json (~> 1.0)
20
+ arel (2.2.1)
21
+ bson (1.4.1)
22
+ bson_ext (1.4.1)
23
+ builder (3.0.0)
24
+ coderay (0.9.8)
25
+ diff-lcs (1.1.3)
26
+ i18n (0.6.0)
27
+ method_source (0.6.6)
28
+ ruby_parser (~> 2.0.5)
29
+ mongo (1.4.1)
30
+ bson (= 1.4.1)
31
+ mongo_mapper (0.9.2)
38
32
  activemodel (~> 3.0)
39
- mongo (~> 1.2)
33
+ activesupport (~> 3.0)
34
+ plucky (~> 0.3.8)
35
+ mongoid (2.3.2)
36
+ activemodel (~> 3.1)
37
+ mongo (~> 1.4)
40
38
  tzinfo (~> 0.3.22)
41
- will_paginate (~> 3.0.pre)
42
- plucky (0.3.6)
43
- mongo (~> 1.1)
44
- rspec (2.5.0)
45
- rspec-core (~> 2.5.0)
46
- rspec-expectations (~> 2.5.0)
47
- rspec-mocks (~> 2.5.0)
48
- rspec-core (2.5.1)
49
- rspec-expectations (2.5.0)
39
+ multi_json (1.0.3)
40
+ plucky (0.3.8)
41
+ mongo (~> 1.3)
42
+ pry (0.9.6.2)
43
+ coderay (~> 0.9.8)
44
+ method_source (~> 0.6.5)
45
+ ruby_parser (~> 2.0.5)
46
+ slop (~> 2.1.0)
47
+ rake (0.9.2)
48
+ rspec (2.7.0)
49
+ rspec-core (~> 2.7.0)
50
+ rspec-expectations (~> 2.7.0)
51
+ rspec-mocks (~> 2.7.0)
52
+ rspec-core (2.7.1)
53
+ rspec-expectations (2.7.0)
50
54
  diff-lcs (~> 1.1.2)
51
- rspec-mocks (2.5.0)
52
- ruby-debug-base19 (0.11.24)
53
- columnize (>= 0.3.1)
54
- linecache19 (>= 0.5.11)
55
- ruby_core_source (>= 0.1.4)
56
- ruby-debug19 (0.11.6)
57
- columnize (>= 0.3.1)
58
- linecache19 (>= 0.5.11)
59
- ruby-debug-base19 (>= 0.11.19)
60
- ruby_core_source (0.1.4)
61
- archive-tar-minitar (>= 0.5.2)
62
- sqlite3 (1.3.3)
55
+ rspec-mocks (2.7.0)
56
+ ruby_parser (2.0.6)
57
+ sexp_processor (~> 3.0)
58
+ sexp_processor (3.0.7)
59
+ slop (2.1.0)
60
+ sqlite3 (1.3.4)
63
61
  sqlite3-ruby (1.3.3)
64
62
  sqlite3 (>= 1.3.3)
65
- test-unit (2.2.0)
66
- tzinfo (0.3.24)
67
- will_paginate (3.0.pre2)
63
+ test-unit (2.4.0)
64
+ tzinfo (0.3.30)
68
65
 
69
66
  PLATFORMS
70
67
  ruby
@@ -72,10 +69,11 @@ PLATFORMS
72
69
  DEPENDENCIES
73
70
  activerecord
74
71
  bson_ext
75
- mongo_mapper (~> 0.8.6)
76
- mongoid (~> 2.0.0.rc.7)
72
+ mongo_mapper (~> 0.9)
73
+ mongoid (~> 2.3)
77
74
  permalink!
78
- rspec (~> 2.5.0)
79
- ruby-debug19
75
+ pry
76
+ rake
77
+ rspec (~> 2.7)
80
78
  sqlite3-ruby
81
79
  test-unit
@@ -4,7 +4,7 @@ Permalink
4
4
  Instalation
5
5
  -----------
6
6
 
7
- gem install permalink
7
+ gem install permalink
8
8
 
9
9
  Usage
10
10
  -----
@@ -40,15 +40,21 @@ The above settings will generate something link `100-some-title-page`. By overri
40
40
 
41
41
  If you want to generate unique permalink, use the `:unique` option:
42
42
 
43
- class Page < ActiveRecord::Base
44
- permalink :title, :unique => true, :to_param => :permalink
45
- end
43
+ class Page < ActiveRecord::Base
44
+ permalink :title, :unique => true, :to_param => :permalink
45
+ end
46
46
 
47
47
  The permalink is generated using `ActiveSupport::Multibyte::Chars` class; this means that characters will properly replaced from `áéíó` to `aeio`, for instance.
48
48
 
49
49
  The permalink is created when `before_validation` callback is evaluated. This plugin also tries
50
50
  to generate a permalink when `before_save` callback is evaluated and the instance has no permalink set.
51
51
 
52
+ You can force the permalink generation by setting the `:force` option.
53
+
54
+ class Page < ActiveRecord::Base
55
+ permalink :title, :force => true
56
+ end
57
+
52
58
  ## License
53
59
 
54
60
  Copyright (c) 2011 Nando Vieira, released under the MIT license
@@ -5,15 +5,17 @@ module Permalink
5
5
  def setup_permalink(orm_options, from, options)
6
6
  options.reverse_merge!(orm_options)
7
7
  options.reverse_merge!({
8
- :to => :permalink,
9
- :unique => false
8
+ :to => :permalink,
9
+ :unique => false,
10
+ :force => false
10
11
  })
11
12
 
12
13
  self.permalink_options = {
13
14
  :from_column_name => from,
14
15
  :to_column_name => options[:to],
15
16
  :to_param => [options[:to_param]].flatten,
16
- :unique => options[:unique]
17
+ :unique => options[:unique],
18
+ :force => options[:force]
17
19
  }
18
20
 
19
21
  before_validation :create_permalink
@@ -66,8 +68,12 @@ module Permalink
66
68
  read_attribute(to_permalink_name)
67
69
  end
68
70
 
71
+ def update_permalink?
72
+ self.class.permalink_options[:force] || to_permalink_value.blank?
73
+ end
74
+
69
75
  def create_permalink
70
- unless from_permalink_value.blank? || !to_permalink_value.blank?
76
+ if update_permalink?
71
77
  write_attribute(to_permalink_name, next_available_permalink(from_permalink_value.to_s.to_permalink))
72
78
  end
73
79
  end
@@ -1,8 +1,8 @@
1
1
  module Permalink
2
2
  module Version
3
3
  MAJOR = 1
4
- MINOR = 1
5
- PATCH = 2
4
+ MINOR = 2
5
+ PATCH = 0
6
6
  STRING = "#{MAJOR}.#{MINOR}.#{PATCH}"
7
7
  end
8
8
  end
@@ -20,9 +20,10 @@ Gem::Specification.new do |s|
20
20
  s.add_development_dependency "activerecord"
21
21
  s.add_development_dependency "sqlite3-ruby"
22
22
  s.add_development_dependency "test-unit"
23
- s.add_development_dependency "rspec", "~> 2.5.0"
24
- s.add_development_dependency "mongoid", "~> 2.0.0.rc.7"
25
- s.add_development_dependency "mongo_mapper", "~> 0.8.6"
23
+ s.add_development_dependency "rspec", "~> 2.7"
24
+ s.add_development_dependency "mongoid", "~> 2.3"
25
+ s.add_development_dependency "mongo_mapper", "~> 0.9"
26
26
  s.add_development_dependency "bson_ext"
27
- s.add_development_dependency "ruby-debug19" if RUBY_VERSION >= "1.9"
27
+ s.add_development_dependency "pry"
28
+ s.add_development_dependency "rake"
28
29
  end
@@ -1,8 +1,6 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe Permalink::Orm::Mongoid do
4
- before { pending }
5
-
6
4
  let(:model) { Article }
7
5
  it_should_behave_like "orm"
8
6
 
@@ -1,5 +1,5 @@
1
1
  require "mongo_mapper"
2
- # require "mongoid"
2
+ require "mongoid"
3
3
  require "rspec"
4
4
  require "active_record"
5
5
  require "permalink"
@@ -8,19 +8,17 @@ require "permalink"
8
8
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
9
9
 
10
10
  # Setup MongoMapper
11
- MongoMapper.connection = Mongo::Connection.new("localhost")
11
+ MongoMapper.connection = Mongo::Connection.new
12
12
  MongoMapper.database = "permalink"
13
13
 
14
14
  # Setup Mongoid
15
- # Mongoid.configure do |config|
16
- # name = "permalink"
17
- # host = "localhost"
18
- # config.master = Mongo::Connection.new.db(name)
19
- # config.persist_in_safe_mode = false
20
- # end
15
+ Mongoid.configure do |config|
16
+ config.master = Mongo::Connection.new.db("permalink")
17
+ config.persist_in_safe_mode = false
18
+ end
21
19
 
22
20
  load("support/schema.rb")
23
21
  require "support/page"
24
22
  require "support/shared"
25
23
  require "support/post"
26
- # require "support/article"
24
+ require "support/article"
@@ -61,7 +61,6 @@ shared_examples_for "orm" do
61
61
  model.permalink :title, :to_param => [:id, " ", nil, "\t", :permalink]
62
62
 
63
63
  record = model.create(:title => "Some nice post")
64
- record.reload
65
64
  record.to_param.should == "#{record.id}-some-nice-post"
66
65
  end
67
66
 
@@ -84,4 +83,13 @@ shared_examples_for "orm" do
84
83
  record = model.create(:title => "Rails 3")
85
84
  record.permalink.should == "rails-3-2"
86
85
  end
86
+
87
+ it "should force permalink" do
88
+ model.permalink :title, :force => true
89
+
90
+ record = model.create(:title => "Some nice post")
91
+ record.update_attributes :title => "Awesome post"
92
+
93
+ record.permalink.should == "awesome-post"
94
+ end
87
95
  end
metadata CHANGED
@@ -1,116 +1,122 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: permalink
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.2.0
4
5
  prerelease:
5
- version: 1.1.2
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Nando Vieira
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-03-21 00:00:00 -03:00
14
- default_executable:
15
- dependencies:
16
- - !ruby/object:Gem::Dependency
12
+ date: 2011-10-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
17
15
  name: activerecord
18
- prerelease: false
19
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70099538008620 !ruby/object:Gem::Requirement
20
17
  none: false
21
- requirements:
22
- - - ">="
23
- - !ruby/object:Gem::Version
24
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
25
22
  type: :development
26
- version_requirements: *id001
27
- - !ruby/object:Gem::Dependency
28
- name: sqlite3-ruby
29
23
  prerelease: false
30
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70099538008620
25
+ - !ruby/object:Gem::Dependency
26
+ name: sqlite3-ruby
27
+ requirement: &70099537997320 !ruby/object:Gem::Requirement
31
28
  none: false
32
- requirements:
33
- - - ">="
34
- - !ruby/object:Gem::Version
35
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
36
33
  type: :development
37
- version_requirements: *id002
38
- - !ruby/object:Gem::Dependency
39
- name: test-unit
40
34
  prerelease: false
41
- requirement: &id003 !ruby/object:Gem::Requirement
35
+ version_requirements: *70099537997320
36
+ - !ruby/object:Gem::Dependency
37
+ name: test-unit
38
+ requirement: &70099538001440 !ruby/object:Gem::Requirement
42
39
  none: false
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: "0"
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
47
44
  type: :development
48
- version_requirements: *id003
49
- - !ruby/object:Gem::Dependency
50
- name: rspec
51
45
  prerelease: false
52
- requirement: &id004 !ruby/object:Gem::Requirement
46
+ version_requirements: *70099538001440
47
+ - !ruby/object:Gem::Dependency
48
+ name: rspec
49
+ requirement: &70099537985380 !ruby/object:Gem::Requirement
53
50
  none: false
54
- requirements:
51
+ requirements:
55
52
  - - ~>
56
- - !ruby/object:Gem::Version
57
- version: 2.5.0
53
+ - !ruby/object:Gem::Version
54
+ version: '2.7'
58
55
  type: :development
59
- version_requirements: *id004
60
- - !ruby/object:Gem::Dependency
61
- name: mongoid
62
56
  prerelease: false
63
- requirement: &id005 !ruby/object:Gem::Requirement
57
+ version_requirements: *70099537985380
58
+ - !ruby/object:Gem::Dependency
59
+ name: mongoid
60
+ requirement: &70099537969500 !ruby/object:Gem::Requirement
64
61
  none: false
65
- requirements:
62
+ requirements:
66
63
  - - ~>
67
- - !ruby/object:Gem::Version
68
- version: 2.0.0.rc.7
64
+ - !ruby/object:Gem::Version
65
+ version: '2.3'
69
66
  type: :development
70
- version_requirements: *id005
71
- - !ruby/object:Gem::Dependency
72
- name: mongo_mapper
73
67
  prerelease: false
74
- requirement: &id006 !ruby/object:Gem::Requirement
68
+ version_requirements: *70099537969500
69
+ - !ruby/object:Gem::Dependency
70
+ name: mongo_mapper
71
+ requirement: &70099537975840 !ruby/object:Gem::Requirement
75
72
  none: false
76
- requirements:
73
+ requirements:
77
74
  - - ~>
78
- - !ruby/object:Gem::Version
79
- version: 0.8.6
75
+ - !ruby/object:Gem::Version
76
+ version: '0.9'
80
77
  type: :development
81
- version_requirements: *id006
82
- - !ruby/object:Gem::Dependency
78
+ prerelease: false
79
+ version_requirements: *70099537975840
80
+ - !ruby/object:Gem::Dependency
83
81
  name: bson_ext
82
+ requirement: &70099537055460 !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
84
89
  prerelease: false
85
- requirement: &id007 !ruby/object:Gem::Requirement
90
+ version_requirements: *70099537055460
91
+ - !ruby/object:Gem::Dependency
92
+ name: pry
93
+ requirement: &70099537034980 !ruby/object:Gem::Requirement
86
94
  none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: "0"
95
+ requirements:
96
+ - - ! '>='
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
91
99
  type: :development
92
- version_requirements: *id007
93
- - !ruby/object:Gem::Dependency
94
- name: ruby-debug19
95
100
  prerelease: false
96
- requirement: &id008 !ruby/object:Gem::Requirement
101
+ version_requirements: *70099537034980
102
+ - !ruby/object:Gem::Dependency
103
+ name: rake
104
+ requirement: &70099537034280 !ruby/object:Gem::Requirement
97
105
  none: false
98
- requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: "0"
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
102
110
  type: :development
103
- version_requirements: *id008
111
+ prerelease: false
112
+ version_requirements: *70099537034280
104
113
  description: Generate permalink attributes on ActiveRecord
105
- email:
114
+ email:
106
115
  - fnando.vieira@gmail.com
107
116
  executables: []
108
-
109
117
  extensions: []
110
-
111
118
  extra_rdoc_files: []
112
-
113
- files:
119
+ files:
114
120
  - .gitignore
115
121
  - .rspec
116
122
  - Gemfile
@@ -135,35 +141,37 @@ files:
135
141
  - spec/support/post.rb
136
142
  - spec/support/schema.rb
137
143
  - spec/support/shared.rb
138
- has_rdoc: true
139
144
  homepage: http://rubygems.org/gems/permalink
140
145
  licenses: []
141
-
142
146
  post_install_message:
143
147
  rdoc_options: []
144
-
145
- require_paths:
148
+ require_paths:
146
149
  - lib
147
- required_ruby_version: !ruby/object:Gem::Requirement
150
+ required_ruby_version: !ruby/object:Gem::Requirement
148
151
  none: false
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: "0"
153
- required_rubygems_version: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - ! '>='
154
+ - !ruby/object:Gem::Version
155
+ version: '0'
156
+ segments:
157
+ - 0
158
+ hash: 232250411774848879
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
154
160
  none: false
155
- requirements:
156
- - - ">="
157
- - !ruby/object:Gem::Version
158
- version: "0"
161
+ requirements:
162
+ - - ! '>='
163
+ - !ruby/object:Gem::Version
164
+ version: '0'
165
+ segments:
166
+ - 0
167
+ hash: 232250411774848879
159
168
  requirements: []
160
-
161
169
  rubyforge_project:
162
- rubygems_version: 1.6.0
170
+ rubygems_version: 1.8.10
163
171
  signing_key:
164
172
  specification_version: 3
165
173
  summary: Generate permalink attributes on ActiveRecord
166
- test_files:
174
+ test_files:
167
175
  - spec/permalink/active_record_spec.rb
168
176
  - spec/permalink/mongo_mapper_spec.rb
169
177
  - spec/permalink/mongoid_spec.rb