traitr 0.0.3 → 0.0.4

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.
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