schild 0.3.1 → 0.3.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/config/env.yml +2 -2
- data/lib/schild/version.rb +1 -1
- data/lib/schild.rb +10 -4
- data/specs/type_safe_spec.rb +19 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: af0c2f952bd55de136a4d53286de556efd28a2b8
|
4
|
+
data.tar.gz: 3fe5c5d3d6caa0900441b5c31c82aca45ce07eb1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9ec3636e5510cd763e402e4b056f47fadae75b5d78a791b38b04811bf4e3224efe67bb08ce00b9b9171d93464df5d57001eba09376350149dd513e8396840291
|
7
|
+
data.tar.gz: b490a280256c0de2a139526d860a9558868f608b902b981569bff5f8c220ba67028c90688c137e53c4fc3c3c7774b20ec626543452e9b3b48bd3ae1ee4723fd9
|
data/config/env.yml
CHANGED
data/lib/schild/version.rb
CHANGED
data/lib/schild.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'schild/version'
|
2
2
|
require 'sequel'
|
3
3
|
|
4
|
+
# erst Ruby 2.1.0 macht include zu einer public-Methode
|
4
5
|
if Module.private_method_defined? :include
|
5
6
|
class Module
|
6
7
|
public :include
|
@@ -36,13 +37,18 @@ module SchildTypeSaver
|
|
36
37
|
def self.included(klass)
|
37
38
|
klass.columns.each do |column|
|
38
39
|
name = column.snake_case
|
39
|
-
define_method(name) { public_send(column) ||
|
40
|
+
define_method(name) { public_send(column) || create_null_object(klass, column)}
|
40
41
|
end
|
41
42
|
end
|
42
43
|
|
43
|
-
|
44
|
-
|
45
|
-
|
44
|
+
def create_null_object(klass, column)
|
45
|
+
k = DB.schema_type_class(klass.db_schema[column][:type])
|
46
|
+
if k.class == Array
|
47
|
+
# Sequel stellt :datetime als [Time, DateTime] dar
|
48
|
+
DateTime.new(1799)
|
49
|
+
else
|
50
|
+
# alle anderen types werden als Klasse zurückgegeben
|
51
|
+
k.new
|
46
52
|
end
|
47
53
|
end
|
48
54
|
end
|
data/specs/type_safe_spec.rb
CHANGED
@@ -1,12 +1,27 @@
|
|
1
1
|
require "#{File.dirname(__FILE__)}/spec_helper"
|
2
2
|
|
3
3
|
describe Schueler do
|
4
|
-
describe '
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
describe 'null-Objekte passen sich den DB-Typen an' do
|
5
|
+
before do
|
6
|
+
# lade einen Standardschueler
|
7
|
+
@sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'gibt ein DateTime bei Daten zurück' do
|
11
|
+
@sm.geburtsdatum.must_be_instance_of DateTime
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'gibt String für Text zurück' do
|
15
|
+
@sm.bemerkungen.must_be_instance_of String
|
16
|
+
end
|
8
17
|
end
|
9
18
|
|
19
|
+
describe 'null-Objekte geben immer etwas zurück' do
|
20
|
+
before do
|
21
|
+
# lade einen Standardschueler
|
22
|
+
@sm = Schueler.where(:Status => 2, :Geloescht => "-", :Gesperrt => "-").first
|
23
|
+
end
|
24
|
+
|
10
25
|
it 'gibt nil zurück, wenn leer' do
|
11
26
|
@sm.Bemerkungen.must_equal nil
|
12
27
|
end
|