permalink 1.1.2 → 1.2.0

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