acts_as_permalink 0.3.1 → 0.3.2

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.
@@ -9,15 +9,15 @@ module Acts #:nodoc:
9
9
  module ClassMethods
10
10
  def acts_as_permalink(options={})
11
11
  # Read and scrub option for the column which will save the permalink
12
- @permalink_column_name = options[:to].try(:to_sym) || :permalink
12
+ self.base_class.instance_variable_set('@permalink_column_name', options[:to].try(:to_sym) || :permalink)
13
13
 
14
14
  # Read and scrub the option for the column or function which will generate the permalink
15
- @permalink_source = (options[:from].try(:to_sym) || :title)
15
+ self.base_class.instance_variable_set('@permalink_source', (options[:from].try(:to_sym) || :title))
16
16
 
17
17
  # Read and validate the maximum length of the permalink
18
18
  max_length = options[:max_length].to_i rescue 0
19
19
  max_length = 60 unless max_length && max_length > 0
20
- @permalink_length = max_length
20
+ self.base_class.instance_variable_set('@permalink_length', max_length)
21
21
 
22
22
  if Rails.version >= "3"
23
23
  before_validation :update_permalink, :on => :create
@@ -36,26 +36,26 @@ module Acts #:nodoc:
36
36
  def generate_permalink_for(obj)
37
37
 
38
38
  # Find the source for the permalink
39
- text = obj.send(obj.class.instance_variable_get('@permalink_source'))
39
+ text = obj.send(obj.class.base_class.instance_variable_get('@permalink_source'))
40
40
 
41
41
  # If it is blank then generate a random link
42
42
  if text.blank?
43
- text = obj.class.to_s.downcase + rand(10000).to_s
43
+ text = obj.class.base_class.to_s.downcase + rand(10000).to_s
44
44
 
45
45
  # If it is not blank, scrub
46
46
  else
47
47
  text = text.downcase.strip # make the string lowercase and scrub white space on either side
48
48
  text = text.gsub(/[^a-z0-9\w]/, "_") # make any character that is not nupermic or alphabetic into an underscore
49
49
  text = text.sub(/_+$/, "").sub(/^_+/, "") # remove underscores on either end, caused by non-simplified characters
50
- text = text[0...obj.class.instance_variable_get('@permalink_length')] # trim to length
50
+ text = text[0...obj.class.base_class.instance_variable_get('@permalink_length')] # trim to length
51
51
  end
52
52
 
53
53
  # Attempt to find the object by the permalink
54
- if obj.class.base_class.send("find_by_#{obj.class.instance_variable_get('@permalink_column_name')}", text)
54
+ if obj.class.base_class.send("find_by_#{obj.class.base_class.instance_variable_get('@permalink_column_name')}", text)
55
55
  num = 1
56
56
 
57
57
  # If we find the object we know there is a collision, so just add a number to the end until there is no collision
58
- while obj.class.base_class.send("find_by_#{obj.class.instance_variable_get('@permalink_column_name')}", text + num.to_s)
58
+ while obj.class.base_class.send("find_by_#{obj.class.base_class.instance_variable_get('@permalink_column_name')}", text + num.to_s)
59
59
  num += 1
60
60
  end
61
61
 
@@ -72,12 +72,12 @@ module Acts #:nodoc:
72
72
 
73
73
  # Override this method so that find searches by permalink and not by id
74
74
  def to_param
75
- self.send(self.class.instance_variable_get('@permalink_column_name'))
75
+ self.send(self.class.base_class.instance_variable_get('@permalink_column_name'))
76
76
  end
77
77
 
78
78
  # Generate the permalink and assign it directly via callback
79
79
  def update_permalink
80
- self.send("#{self.class.instance_variable_get('@permalink_column_name')}=", self.class.generate_permalink_for(self))
80
+ self.send("#{self.class.base_class.instance_variable_get('@permalink_column_name')}=", self.class.base_class.generate_permalink_for(self))
81
81
  true
82
82
  end
83
83
  end
@@ -1,5 +1,5 @@
1
1
  module Acts
2
2
  module Permalink
3
- VERSION = "0.3.1"
3
+ VERSION = "0.3.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_permalink
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
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: 2012-05-05 00:00:00.000000000 Z
12
+ date: 2012-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
- requirement: &70310709515380 !ruby/object:Gem::Requirement
16
+ requirement: &77716780 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70310709515380
24
+ version_requirements: *77716780
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activerecord
27
- requirement: &70310709514580 !ruby/object:Gem::Requirement
27
+ requirement: &77716190 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '3.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70310709514580
35
+ version_requirements: *77716190
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: activesupport
38
- requirement: &70310709530460 !ruby/object:Gem::Requirement
38
+ requirement: &77715150 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ~>
@@ -43,10 +43,10 @@ dependencies:
43
43
  version: '3.0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70310709530460
46
+ version_requirements: *77715150
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: rspec
49
- requirement: &70310709530040 !ruby/object:Gem::Requirement
49
+ requirement: &77714480 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ! '>='
@@ -54,10 +54,10 @@ dependencies:
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
- version_requirements: *70310709530040
57
+ version_requirements: *77714480
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: sqlite3
60
- requirement: &70310709529480 !ruby/object:Gem::Requirement
60
+ requirement: &77713840 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,7 +65,7 @@ dependencies:
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
- version_requirements: *70310709529480
68
+ version_requirements: *77713840
69
69
  description: Manages permalink columns in active record models. Strips special charactes
70
70
  and spaces, creates before validation, assures uniqueness. That kind of thing.
71
71
  email:
@@ -74,8 +74,8 @@ executables: []
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
- - lib/acts_as_permalink/version.rb
78
77
  - lib/acts_as_permalink.rb
78
+ - lib/acts_as_permalink/version.rb
79
79
  - MIT-LICENSE
80
80
  - Rakefile
81
81
  - README.markdown
@@ -93,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
93
  version: '0'
94
94
  segments:
95
95
  - 0
96
- hash: -3998614899780643219
96
+ hash: -562493517
97
97
  required_rubygems_version: !ruby/object:Gem::Requirement
98
98
  none: false
99
99
  requirements:
@@ -102,10 +102,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
102
102
  version: '0'
103
103
  segments:
104
104
  - 0
105
- hash: -3998614899780643219
105
+ hash: -562493517
106
106
  requirements: []
107
107
  rubyforge_project:
108
- rubygems_version: 1.8.11
108
+ rubygems_version: 1.8.15
109
109
  signing_key:
110
110
  specification_version: 3
111
111
  summary: Automatically manage permalink fields for ActiveRecord models in Rails.