virtus-group 0.0.1 → 0.1

Sign up to get free protection for your applications and to get access to all the features.
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