virtus-group 0.0.1 → 0.1

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,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NDRlZmRjNDc5MWI5MGZmNGRiOGUzMTMzY2NjNjAyNDY4OTU1NTkwZA==
4
+ MmMwZjhhMDkwYjIyZmY3MDZmNGUwNDczZDAwOGIzMzkwYWRkNzBkMQ==
5
5
  data.tar.gz: !binary |-
6
- YzEzMDgyODNlYjJjNmNjYjNlZjhiNTA1NDQ0NTFjZjA4MTdkNjMwNg==
6
+ ZDFkNzQzNjE2ODhlZDc5ZDBhYjIwODY2MzRlYmI2MjVkNDM2MmYzYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzFiYmRlNjJjNjZmZjZkZDMwNzFhYWRkOGI1NzBhNmU1YTkwN2NlYjk0Zjlh
10
- OWMwYjUwM2Q2M2Q0NDJmYzc1ODI0YWVhYmY2MGMwZWM2NzlmNjlkNDBmYWUx
11
- MjZlM2I0ZmJmNWUwOGQ2ODYwMWU5ZDRjOWVlZGM4MjhlYmQ0NmQ=
9
+ MzMzNTJlZTFkMGJiYjVhODcxN2E2ZWY4NTQ0ZDdjZWMxMzBlZTY2ZWQxZjIx
10
+ YTA3MWIwM2IxOTIwMzFiZGQyZWI1NzBhZjkxMjc3NjI5MTE0Mzk5MzcyOTNi
11
+ NGE2MWQ0NWRhNDA1Y2RiODQyMzZhMGUwMWIwODk0YzdmNTEwNTQ=
12
12
  data.tar.gz: !binary |-
13
- NjZhMzllNWM5NTdiOGRiZGZhNGY3ODY3MDk3ZmNhMjE0YTdmMTc3OTY2NjFm
14
- OTA3MGQ2NDIzM2I1YWQ1ODk2YjkyMDZkMWZkMTNjYWZkNzNjOGIyNWNmODNk
15
- ZGE4MmU1MTYxZWNiMmU2NmU0M2JhZDJlMDI1MWNmMGYwOTgxMDI=
13
+ ZTc3NzEwYTI3NmZjZGY4MjA5NWNlNzI4NWNhODI3ZGI0NzRjYTM5OTA1YjE3
14
+ NTYzNTYyZTM4NjA1Nzk2NDRiNDZjNzBmN2NkNmE1ZjNhNWUwYmVkNDNlOTdm
15
+ YTI5ZDI4MTZhYTFmNWI3NDJjZWFmNmMzYjI2YjgwMmJkYTkwMGU=
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ branches:
2
+ only:
3
+ - master
4
+ language: ruby
5
+ rvm:
6
+ - 1.9.3
7
+ - 2.0.0
8
+ script: rspec
9
+
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  # Virtus.group
2
2
 
3
- The idea of this gem is to define groups over virtus attributes.
3
+ [![Build Status](https://travis-ci.org/spoptchev/virtus-group.png?branch=master)](https://travis-ci.org/spoptchev/virtus-group)
4
+
5
+ The idea of this gem is to define groups over Virtus attributes.
4
6
  Which is especially useful when you are working with [form objects](http://blog.codeclimate.com/blog/2012/10/17/7-ways-to-decompose-fat-activerecord-models/).
5
7
 
6
8
  ## Installation
@@ -37,7 +39,7 @@ class SignUpForm
37
39
  end
38
40
  ```
39
41
 
40
- Don't worry, the `SignUpForm` class will still behave like a regular Virtus class.
42
+ Don't worry, the `SignUpForm` object will still behave like a regular Virtus object.
41
43
 
42
44
  ```ruby
43
45
  # ---
@@ -65,7 +67,7 @@ sign_up_form.attributes_for :address
65
67
  # => {street: 'ABC-Street 1', zipcode: 'Z1234', city: 'ABC'}
66
68
  ```
67
69
 
68
- Let's say you have a `create` method on your `SignUpForm` you can use the attribute groups to create your models:
70
+ You can easily build your models from the attribute groups:
69
71
 
70
72
  ```ruby
71
73
  class SignUpForm
@@ -84,7 +86,7 @@ class SignUpForm
84
86
  end
85
87
 
86
88
  def create
87
- user = User.build(attributes_for(:user))
89
+ user = User.new(attributes_for(:user))
88
90
  user.build_address(attributes_for(:address))
89
91
  user.save
90
92
  end
@@ -102,3 +104,8 @@ end
102
104
  5. Create new Pull Request
103
105
 
104
106
 
107
+ ## TODO's
108
+
109
+ * remove dependency to `active_support` (needed for class level attribute inheritance)
110
+
111
+
data/lib/virtus/group.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "active_support/core_ext/class"
1
2
  require "virtus/group/version"
2
3
  require "virtus/group/attribute_tracker"
3
4
 
@@ -17,6 +18,8 @@ module Virtus
17
18
  def self.included(base)
18
19
  base.class_eval do
19
20
  extend ClassMethods
21
+
22
+ class_attribute :attribute_groups
20
23
  end
21
24
  end
22
25
 
@@ -28,7 +31,7 @@ module Virtus
28
31
  end
29
32
 
30
33
  def attribute_group
31
- @attribute_group ||= {}
34
+ self.attribute_groups ||= {}
32
35
  end
33
36
 
34
37
  end
@@ -1,5 +1,5 @@
1
1
  module Virtus
2
2
  module Group
3
- VERSION = "0.0.1"
3
+ VERSION = "0.1"
4
4
  end
5
5
  end
@@ -53,6 +53,27 @@ describe Virtus::Group do
53
53
  end
54
54
  end
55
55
 
56
+ it_behaves_like 'an object with a virtus group' do
57
+ let(:base_class) do
58
+ Class.new do
59
+ include Virtus.model
60
+ include Virtus.group
61
+
62
+ group :user do
63
+ attribute :email, String
64
+ end
65
+ end
66
+ end
67
+
68
+ let(:model_class) do
69
+ Class.new(base_class) do
70
+ group :address do
71
+ attribute :city, String
72
+ end
73
+ end
74
+ end
75
+ end
76
+
56
77
  it_behaves_like 'an object with a virtus group' do
57
78
  let(:model_class) do
58
79
  Class.new do
data/virtus-group.gemspec CHANGED
@@ -17,6 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.require_paths = ["lib"]
18
18
 
19
19
  spec.add_dependency "virtus", ">= 1.0.0"
20
+ spec.add_dependency "activesupport", ">= 3.0.0"
20
21
 
21
22
  spec.add_development_dependency "bundler", "~> 1.5"
22
23
  spec.add_development_dependency "rake", "~> 10.1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: virtus-group
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: '0.1'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Spas Poptchev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-08 00:00:00.000000000 Z
11
+ date: 2014-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -62,6 +76,7 @@ files:
62
76
  - .gitignore
63
77
  - .ruby-gemset
64
78
  - .ruby-version
79
+ - .travis.yml
65
80
  - Gemfile
66
81
  - LICENSE.txt
67
82
  - README.md