has_unique_slug 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
@@ -32,14 +32,16 @@ Optionally, a Proc can be used instead of a column name to create the slug:
32
32
  You do not have to call parameterize on name, this will be done automatically. (You don't even need to add dash, a space will work fine)
33
33
 
34
34
 
35
- You do not have to modify your controller to find records:
35
+ Use the rails built-in convention for finding by an attribute.
36
+
37
+ Note: you will have to modify this if your slug column is set to something else.
36
38
 
37
39
  class PostsController < ApplicationController
38
40
 
39
41
  # ...
40
42
 
41
43
  def show
42
- @post = Post.find params[:id]
44
+ @post = Post.find_by_slug params[:id]
43
45
  # you may still use find_by_id to find a record by the database id if need be
44
46
  end
45
47
  end
@@ -54,4 +56,5 @@ All the standard url helper methods will still work since `to_param` is overrid
54
56
 
55
57
  - Add support for scopes
56
58
  - Add support for database versioning
57
- - Consider optimizing the method to ensure a unique slug
59
+ - Consider optimizing the method to ensure a unique slug
60
+ - Add rake task for rebuildings slugs
@@ -22,5 +22,6 @@ Gem::Specification.new do |s|
22
22
  s.add_development_dependency "rspec"
23
23
  s.add_development_dependency "activerecord"
24
24
  s.add_development_dependency "sqlite3"
25
+ s.add_development_dependency "rake"
25
26
  # s.add_runtime_dependency "rest-client"
26
27
  end
@@ -1,3 +1,3 @@
1
1
  module HasUniqueSlug
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -51,13 +51,13 @@ module HasUniqueSlug
51
51
  end
52
52
  EOV
53
53
 
54
- # Add find method to override ActiveRecord::Base.find.
55
- # Note: find_by_id will still work to search for record by their database id.
56
- instance_eval do
57
- def find(*args)
58
- args.length == 1 ? where(slug_column => args.first).first : where(slug_column => args)
59
- end
60
- end
54
+ # # Add find method to override ActiveRecord::Base.find.
55
+ # # Note: find_by_id will still work to search for record by their database id.
56
+ # instance_eval do
57
+ # def find(*args)
58
+ # args.length == 1 ? where(slug_column => args.first).first : where(slug_column => args)
59
+ # end
60
+ # end
61
61
  end
62
62
 
63
63
  end
@@ -1,32 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
4
-
5
- def setup_db
6
- ActiveRecord::Schema.define(:version => 1) do
7
- create_table :standards do |t|
8
- t.column :title, :string
9
- t.column :slug, :string
10
- end
11
-
12
- create_table :customs do |t|
13
- t.column :name, :string
14
- t.column :permalink, :string
15
- end
16
- end
17
- end
18
-
19
- def teardown_db
20
- ActiveRecord::Base.connection.tables.each do |t|
21
- ActiveRecord::Base.connection.drop_table t
22
- end
23
- end
24
-
25
3
  class Standard < ActiveRecord::Base
26
4
  has_unique_slug
27
5
 
28
6
  def self.table_name
29
- "standards"
7
+ "standard"
30
8
  end
31
9
  end
32
10
 
@@ -34,7 +12,7 @@ class Custom < ActiveRecord::Base
34
12
  has_unique_slug :column => :permalink, :subject => :name
35
13
 
36
14
  def self.table_name
37
- "customs"
15
+ "custom"
38
16
  end
39
17
  end
40
18
 
@@ -42,7 +20,7 @@ class Custom2 < ActiveRecord::Base
42
20
  has_unique_slug :column => :permalink, :subject => Proc.new {|record| "zcvf #{record.name} zxvf"}
43
21
 
44
22
  def self.table_name
45
- "customs"
23
+ "custom"
46
24
  end
47
25
  end
48
26
 
data/spec/spec_helper.rb CHANGED
@@ -7,15 +7,19 @@ require 'sqlite3'
7
7
 
8
8
  require 'has_unique_slug' # and any other gems you need
9
9
 
10
+ RSpec.configure do |config|
11
+
12
+ end
13
+
10
14
  ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
11
15
 
12
16
  def setup_db
13
17
  ActiveRecord::Schema.define(:version => 1) do
14
- create_table :standard_setup do |t|
18
+ create_table :standard do |t|
15
19
  t.column :title, :string
16
20
  t.column :slug, :string
17
21
  end
18
- create_table :customized_setup do |t|
22
+ create_table :custom do |t|
19
23
  t.column :name, :string
20
24
  t.column :permalink, :string
21
25
  end
@@ -28,6 +32,3 @@ def teardown_db
28
32
  end
29
33
  end
30
34
 
31
- RSpec.configure do |config|
32
-
33
- end
metadata CHANGED
@@ -1,74 +1,67 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: has_unique_slug
3
- version: !ruby/object:Gem::Version
4
- hash: 19
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.5
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 4
10
- version: 0.1.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Brendan Stennett
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-10-14 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
12
+ date: 2012-02-28 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
21
15
  name: rspec
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: &70285815385920 !ruby/object:Gem::Requirement
24
17
  none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
32
22
  type: :development
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: activerecord
36
23
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
24
+ version_requirements: *70285815385920
25
+ - !ruby/object:Gem::Dependency
26
+ name: activerecord
27
+ requirement: &70285815385340 !ruby/object:Gem::Requirement
38
28
  none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
46
33
  type: :development
47
- version_requirements: *id002
48
- - !ruby/object:Gem::Dependency
34
+ prerelease: false
35
+ version_requirements: *70285815385340
36
+ - !ruby/object:Gem::Dependency
49
37
  name: sqlite3
38
+ requirement: &70285815384660 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :development
50
45
  prerelease: false
51
- requirement: &id003 !ruby/object:Gem::Requirement
46
+ version_requirements: *70285815384660
47
+ - !ruby/object:Gem::Dependency
48
+ name: rake
49
+ requirement: &70285815383900 !ruby/object:Gem::Requirement
52
50
  none: false
53
- requirements:
54
- - - ">="
55
- - !ruby/object:Gem::Version
56
- hash: 3
57
- segments:
58
- - 0
59
- version: "0"
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
60
55
  type: :development
61
- version_requirements: *id003
56
+ prerelease: false
57
+ version_requirements: *70285815383900
62
58
  description: Generates a unique slug for use as a drop-in replacement for ids.
63
- email:
59
+ email:
64
60
  - brendan@unknowncollective.com
65
61
  executables: []
66
-
67
62
  extensions: []
68
-
69
63
  extra_rdoc_files: []
70
-
71
- files:
64
+ files:
72
65
  - .gitignore
73
66
  - Gemfile
74
67
  - README.md
@@ -80,37 +73,34 @@ files:
80
73
  - spec/spec_helper.rb
81
74
  homepage: https://github.com/HuffMoody/has_unique_slug
82
75
  licenses: []
83
-
84
76
  post_install_message:
85
77
  rdoc_options: []
86
-
87
- require_paths:
78
+ require_paths:
88
79
  - lib
89
- required_ruby_version: !ruby/object:Gem::Requirement
80
+ required_ruby_version: !ruby/object:Gem::Requirement
90
81
  none: false
91
- requirements:
92
- - - ">="
93
- - !ruby/object:Gem::Version
94
- hash: 3
95
- segments:
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ segments:
96
87
  - 0
97
- version: "0"
98
- required_rubygems_version: !ruby/object:Gem::Requirement
88
+ hash: -4232824133400025288
89
+ required_rubygems_version: !ruby/object:Gem::Requirement
99
90
  none: false
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- hash: 3
104
- segments:
91
+ requirements:
92
+ - - ! '>='
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ segments:
105
96
  - 0
106
- version: "0"
97
+ hash: -4232824133400025288
107
98
  requirements: []
108
-
109
99
  rubyforge_project: has_unique_slug
110
100
  rubygems_version: 1.8.10
111
101
  signing_key:
112
102
  specification_version: 3
113
103
  summary: Generates a unique slug for use as a drop-in replacement for ids.
114
- test_files:
104
+ test_files:
115
105
  - spec/has_unique_slug_spec.rb
116
106
  - spec/spec_helper.rb