hobo_fields 2.0.1 → 2.1.0.pre1
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.
- checksums.yaml +7 -0
- data/Gemfile +3 -1
- data/VERSION +1 -1
- data/lib/hobo_fields/extensions/active_record/attribute_methods.rb +17 -46
- data/lib/hobo_fields/types/markdown_string.rb +1 -1
- data/lib/hobo_fields/types/raw_markdown_string.rb +1 -1
- data/lib/hobo_fields/types/text.rb +1 -1
- data/lib/hobo_fields/types/textile_string.rb +2 -2
- data/lib/hobo_fields.rb +21 -1
- data/test/generators.rdoctest +2 -2
- data/test/interactive_primary_key.rdoctest +3 -3
- data/test/migration_generator.rdoctest +3 -3
- metadata +7 -18
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 260c0dbe5e12d3b92f760ee5868fb0fb69645415
|
4
|
+
data.tar.gz: 14ca25b167b77d6b96e528d8ab23ed52ceaf0d36
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 072e9859d3fc1024b5bf0af545cf8179b461b0ab4350ba875a88b32f51ec4be31dd6a57c0d4b2f508111b81687e54bbd2c0b0dab57e37a8fdb62632d48240dac
|
7
|
+
data.tar.gz: 5f26cda68869c92d3644e63e218278228cd4733807147210552f930b163c74abeadef05d67bca4f1c948ddd173229e3070a4a1dfc361775f6729e1cc5cff3679
|
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.0.
|
1
|
+
2.1.0.pre1
|
@@ -1,4 +1,21 @@
|
|
1
1
|
ActiveRecord::Base.class_eval do
|
2
|
+
def read_attribute_with_hobo(attr_name)
|
3
|
+
name = attr_name.to_s
|
4
|
+
if self.class.can_wrap_with_hobo_type?(name)
|
5
|
+
attr_name = attr_name.to_sym
|
6
|
+
val = read_attribute_without_hobo(name)
|
7
|
+
wrapper_type = self.class.attr_type(attr_name)
|
8
|
+
if HoboFields.can_wrap?(wrapper_type, val)
|
9
|
+
wrapper_type.new(val)
|
10
|
+
else
|
11
|
+
val
|
12
|
+
end
|
13
|
+
else
|
14
|
+
read_attribute_without_hobo(name)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
alias_method_chain :read_attribute, :hobo
|
18
|
+
|
2
19
|
class << self
|
3
20
|
|
4
21
|
def can_wrap_with_hobo_type?(attr_name)
|
@@ -10,52 +27,6 @@ ActiveRecord::Base.class_eval do
|
|
10
27
|
end
|
11
28
|
end
|
12
29
|
|
13
|
-
# Rails 3.2+
|
14
|
-
def internal_attribute_access_code(attr_name, cast_code)
|
15
|
-
access_code = "(v=@attributes[attr_name]) && #{cast_code}"
|
16
|
-
|
17
|
-
unless attr_name == primary_key
|
18
|
-
access_code.insert(0, "missing_attribute(attr_name, caller) unless @attributes.has_key?(attr_name); ")
|
19
|
-
end
|
20
|
-
|
21
|
-
# This is the Hobo hook - add a type wrapper around the field
|
22
|
-
# value if we have a special type defined
|
23
|
-
if can_wrap_with_hobo_type?(attr_name)
|
24
|
-
access_code = "val = begin; #{access_code}; end; wrapper_type = self.class.attr_type(:#{attr_name}); " +
|
25
|
-
"if HoboFields.can_wrap?(wrapper_type, val); wrapper_type.new(val); else; val; end"
|
26
|
-
end
|
27
|
-
|
28
|
-
if cache_attribute?(attr_name)
|
29
|
-
access_code = "@attributes_cache['#{attr_name}'] ||= begin; #{access_code}; end;"
|
30
|
-
end
|
31
|
-
|
32
|
-
"attr_name = '#{attr_name}'; #{access_code}"
|
33
|
-
end
|
34
|
-
|
35
|
-
# Rails 3.1 or earlier
|
36
|
-
# Define an attribute reader method. Cope with nil column.
|
37
|
-
def define_read_method(symbol, attr_name, column)
|
38
|
-
cast_code = column.type_cast_code('v') if column
|
39
|
-
access_code = cast_code ? "(v=@attributes['#{attr_name}']) && #{cast_code}" : "@attributes['#{attr_name}']"
|
40
|
-
|
41
|
-
unless attr_name.to_s == self.primary_key.to_s
|
42
|
-
access_code = access_code.insert(0, "missing_attribute('#{attr_name}', caller) unless @attributes.has_key?('#{attr_name}'); ")
|
43
|
-
end
|
44
|
-
|
45
|
-
# This is the Hobo hook - add a type wrapper around the field
|
46
|
-
# value if we have a special type defined
|
47
|
-
if can_wrap_with_hobo_type?(symbol)
|
48
|
-
access_code = "val = begin; #{access_code}; end; wrapper_type = self.class.attr_type(:#{attr_name}); " +
|
49
|
-
"if HoboFields.can_wrap?(wrapper_type, val); wrapper_type.new(val); else; val; end"
|
50
|
-
end
|
51
|
-
|
52
|
-
if cache_attribute?(attr_name)
|
53
|
-
access_code = "@attributes_cache['#{attr_name}'] ||= begin; #{access_code}; end;"
|
54
|
-
end
|
55
|
-
|
56
|
-
generated_attribute_methods.module_eval("def #{symbol}; #{access_code}; end", __FILE__, __LINE__)
|
57
|
-
end
|
58
|
-
|
59
30
|
def define_method_attribute=(attr_name)
|
60
31
|
if can_wrap_with_hobo_type?(attr_name)
|
61
32
|
src = "begin; wrapper_type = self.class.attr_type(:#{attr_name}); " +
|
data/lib/hobo_fields.rb
CHANGED
@@ -92,6 +92,26 @@ module HoboFields
|
|
92
92
|
|
93
93
|
end
|
94
94
|
|
95
|
-
require 'hobo_fields/
|
95
|
+
require 'hobo_fields/extensions/active_record/attribute_methods'
|
96
|
+
require 'hobo_fields/extensions/active_record/fields_declaration'
|
97
|
+
require 'hobo_fields/field_declaration_dsl'
|
98
|
+
require 'hobo_fields/model'
|
99
|
+
require 'hobo_fields/sanitize_html'
|
100
|
+
require 'hobo_fields/model/field_spec'
|
101
|
+
require 'hobo_fields/model/index_spec'
|
102
|
+
require 'hobo_fields/types/email_address'
|
103
|
+
require 'hobo_fields/types/enum_string'
|
104
|
+
require 'hobo_fields/types/html_string'
|
105
|
+
require 'hobo_fields/types/lifecycle_state'
|
106
|
+
require 'hobo_fields/types/password_string'
|
107
|
+
require 'hobo_fields/types/raw_html_string'
|
108
|
+
# Disabled to avoid errors with Rails 4 and Ruby 2.0, they will be loaded later
|
109
|
+
# require 'hobo_fields/types/markdown_string'
|
110
|
+
# require 'hobo_fields/types/raw_markdown_string'
|
111
|
+
require 'hobo_fields/types/serialized_object'
|
112
|
+
require 'hobo_fields/types/text'
|
113
|
+
require 'hobo_fields/types/textile_string'
|
114
|
+
|
115
|
+
require 'hobo_fields/railtie' if defined?(Rails)
|
96
116
|
|
97
117
|
|
data/test/generators.rdoctest
CHANGED
@@ -23,11 +23,11 @@ doctest: module content matches
|
|
23
23
|
|
24
24
|
|
25
25
|
doctest: test file exists
|
26
|
-
>> File.exist? 'test/
|
26
|
+
>> File.exist? 'test/models/alpha/beta_test.rb'
|
27
27
|
=> true
|
28
28
|
|
29
29
|
doctest: test content matches
|
30
|
-
>> File.read 'test/
|
30
|
+
>> File.read 'test/models/alpha/beta_test.rb'
|
31
31
|
=>
|
32
32
|
require 'test_helper'
|
33
33
|
|
@@ -19,7 +19,7 @@ And requires also that you enter the right choice when prompted. OK we're ready
|
|
19
19
|
class Foo < ActiveRecord::Base
|
20
20
|
fields do
|
21
21
|
end
|
22
|
-
|
22
|
+
self.primary_key="foo_id"
|
23
23
|
end
|
24
24
|
>> Rails::Generators.invoke 'hobo:migration', %w(-n -m)
|
25
25
|
>> Foo.primary_key
|
@@ -29,7 +29,7 @@ And requires also that you enter the right choice when prompted. OK we're ready
|
|
29
29
|
doctest: rename from custom primary_key
|
30
30
|
>>
|
31
31
|
class Foo < ActiveRecord::Base
|
32
|
-
|
32
|
+
self.primary_key="id"
|
33
33
|
end
|
34
34
|
puts "\n\e[45m Please enter 'id' (no quotes) at the next prompt \e[0m"
|
35
35
|
>> Rails::Generators.invoke 'hobo:migration', %w(-n -m)
|
@@ -41,7 +41,7 @@ And requires also that you enter the right choice when prompted. OK we're ready
|
|
41
41
|
doctest: rename to custom primary_key
|
42
42
|
>>
|
43
43
|
class Foo < ActiveRecord::Base
|
44
|
-
|
44
|
+
self.primary_key="foo_id"
|
45
45
|
end
|
46
46
|
puts "\n\e[45m Please enter 'drop id' (no quotes) at the next prompt \e[0m"
|
47
47
|
>> Rails::Generators.invoke 'hobo:migration', %w(-n -m)
|
@@ -445,7 +445,7 @@ The migration generator respects the `set_table_name` declaration, although as b
|
|
445
445
|
|
446
446
|
>>
|
447
447
|
class Advert
|
448
|
-
|
448
|
+
self.table_name="ads"
|
449
449
|
fields do
|
450
450
|
title :string, :default => "Untitled"
|
451
451
|
body :text
|
@@ -459,7 +459,7 @@ The migration generator respects the `set_table_name` declaration, although as b
|
|
459
459
|
|
460
460
|
Set the table name back to what it should be and confirm we're in sync:
|
461
461
|
|
462
|
-
>> class Advert;
|
462
|
+
>> class Advert; self.table_name="adverts"; end
|
463
463
|
>> Generators::Hobo::Migration::Migrator.run
|
464
464
|
=> ["", ""]
|
465
465
|
|
@@ -626,7 +626,7 @@ HoboFields has some support for legacy keys.
|
|
626
626
|
name :string, :default => "No Name"
|
627
627
|
body :text
|
628
628
|
end
|
629
|
-
|
629
|
+
self.primary_key="advert_id"
|
630
630
|
end
|
631
631
|
>> up, down = Generators::Hobo::Migration::Migrator.run(:adverts => {:id => :advert_id})
|
632
632
|
>> up
|
metadata
CHANGED
@@ -1,36 +1,32 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hobo_fields
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0.pre1
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Tom Locke
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-12-18 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: hobo_support
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - '='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.0.
|
19
|
+
version: 2.1.0.pre1
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - '='
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: 2.0.
|
26
|
+
version: 2.1.0.pre1
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
28
|
name: rubydoctest
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - '>='
|
36
32
|
- !ruby/object:Gem::Version
|
@@ -38,7 +34,6 @@ dependencies:
|
|
38
34
|
type: :development
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - '>='
|
44
39
|
- !ruby/object:Gem::Version
|
@@ -46,7 +41,6 @@ dependencies:
|
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
42
|
name: RedCloth
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
45
|
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
@@ -54,7 +48,6 @@ dependencies:
|
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
52
|
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
@@ -62,7 +55,6 @@ dependencies:
|
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
56
|
name: kramdown
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
59
|
- - '>='
|
68
60
|
- !ruby/object:Gem::Version
|
@@ -70,7 +62,6 @@ dependencies:
|
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
66
|
- - '>='
|
76
67
|
- !ruby/object:Gem::Version
|
@@ -128,28 +119,26 @@ files:
|
|
128
119
|
- test_responses.txt
|
129
120
|
homepage: http://hobocentral.net
|
130
121
|
licenses: []
|
122
|
+
metadata: {}
|
131
123
|
post_install_message:
|
132
124
|
rdoc_options:
|
133
125
|
- --charset=UTF-8
|
134
126
|
require_paths:
|
135
127
|
- lib
|
136
128
|
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
-
none: false
|
138
129
|
requirements:
|
139
130
|
- - '>='
|
140
131
|
- !ruby/object:Gem::Version
|
141
132
|
version: '0'
|
142
133
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
|
-
none: false
|
144
134
|
requirements:
|
145
135
|
- - '>='
|
146
136
|
- !ruby/object:Gem::Version
|
147
137
|
version: 1.3.6
|
148
138
|
requirements: []
|
149
139
|
rubyforge_project: hobo
|
150
|
-
rubygems_version: 1.
|
140
|
+
rubygems_version: 2.1.11
|
151
141
|
signing_key:
|
152
|
-
specification_version:
|
142
|
+
specification_version: 4
|
153
143
|
summary: Rich field types and migration generator for Rails
|
154
144
|
test_files: []
|
155
|
-
has_rdoc:
|