traitr 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/traitor/config.rb +9 -9
  3. data/lib/traitor.rb +19 -5
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2667be9e06efe6618b73bf825373f9e1ca3cd561
4
- data.tar.gz: 0c9c033c9115dbf6663131abd6d335842c8d5644
3
+ metadata.gz: 020595fcb015240ac313662cc5e284f10ee4ab06
4
+ data.tar.gz: 798775cefb913fc437972b29e8e412b792b29d9c
5
5
  SHA512:
6
- metadata.gz: 7ca5c6aa856de36fe96434b2058fd70bad92135c1bf625e10dec39d06d650d3c8adaa961f26be4c8723bf64d8451078a1963b04ce7c3472d7ab637f6cccdbabe
7
- data.tar.gz: 777b4865d18b62936e968a96795acc51d319b68e0a4300aafa365a209dccbf7aaaa12d83a9b1be4fc0ed57ff25dc10751065737ef21a1954e307c121a8ba6e47
6
+ metadata.gz: 7c8371264c2dcc1ce8b3cf7af4e057567c6b69e765e2e14279b420631f94b0de1ddc01e46623f50901e3700616563aba45d72d61a99eaa3911adc8ff959e1b56
7
+ data.tar.gz: 0b71b50fe8da6da863269c9f6db7d82770a55ec6a1949f0b67eb4ce9a9f477058c6a0b73e6f5150ff2d14962ec3a57bdb72c67c456b720036f8a0b23ae915638
@@ -1,30 +1,30 @@
1
1
  module Traitor
2
2
  class Config
3
- @save_method = nil
4
- @save_kwargs = {}
3
+ @create_method = nil
4
+ @create_kwargs = {}
5
5
  @build_kwargs = {}
6
6
  @build_with_list = false # use (**attributes.merge(build_kwargs)) instead of (attributes, **build_kwargs)
7
7
 
8
8
  class << self
9
- attr_accessor :save_method, :save_kwargs, :build_kwargs, :build_with_list
9
+ attr_accessor :create_method, :create_kwargs, :build_kwargs, :build_with_list
10
10
 
11
11
  def configure_for_rails!
12
- @save_method = :save
13
- @save_kwargs = { validate: false }
12
+ @create_method = :save
13
+ @create_kwargs = { validate: false }
14
14
  @build_kwargs = { without_protection: true }
15
15
  @build_with_list = false
16
16
  end
17
17
 
18
18
  def configure_safe_for_rails!
19
- @save_method = :save
20
- @save_kwargs = {}
19
+ @create_method = :save
20
+ @create_kwargs = {}
21
21
  @build_kwargs = {}
22
22
  @build_with_list = false
23
23
  end
24
24
 
25
25
  def reset!
26
- @save_method = nil
27
- @save_kwargs = {}
26
+ @create_method = nil
27
+ @create_kwargs = {}
28
28
  @build_kwargs = {}
29
29
  @build_with_list = false
30
30
  end
data/lib/traitor.rb CHANGED
@@ -43,15 +43,15 @@ module Traitor
43
43
  # and then save it.
44
44
  ##
45
45
  def self.create(klass, *traits, **attributes)
46
- save_method = Traitor::Config.save_method
47
- raise Traitor::Error.new("Cannot call Traitor.create until you have configured Traitor.save_method .") unless save_method
46
+ create_method = Traitor::Config.create_method
47
+ raise Traitor::Error.new("Cannot call Traitor.create until you have configured Traitor.create_method .") unless create_method
48
48
 
49
49
  record = build(klass, *traits, **attributes)
50
50
 
51
- if (save_kwargs = Traitor::Config.save_kwargs).any? # assignment intentional
52
- record.public_send(save_method, **save_kwargs)
51
+ if (create_kwargs = Traitor::Config.create_kwargs).any? # assignment intentional
52
+ record.public_send(create_method, **create_kwargs)
53
53
  else
54
- record.public_send(save_method)
54
+ record.public_send(create_method)
55
55
  end
56
56
 
57
57
  call_blocks(klass, :after_create, record, *traits)
@@ -77,6 +77,20 @@ module Traitor
77
77
  record
78
78
  end
79
79
 
80
+ def self.create_using(klass, create_method, *traits, **attributes)
81
+ old_create_method = Traitor::Config.create_method
82
+ old_create_kwargs = Traitor::Config.create_kwargs
83
+
84
+ new_create_kwargs = attributes.delete :create_kwargs
85
+ Traitor::Config.create_method = create_method
86
+ Traitor::Config.create_kwargs = new_create_kwargs if new_create_kwargs
87
+
88
+ create(klass, *traits, **attributes)
89
+ ensure
90
+ Traitor::Config.create_method = old_create_method
91
+ Traitor::Config.create_kwargs = old_create_kwargs
92
+ end
93
+
80
94
  # private methods
81
95
 
82
96
  def self.call_blocks(klass, trigger, record, *traits)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: traitr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zach Lome
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-07-25 00:00:00.000000000 Z
11
+ date: 2016-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler