acts_more_seo 0.4.0 → 0.4.1

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/CHANGELOG.rdoc CHANGED
@@ -22,3 +22,5 @@ Backward compatibility improvements
22
22
  * Downcase fix
23
23
  = Version 0.4.0
24
24
  * Seo url history support for updating and searching
25
+ = Version 0.4.1
26
+ * Case sensitive/insensitive support
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rubygems'
3
3
  require 'rake'
4
4
  require 'echoe'
5
5
 
6
- Echoe.new('acts_more_seo', '0.4.0') do |p|
6
+ Echoe.new('acts_more_seo', '0.4.1') do |p|
7
7
  p.description = "Gem makes your ActiveRecord models more SEO friendly. Changes URL to look way better"
8
8
  p.url = "https://github.com/mensfeld/Css-Image-Embedder"
9
9
  p.author = "Maciej Mensfeld"
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "acts_more_seo"
5
- s.version = "0.4.0"
5
+ s.version = "0.4.1"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Maciej Mensfeld"]
9
- s.date = "2012-02-25"
9
+ s.date = "2012-02-27"
10
10
  s.description = "Gem makes your ActiveRecord models more SEO friendly. Changes URL to look way better"
11
11
  s.email = "maciej@mensfeld.pl"
12
12
  s.extra_rdoc_files = ["CHANGELOG.rdoc", "README.md", "lib/acts_more_seo.rb", "lib/generators/acts_more_seo/install_generator.rb", "lib/generators/acts_more_seo/templates/create_seo_history_migration.rb", "lib/seo_finder.rb", "lib/seo_formatter.rb", "lib/seo_history.rb", "lib/string_ext.rb"]
data/lib/acts_more_seo.rb CHANGED
@@ -20,6 +20,7 @@ module Acts
20
20
  columns = params[:column] || params[:columns] || :name
21
21
  use_id = !params[:use_id].nil? ? params[:use_id] : true
22
22
  history = params[:history] || false
23
+ case_sensitive = params[:case_sensitive] || false
23
24
 
24
25
  if columns.is_a?(Array)
25
26
  columns.collect!{|a| a.to_sym}
@@ -30,6 +31,7 @@ module Acts
30
31
  cattr_accessor :seo_columns
31
32
  cattr_accessor :seo_use_id
32
33
  cattr_accessor :seo_history
34
+ cattr_accessor :case_sensitive
33
35
 
34
36
  before_update :update_seo_url
35
37
  after_create :set_seo_url
@@ -37,6 +39,7 @@ module Acts
37
39
  self.seo_columns = columns
38
40
  self.seo_history = history
39
41
  self.seo_use_id = use_id
42
+ self.case_sensitive = case_sensitive
40
43
 
41
44
  if self.seo_history
42
45
  has_many :seo_histories,
data/lib/seo_finder.rb CHANGED
@@ -9,6 +9,7 @@ module Acts
9
9
  end
10
10
 
11
11
  def search(name)
12
+ name = name.downcase if !@klass.case_sensitive && name.is_a?(String)
12
13
  ret = search_in_table(name)
13
14
 
14
15
  if !ret && @klass.seo_history?
@@ -19,6 +20,7 @@ module Acts
19
20
  end
20
21
 
21
22
  def search!(name)
23
+ name = name.downcase if !@klass.case_sensitive && name.is_a?(String)
22
24
  search_in_table!(name)
23
25
  rescue ActiveRecord::RecordNotFound => e
24
26
  if @klass.seo_history?
@@ -20,7 +20,10 @@ class BestElement < ActiveRecord::Base
20
20
  end
21
21
 
22
22
  class HistorableElement < ActiveRecord::Base
23
- acts_more_seo :columns => :name, :use_id => false, :history => true
23
+ acts_more_seo :columns => :name,
24
+ :use_id => false,
25
+ :history => true,
26
+ :case_sensitive => true
24
27
  end
25
28
 
26
29
  describe CoolElement do
@@ -178,9 +181,10 @@ describe BestElement do
178
181
  end
179
182
 
180
183
  context "when we have a class which has use_id => false" do
181
- it "should find element only when seo_url is same (or by id)" do
184
+ it "should find element only when seo_url is same (or by id) case insensitive" do
182
185
  a = subject.create(:name => 'bla bla bla')
183
186
  subject.find_by_seo!(a.seo_url).should eql(a)
187
+ subject.find_by_seo!('Bla-bLa-blA').should eql(a)
184
188
  lambda { subject.find_by_seo!("#{a.to_param}aaa") }.should raise_error(ActiveRecord::RecordNotFound)
185
189
  end
186
190
  end
@@ -270,7 +274,15 @@ describe HistorableElement do
270
274
  nr.should eql Acts::MoreSeo::SeoHistory.count
271
275
  end
272
276
  end
277
+ end
273
278
 
279
+ context "when searching for a case sensitive element" do
280
+ it "shoudl find only if case is same" do
281
+ a = subject.create(:name => 'Kraj Żelaza')
282
+ subject.find_by_seo('kraj-zelaza').should eql a
283
+ lambda { subject.find_by_seo!('kraj-zelazA') }.should raise_error(ActiveRecord::RecordNotFound)
284
+ end
274
285
  end
275
286
 
276
287
  end
288
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_more_seo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
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-02-25 00:00:00.000000000Z
12
+ date: 2012-02-27 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: babosa
16
- requirement: &11903760 !ruby/object:Gem::Requirement
16
+ requirement: &15529440 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *11903760
24
+ version_requirements: *15529440
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rspec
27
- requirement: &11902800 !ruby/object:Gem::Requirement
27
+ requirement: &15528640 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: 2.0.0
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *11902800
35
+ version_requirements: *15528640
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: active_record
38
- requirement: &11902200 !ruby/object:Gem::Requirement
38
+ requirement: &15528020 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *11902200
46
+ version_requirements: *15528020
47
47
  description: Gem makes your ActiveRecord models more SEO friendly. Changes URL to
48
48
  look way better
49
49
  email: maciej@mensfeld.pl