acts_as_stubbable 0.1.0 → 0.1.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.
- data/README.md +50 -1
- metadata +72 -14
data/README.md
CHANGED
@@ -1,2 +1,51 @@
|
|
1
1
|
acts_as_stubbable
|
2
|
-
=================
|
2
|
+
=================
|
3
|
+
|
4
|
+
##Why?
|
5
|
+
I tend to use a lot of url-friendly strings for SEO in my web apps. Wanting to dry up my code, I created a module mixin for generating stubs, and turned it into a light-weight gem.
|
6
|
+
|
7
|
+
##Installation
|
8
|
+
|
9
|
+
For Rails 3, in your Gemfile:
|
10
|
+
gem 'acts_as_stubbable'
|
11
|
+
|
12
|
+
|
13
|
+
##Usage
|
14
|
+
Let's pretend we have a column for our Thing class called name, which is a string.
|
15
|
+
First in your ActiveRecord model:
|
16
|
+
|
17
|
+
include Stubbable
|
18
|
+
|
19
|
+
Then, tell Stubbable which column should be used to generate the stub, i.e.
|
20
|
+
|
21
|
+
acts_as_stubbable :column => :name
|
22
|
+
|
23
|
+
So that your model looks like:
|
24
|
+
|
25
|
+
class Thing < ActiveRecord::Base
|
26
|
+
include Stubbable
|
27
|
+
attr_accessible :name, :stub #for rails 3.2 onwards,
|
28
|
+
acts_as_stubbable :column => :name
|
29
|
+
end
|
30
|
+
|
31
|
+
Lastly, don't forget to create a migration for your model which adds the :stub column, i.e.
|
32
|
+
|
33
|
+
class AdStubToThings < ActiveRecord::Migration
|
34
|
+
def up
|
35
|
+
add_column :things, :stub, :string
|
36
|
+
end
|
37
|
+
def down
|
38
|
+
remove_column :things, :stub
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
Now, when a new Thing instance is created with a name, i.e.
|
43
|
+
|
44
|
+
t = Thing.new(:name => 'My name is Lionel Hutz aka Miguel Sanchez!')
|
45
|
+
t.save
|
46
|
+
puts t.stub
|
47
|
+
=> 'my-name-is-lionel-hutz-aka-miguel-sanchez'
|
48
|
+
|
49
|
+
you get a url-friendly string, with any special characters stripped and spaced turned into hyphens, using the built-in String.parameterize method.
|
50
|
+
|
51
|
+
Like the ads say, "It's that simple, it really is!"
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_stubbable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 2
|
10
|
+
version: 0.1.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Robbie Shepherd
|
@@ -15,12 +15,28 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-01-
|
18
|
+
date: 2013-01-25 00:00:00 +11:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 47
|
29
|
+
segments:
|
30
|
+
- 2
|
31
|
+
- 8
|
32
|
+
- 0
|
33
|
+
version: 2.8.0
|
34
|
+
name: rspec
|
35
|
+
requirement: *id001
|
36
|
+
type: :development
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
prerelease: false
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
24
40
|
none: false
|
25
41
|
requirements:
|
26
42
|
- - ">="
|
@@ -29,12 +45,54 @@ dependencies:
|
|
29
45
|
segments:
|
30
46
|
- 0
|
31
47
|
version: "0"
|
32
|
-
name:
|
33
|
-
requirement: *
|
48
|
+
name: rspec-rails
|
49
|
+
requirement: *id002
|
34
50
|
type: :development
|
35
51
|
- !ruby/object:Gem::Dependency
|
36
52
|
prerelease: false
|
37
|
-
version_requirements: &
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
54
|
+
none: false
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
62
|
+
name: activesupport
|
63
|
+
requirement: *id003
|
64
|
+
type: :development
|
65
|
+
- !ruby/object:Gem::Dependency
|
66
|
+
prerelease: false
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
76
|
+
name: activerecord
|
77
|
+
requirement: *id004
|
78
|
+
type: :development
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
82
|
+
none: false
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
90
|
+
name: sqlite3
|
91
|
+
requirement: *id005
|
92
|
+
type: :development
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
38
96
|
none: false
|
39
97
|
requirements:
|
40
98
|
- - ~>
|
@@ -45,11 +103,11 @@ dependencies:
|
|
45
103
|
- 12
|
46
104
|
version: "3.12"
|
47
105
|
name: rdoc
|
48
|
-
requirement: *
|
106
|
+
requirement: *id006
|
49
107
|
type: :development
|
50
108
|
- !ruby/object:Gem::Dependency
|
51
109
|
prerelease: false
|
52
|
-
version_requirements: &
|
110
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
53
111
|
none: false
|
54
112
|
requirements:
|
55
113
|
- - ">="
|
@@ -59,11 +117,11 @@ dependencies:
|
|
59
117
|
- 0
|
60
118
|
version: "0"
|
61
119
|
name: bundler
|
62
|
-
requirement: *
|
120
|
+
requirement: *id007
|
63
121
|
type: :development
|
64
122
|
- !ruby/object:Gem::Dependency
|
65
123
|
prerelease: false
|
66
|
-
version_requirements: &
|
124
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
67
125
|
none: false
|
68
126
|
requirements:
|
69
127
|
- - ~>
|
@@ -75,11 +133,11 @@ dependencies:
|
|
75
133
|
- 4
|
76
134
|
version: 1.8.4
|
77
135
|
name: jeweler
|
78
|
-
requirement: *
|
136
|
+
requirement: *id008
|
79
137
|
type: :development
|
80
138
|
- !ruby/object:Gem::Dependency
|
81
139
|
prerelease: false
|
82
|
-
version_requirements: &
|
140
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
83
141
|
none: false
|
84
142
|
requirements:
|
85
143
|
- - ">="
|
@@ -89,7 +147,7 @@ dependencies:
|
|
89
147
|
- 0
|
90
148
|
version: "0"
|
91
149
|
name: rcov
|
92
|
-
requirement: *
|
150
|
+
requirement: *id009
|
93
151
|
type: :development
|
94
152
|
description: create a url-friendly stub based on an activerecord column for your models
|
95
153
|
email: robbie.shepherd@gmail.com
|