acts_as_interface 0.1.0 → 0.1.1
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/Gemfile +1 -1
- data/README.rdoc +30 -2
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/acts_as_interface.gemspec +8 -5
- data/lib/acts_as_interface.rb +0 -2
- metadata +21 -5
data/Gemfile
CHANGED
data/README.rdoc
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
== INSTALL
|
4
4
|
|
5
|
-
gem install
|
5
|
+
gem install acts_as_interface
|
6
6
|
|
7
7
|
== DESCRIPTION
|
8
8
|
|
@@ -38,7 +38,7 @@ In the spirit of self documenting code, acts_as_interface allows you to easily d
|
|
38
38
|
Student.foo #raises NotImplementedError
|
39
39
|
|
40
40
|
|
41
|
-
=== MODULE
|
41
|
+
=== MODULE (on include)
|
42
42
|
|
43
43
|
module ActsAsPerson
|
44
44
|
def self.included(base)
|
@@ -58,6 +58,34 @@ In the spirit of self documenting code, acts_as_interface allows you to easily d
|
|
58
58
|
student = Student.first
|
59
59
|
student.name #works as usual
|
60
60
|
student.dance #raises NotImplementedError
|
61
|
+
|
62
|
+
=== MODULE (from method call)
|
63
|
+
|
64
|
+
module ActsAsPerson
|
65
|
+
module ClassMethods
|
66
|
+
def acts_as_person
|
67
|
+
include ActsAsInterface
|
68
|
+
abstract_methods :name, :dance
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def self.included(base)
|
73
|
+
base.extend(ClassMethods)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
class Student < ActiveRecord::Base
|
78
|
+
include acts_as_person
|
79
|
+
|
80
|
+
#include or invoke modules that defines name but not dance
|
81
|
+
|
82
|
+
acts_as_person #apply interface
|
83
|
+
end
|
84
|
+
|
85
|
+
student = Student.first
|
86
|
+
student.name #works as usual
|
87
|
+
student.dance #raises NotImplementedError
|
88
|
+
|
61
89
|
|
62
90
|
== CONTRIBUTING
|
63
91
|
|
data/Rakefile
CHANGED
@@ -21,7 +21,7 @@ Jeweler::Tasks.new do |gem|
|
|
21
21
|
gem.authors = ["Philippe Huibonhoa"]
|
22
22
|
# Include your dependencies below. Runtime dependencies are required when using your gem,
|
23
23
|
# and development dependencies are only needed for development (ie running rake tasks, tests, etc)
|
24
|
-
|
24
|
+
gem.add_runtime_dependency 'activesupport', '>= 2.3.4'
|
25
25
|
# gem.add_development_dependency 'rspec', '> 1.2.3'
|
26
26
|
end
|
27
27
|
Jeweler::RubygemsDotOrgTasks.new
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/acts_as_interface.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{acts_as_interface}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Philippe Huibonhoa"]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-02-04}
|
13
13
|
s.description = %q{Easily define abstract methods and callbacks for superclasses and modules}
|
14
14
|
s.email = %q{philippe.huibonhoa@bookrenter.com}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -47,20 +47,23 @@ Gem::Specification.new do |s|
|
|
47
47
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
48
48
|
s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
|
49
49
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
50
|
-
s.add_development_dependency(%q<activesupport>, ["
|
50
|
+
s.add_development_dependency(%q<activesupport>, [">= 2.3.4"])
|
51
|
+
s.add_runtime_dependency(%q<activesupport>, [">= 2.3.4"])
|
51
52
|
else
|
52
53
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
53
54
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
54
55
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
55
56
|
s.add_dependency(%q<rcov>, [">= 0"])
|
56
|
-
s.add_dependency(%q<activesupport>, ["
|
57
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
58
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
57
59
|
end
|
58
60
|
else
|
59
61
|
s.add_dependency(%q<shoulda>, [">= 0"])
|
60
62
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
61
63
|
s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
|
62
64
|
s.add_dependency(%q<rcov>, [">= 0"])
|
63
|
-
s.add_dependency(%q<activesupport>, ["
|
65
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
66
|
+
s.add_dependency(%q<activesupport>, [">= 2.3.4"])
|
64
67
|
end
|
65
68
|
end
|
66
69
|
|
data/lib/acts_as_interface.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_interface
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Philippe Huibonhoa
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-02-04 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -82,7 +82,7 @@ dependencies:
|
|
82
82
|
requirement: &id005 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
|
-
- - "
|
85
|
+
- - ">="
|
86
86
|
- !ruby/object:Gem::Version
|
87
87
|
hash: 11
|
88
88
|
segments:
|
@@ -94,6 +94,22 @@ dependencies:
|
|
94
94
|
name: activesupport
|
95
95
|
prerelease: false
|
96
96
|
version_requirements: *id005
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
99
|
+
none: false
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
hash: 11
|
104
|
+
segments:
|
105
|
+
- 2
|
106
|
+
- 3
|
107
|
+
- 4
|
108
|
+
version: 2.3.4
|
109
|
+
type: :runtime
|
110
|
+
name: activesupport
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: *id006
|
97
113
|
description: Easily define abstract methods and callbacks for superclasses and modules
|
98
114
|
email: philippe.huibonhoa@bookrenter.com
|
99
115
|
executables: []
|