pethau 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +39 -0
- data/lib/pethau/initialize_with.rb +23 -0
- data/lib/pethau/version.rb +3 -0
- data/lib/pethau.rb +2 -0
- metadata +50 -0
data/README.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Pethau
|
2
|
+
|
3
|
+
A bunch of code that we find useful to share amongst our projects.
|
4
|
+
|
5
|
+
This is the place that code lives when it doesn't have a larger purpose; in
|
6
|
+
less awesome teams this would be the "utility" package.
|
7
|
+
|
8
|
+
Pethau is Welsh for "things," which I think captures the general purpose
|
9
|
+
nature of this gem nicely.
|
10
|
+
|
11
|
+
|
12
|
+
## Things
|
13
|
+
|
14
|
+
### initialize\_with
|
15
|
+
|
16
|
+
A lot of my classes use the following initializer pattern:
|
17
|
+
|
18
|
+
class Foo
|
19
|
+
attr_accessor :bar
|
20
|
+
private :bar=, :bar
|
21
|
+
attr_accessor :baz
|
22
|
+
private :baz=, :baz
|
23
|
+
|
24
|
+
def initialize bar, baz
|
25
|
+
self.bar = bar
|
26
|
+
self.baz = baz
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
I've been doing this for a while now, and I believe it's established itself as
|
31
|
+
enough of a pattern that I want to pull out the implementation and DRY it up:
|
32
|
+
|
33
|
+
class Foo
|
34
|
+
include Pethau::InitializeWith
|
35
|
+
initialize_with :foo, :bar
|
36
|
+
end
|
37
|
+
|
38
|
+
ince this is used in a lot of places in my projects I tend to include it in
|
39
|
+
`Object` but I didn't want to make that decision for you.
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Pethau
|
2
|
+
module InitializeWith
|
3
|
+
def self.included into
|
4
|
+
into.extend ClassMethods
|
5
|
+
end
|
6
|
+
|
7
|
+
module ClassMethods
|
8
|
+
def initialize_with *args
|
9
|
+
args.each do |attribute|
|
10
|
+
attr_accessor attribute
|
11
|
+
private attribute, "#{attribute}="
|
12
|
+
end
|
13
|
+
|
14
|
+
define_method :initialize do |*initial_args|
|
15
|
+
args.each do |arg|
|
16
|
+
send "#{arg}=", initial_args.shift
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
private :initialize_with
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/pethau.rb
ADDED
metadata
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pethau
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Craig R Webster
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-10-06 00:00:00.000000000Z
|
13
|
+
dependencies: []
|
14
|
+
description: Extracting a bunch of code that we use across our projects. In less awesome
|
15
|
+
teams this would be the utility package.
|
16
|
+
email:
|
17
|
+
- craig@barkingiguana.com
|
18
|
+
executables: []
|
19
|
+
extensions: []
|
20
|
+
extra_rdoc_files: []
|
21
|
+
files:
|
22
|
+
- lib/pethau/initialize_with.rb
|
23
|
+
- lib/pethau/version.rb
|
24
|
+
- lib/pethau.rb
|
25
|
+
- README.md
|
26
|
+
homepage:
|
27
|
+
licenses: []
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 1.8.10
|
47
|
+
signing_key:
|
48
|
+
specification_version: 3
|
49
|
+
summary: Useful bits of code that we use in lots of projects
|
50
|
+
test_files: []
|