acts_as_stubbable 0.1.0 → 0.1.2

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