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.
Files changed (2) hide show
  1. data/README.md +50 -1
  2. 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: 27
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 0
10
- version: 0.1.0
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-24 00:00:00 +11:00
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: shoulda
33
- requirement: *id001
48
+ name: rspec-rails
49
+ requirement: *id002
34
50
  type: :development
35
51
  - !ruby/object:Gem::Dependency
36
52
  prerelease: false
37
- version_requirements: &id002 !ruby/object:Gem::Requirement
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: *id002
106
+ requirement: *id006
49
107
  type: :development
50
108
  - !ruby/object:Gem::Dependency
51
109
  prerelease: false
52
- version_requirements: &id003 !ruby/object:Gem::Requirement
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: *id003
120
+ requirement: *id007
63
121
  type: :development
64
122
  - !ruby/object:Gem::Dependency
65
123
  prerelease: false
66
- version_requirements: &id004 !ruby/object:Gem::Requirement
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: *id004
136
+ requirement: *id008
79
137
  type: :development
80
138
  - !ruby/object:Gem::Dependency
81
139
  prerelease: false
82
- version_requirements: &id005 !ruby/object:Gem::Requirement
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: *id005
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