has_unique_slug 0.1.4 → 0.1.5

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