attr_symbol 0.0.1 → 0.0.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/LICENSE +1 -1
- data/README.rdoc +4 -1
- data/VERSION +1 -1
- data/attr_symbol.gemspec +56 -0
- data/lib/attr_symbol.rb +6 -2
- data/test/test_attr_symbol.rb +24 -0
- metadata +5 -4
data/LICENSE
CHANGED
data/README.rdoc
CHANGED
@@ -18,6 +18,9 @@ stored in string columns in the underlying data store.
|
|
18
18
|
thing.a = 'urk'
|
19
19
|
thing.a ### Returns :urk
|
20
20
|
|
21
|
+
If any of the attributes passed to #attr_symbol are not database columns of type string, an
|
22
|
+
ArgumentError exception will be raised.
|
23
|
+
|
21
24
|
== Copyright
|
22
25
|
|
23
|
-
Copyright (c)
|
26
|
+
Copyright (c) 2011 Justin Wienckowski. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
data/attr_symbol.gemspec
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{attr_symbol}
|
8
|
+
s.version = "0.0.2"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Justin Wienckowski"]
|
12
|
+
s.date = %q{2011-01-27}
|
13
|
+
s.description = %q{Attributes marked with the attr_symbol method can be set using strings or symbols, but when accessed will always return symbols.}
|
14
|
+
s.email = %q{jwinky+gems@gmail.com}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"LICENSE",
|
17
|
+
"README.rdoc"
|
18
|
+
]
|
19
|
+
s.files = [
|
20
|
+
".document",
|
21
|
+
".rvmrc",
|
22
|
+
"LICENSE",
|
23
|
+
"README.rdoc",
|
24
|
+
"Rakefile",
|
25
|
+
"VERSION",
|
26
|
+
"attr_symbol.gemspec",
|
27
|
+
"lib/attr_symbol.rb",
|
28
|
+
"test/helper.rb",
|
29
|
+
"test/test_attr_symbol.rb"
|
30
|
+
]
|
31
|
+
s.homepage = %q{http://github.com/jwinky/attr_symbol}
|
32
|
+
s.require_paths = ["lib"]
|
33
|
+
s.rubygems_version = %q{1.3.7}
|
34
|
+
s.summary = %q{Declare one or more ActiveRecord attributes stored in string columns to be returned as symbols.}
|
35
|
+
s.test_files = [
|
36
|
+
"test/helper.rb",
|
37
|
+
"test/test_attr_symbol.rb"
|
38
|
+
]
|
39
|
+
|
40
|
+
if s.respond_to? :specification_version then
|
41
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
42
|
+
s.specification_version = 3
|
43
|
+
|
44
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
45
|
+
s.add_development_dependency(%q<shoulda>, [">= 0"])
|
46
|
+
s.add_development_dependency(%q<activerecord>, [">= 0"])
|
47
|
+
else
|
48
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
49
|
+
s.add_dependency(%q<activerecord>, [">= 0"])
|
50
|
+
end
|
51
|
+
else
|
52
|
+
s.add_dependency(%q<shoulda>, [">= 0"])
|
53
|
+
s.add_dependency(%q<activerecord>, [">= 0"])
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
data/lib/attr_symbol.rb
CHANGED
@@ -8,11 +8,15 @@ module ActiveRecord::AttrSymbol
|
|
8
8
|
|
9
9
|
def attr_symbol(*attributes)
|
10
10
|
attributes.each do |attr|
|
11
|
+
unless columns_hash[attr.to_s] && columns_hash[attr.to_s].type == :string
|
12
|
+
raise ArgumentError, "Attribute :#{attr} is not a database column of type string"
|
13
|
+
end
|
14
|
+
|
11
15
|
define_method(attr) do
|
12
16
|
self[attr].try(:to_sym)
|
13
17
|
end
|
14
18
|
|
15
|
-
define_method(
|
19
|
+
define_method("#{attr}=") do |value|
|
16
20
|
self[attr] = value.try(:to_s)
|
17
21
|
end
|
18
22
|
end
|
@@ -21,4 +25,4 @@ module ActiveRecord::AttrSymbol
|
|
21
25
|
|
22
26
|
end
|
23
27
|
|
24
|
-
ActiveRecord::Base.send(:include, ActiveRecord::AttrSymbol)
|
28
|
+
ActiveRecord::Base.send(:include, ActiveRecord::AttrSymbol)
|
data/test/test_attr_symbol.rb
CHANGED
@@ -2,6 +2,8 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class Thing < ActiveRecord::Tableless
|
4
4
|
column :foo, :string
|
5
|
+
column :bar, :integer
|
6
|
+
|
5
7
|
attr_symbol :foo
|
6
8
|
end
|
7
9
|
|
@@ -40,4 +42,26 @@ class TestAttrSymbol < Test::Unit::TestCase
|
|
40
42
|
end
|
41
43
|
end
|
42
44
|
end
|
45
|
+
|
46
|
+
context "Calling #attr_symbol with a column that does not exist" do
|
47
|
+
should "raise ArgumentError" do
|
48
|
+
begin
|
49
|
+
Thing.send(:attr_symbol, :missing_attr)
|
50
|
+
fail "Expected ArgumentError but no exception thrown"
|
51
|
+
rescue ArgumentError => e
|
52
|
+
assert_equal "Attribute :missing_attr is not a database column of type string", e.message
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "Calling #attr_symbol with a column that is not a string" do
|
58
|
+
should "raise ArgumentError" do
|
59
|
+
begin
|
60
|
+
Thing.send(:attr_symbol, :bar)
|
61
|
+
fail "Expected ArgumentError but no exception thrown"
|
62
|
+
rescue ArgumentError => e
|
63
|
+
assert_equal "Attribute :bar is not a database column of type string", e.message
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
43
67
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attr_symbol
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Justin Wienckowski
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-27 00:00:00 -08:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -62,6 +62,7 @@ files:
|
|
62
62
|
- README.rdoc
|
63
63
|
- Rakefile
|
64
64
|
- VERSION
|
65
|
+
- attr_symbol.gemspec
|
65
66
|
- lib/attr_symbol.rb
|
66
67
|
- test/helper.rb
|
67
68
|
- test/test_attr_symbol.rb
|