tessa 0.5.0 → 0.6.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a12436b10f2fa00988bce92ba546e84d7d39f33
4
- data.tar.gz: b601a69166646ac06659519cecee7f487609edbf
3
+ metadata.gz: 8251efd9d4e25987dd0704a7b24f28dac8d29620
4
+ data.tar.gz: 5500c81dd663327791f2ff5a3f9e0e5e1eb98b99
5
5
  SHA512:
6
- metadata.gz: eb4517664519fcf6f650fc715b1f08cf556df91618bf7ba52a1171b6f9f11fc0bf452276562c563c19ba99a178837422e1fa2e5d8d55ebff89f510fac297d925
7
- data.tar.gz: a83ec8ea8bc251c9d9420654e98b728d5e524bebade9ad89f3174b11eaebae433a0fa5259137afd6588b3c1ffdc94cc5e990fff24da091b675b259270f18a19f
6
+ metadata.gz: 18870a22878208b5af37c96080789ae3e0f9e61fb49f2cf66b42a1e96dc5c28070b7a191ef1879a28c5e4f97db4591da1023c019b1007894dc94ca1f714ac733
7
+ data.tar.gz: a6b338c14d1eccc9e0e9571393417b73f77eabb7b5b2c78aff3f4ed84b56e53b009ae9845f8548e53071acca635bfc7e8b5b58a9e3847f7dce6dd1f923bd9bf2
@@ -0,0 +1,3 @@
1
+ machine:
2
+ ruby:
3
+ version: 2.2.0
@@ -55,7 +55,9 @@ module Tessa
55
55
  def asset(name, args={})
56
56
  field = tessa_fields[name] = Field.new(args.merge(name: name))
57
57
 
58
- define_method(name) do
58
+ dynamic_extensions = Module.new
59
+
60
+ dynamic_extensions.send(:define_method, name) do
59
61
  if instance_variable_defined?(ivar = "@#{name}")
60
62
  instance_variable_get(ivar)
61
63
  else
@@ -66,7 +68,7 @@ module Tessa
66
68
  end
67
69
  end
68
70
 
69
- define_method("#{name}=") do |value|
71
+ dynamic_extensions.send(:define_method, "#{name}=") do |value|
70
72
  change_set = field.change_set_for(value)
71
73
 
72
74
  if !(field.multiple? && value.is_a?(AssetChangeSet))
@@ -78,6 +80,8 @@ module Tessa
78
80
 
79
81
  field.apply(change_set, on: self)
80
82
  end
83
+
84
+ include dynamic_extensions
81
85
  end
82
86
 
83
87
  def tessa_fields
@@ -1,3 +1,3 @@
1
1
  module Tessa
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -15,6 +15,7 @@ RSpec.describe Tessa::Model do
15
15
  context "with a field named :avatar" do
16
16
  subject(:instance) { model.new }
17
17
  before do
18
+ model.send :attr_accessor, :avatar_id
18
19
  model.asset :avatar
19
20
  end
20
21
 
@@ -25,6 +26,18 @@ RSpec.describe Tessa::Model do
25
26
  it "creates an #avatar= method" do
26
27
  expect(instance).to respond_to(:avatar=)
27
28
  end
29
+
30
+ it "allows overriding and calling super" do
31
+ model.class_eval do
32
+ def avatar
33
+ @override_test = true
34
+ super
35
+ end
36
+ end
37
+
38
+ instance.avatar
39
+ expect(instance.instance_variable_get(:@override_test)).to eq(true)
40
+ end
28
41
  end
29
42
 
30
43
  context "with customized field" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tessa
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Powell
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-12 00:00:00.000000000 Z
12
+ date: 2015-08-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: faraday
@@ -97,6 +97,7 @@ files:
97
97
  - LICENSE.txt
98
98
  - README.md
99
99
  - Rakefile
100
+ - circle.yml
100
101
  - lib/tessa.rb
101
102
  - lib/tessa/asset.rb
102
103
  - lib/tessa/asset/failure.rb