hash_accessor 1.0.5 → 1.0.6
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 +7 -0
- data/.coveralls +1 -0
- data/.gitignore +4 -0
- data/.ruby-version +1 -0
- data/.travis.yml +16 -0
- data/CHANGELOG.md +23 -0
- data/Gemfile +4 -0
- data/MIT-LICENSE +1 -1
- data/README.md +84 -0
- data/Rakefile +7 -2
- data/hash_accessor.gemspec +6 -3
- data/lib/hash_accessor.rb +1 -1
- data/test/gemfiles/Gemfile.rails-4.2.x +5 -0
- data/test/hash_accessor_test.rb +3 -5
- data/test/test_helper.rb +6 -0
- metadata +65 -20
- data/README.rdoc +0 -67
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7098291ed6e537cfcc5b10d9d373df566468c6ff
|
4
|
+
data.tar.gz: a70729fdf9bd57daab92a4063bb306ae14fc2f29
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d137ed9b3df56b6ef8b07080b42b32bec92317c91f83f656efb688e7952f7b816093f2a6e4456247ffeb08d922a4e56a659236f5610ec75b51b1d61874c1bd1b
|
7
|
+
data.tar.gz: 335525f8481eeab048131104e33e36e9a6995a64575d220c23eef8afb36c7cdb2881eb14530f5b1ce277a220bc38193bc755e5715f665fde5ddd9d8523bbceee
|
data/.coveralls
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
service_name: travis-ci
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.4
|
data/.travis.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
sudo: false
|
2
|
+
language: ruby
|
3
|
+
script: bundle exec rake
|
4
|
+
rvm:
|
5
|
+
- 1.9.3
|
6
|
+
- 2.0.0
|
7
|
+
- 2.1.5
|
8
|
+
- 2.2.0
|
9
|
+
- jruby-19mode
|
10
|
+
gemfile:
|
11
|
+
- test/gemfiles/Gemfile.rails-4.2.x
|
12
|
+
matrix:
|
13
|
+
exclude:
|
14
|
+
- rvm: 1.9.3
|
15
|
+
gemfile: spec/gemfiles/rails-4.2.x.gemfile
|
16
|
+
fast_finish: true
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
# 1.0.6 / 2018-6-12
|
2
|
+
|
3
|
+
* Update activesupport to 4.2.9
|
4
|
+
|
5
|
+
# 1.0.5 / 2012-9-20
|
6
|
+
|
7
|
+
* [BUGFIX] don't share variables between instances
|
8
|
+
|
9
|
+
# 1.0.4 / 2012-9-20
|
10
|
+
|
11
|
+
* [ENHANCEMENT] added support for :decimal type
|
12
|
+
|
13
|
+
# 1.0.2 / 2012-1-22
|
14
|
+
|
15
|
+
* support Rails 3.2
|
16
|
+
|
17
|
+
# 1.0.1 / 2011-11-17
|
18
|
+
|
19
|
+
* [BUGFIX] fixing extra slash in load path of old init file
|
20
|
+
|
21
|
+
# 1.0.0 / 2011-8-16
|
22
|
+
|
23
|
+
* Initial release
|
data/Gemfile
ADDED
data/MIT-LICENSE
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
Copyright
|
1
|
+
Copyright (c) 2013 OctopusApp Inc. (http://getjobber.com), released under the MIT license
|
2
2
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining
|
4
4
|
a copy of this software and associated documentation files (the
|
data/README.md
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
# HashAccessor
|
2
|
+
|
3
|
+
[](https://travis-ci.org/GetJobber/hash_accessor) [](https://coveralls.io/r/GetJobber/hash_accessor) [](https://codeclimate.com/github/GetJobber/hash_accessor)
|
4
|
+
|
5
|
+
This gem provides similar functionality to Rails' new ActiveAttr, except with a bunch of powerful methods behind it. Type definitions, defaults, lambdas on arrays, and more.
|
6
|
+
|
7
|
+
The purpose behind building HashAccessor was to be able to quickly add/modify/remove variables being stored in a serialized hash of a rails model. This is very useful if you have a large list of often changing variables on a model which don't get queried against. You can create new variables without messing up your DB. Storing account configurations or custom themes is a common scenario.
|
8
|
+
|
9
|
+
This gem was designed to have HTML forms update directly to the hash, but maintain the correct class (respecting :attr_accessible of course). Options like :default, :type, and :collects are particularly helpful when dealing with forms.
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
In your Gemfile:
|
14
|
+
|
15
|
+
```
|
16
|
+
gem "hash_accessor"
|
17
|
+
```
|
18
|
+
|
19
|
+
Then run:
|
20
|
+
|
21
|
+
```
|
22
|
+
bundle install
|
23
|
+
```
|
24
|
+
|
25
|
+
## Usage
|
26
|
+
|
27
|
+
You define each accessor you want to be stored inside the serialized hash:
|
28
|
+
|
29
|
+
```
|
30
|
+
hash_accessor _NAME_OF_HASH_, _NAME_OF_VARIABLE_, options
|
31
|
+
```
|
32
|
+
|
33
|
+
Here is an example:
|
34
|
+
|
35
|
+
```ruby
|
36
|
+
class MyModel < ActiveRecord::Base
|
37
|
+
serialize :options, Hash
|
38
|
+
|
39
|
+
hash_accessor :options, :currency, :default => "$USD"
|
40
|
+
hash_accessor :options, :display_currency_on_invoices, :type => :boolean, :default => true
|
41
|
+
hash_accessor :options, :invoice_due_date_net, :type => :integer, :default => 3
|
42
|
+
|
43
|
+
|
44
|
+
def some_method
|
45
|
+
|
46
|
+
self.currency = "$CAD"
|
47
|
+
|
48
|
+
display_currency_on_invoices?
|
49
|
+
|
50
|
+
# ...
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
```
|
55
|
+
|
56
|
+
### Valid Options:
|
57
|
+
|
58
|
+
`:default` - if undefined, this plugin will create an empty instance of the defined type or null
|
59
|
+
|
60
|
+
`:type` - defaults to :string. Can also be :integer, :float, :decimal, :boolean, or :array
|
61
|
+
|
62
|
+
#### For Arrays only:
|
63
|
+
|
64
|
+
`:collects` - only runs on arrays. Calls the lambda method on each item in the array before saving
|
65
|
+
|
66
|
+
`:reject_blanks` - removes all blank elements after the collect method. This with :collects can be used together for storing a list of ids stored as checkboxes in a form.
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
## Contributing & Reporting Issues
|
71
|
+
|
72
|
+
Please feel free to report any issues, provide feedback, or make suggestions on the [Issue Tracker](http://github.com/GetJobber/hash_accessor/issues)
|
73
|
+
|
74
|
+
Tests can be ran against different versions of Rails like so:
|
75
|
+
|
76
|
+
```
|
77
|
+
BUNDLE_GEMFILE=test/gemfiles/Gemfile.rails-3.2.x bundle install
|
78
|
+
BUNDLE_GEMFILE=test/gemfiles/Gemfile.rails-3.2.x bundle exec rake test
|
79
|
+
```
|
80
|
+
|
81
|
+
---
|
82
|
+
|
83
|
+
|
84
|
+
Copyright (c) 2014 OctopusApp Inc. ([getjobber.com](http://getjobber.com)), released under the MIT license
|
data/Rakefile
CHANGED
@@ -1,8 +1,13 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
1
4
|
require 'rake/testtask'
|
2
5
|
|
3
6
|
Rake::TestTask.new do |t|
|
4
|
-
t.libs
|
7
|
+
t.libs.push "lib"
|
8
|
+
t.test_files = FileList['test/*_test.rb']
|
9
|
+
t.verbose = true
|
5
10
|
end
|
6
11
|
|
7
12
|
desc "Run tests"
|
8
|
-
task :default => :test
|
13
|
+
task :default => :test
|
data/hash_accessor.gemspec
CHANGED
@@ -7,18 +7,21 @@ Gem::Specification.new do |s|
|
|
7
7
|
s.email = ["forrest@getjobber.com"]
|
8
8
|
s.date = Time.now.utc.strftime("%Y-%m-%d")
|
9
9
|
|
10
|
-
s.description =
|
10
|
+
s.description = "This gem provides accessor methods to hash keys."
|
11
11
|
s.summary = "This gem provides extended functionality to serialized hashed in rails similary to rails' active_attr. It allows you to define accessor methods for variable that rest "+
|
12
12
|
"inside a serialized hash. This is very useful if you have a large list of often changing DB variables on a model which don't get queried against."
|
13
13
|
|
14
14
|
s.required_rubygems_version = ">= 1.3.6"
|
15
15
|
s.platform = Gem::Platform::RUBY
|
16
|
-
|
16
|
+
|
17
|
+
s.add_dependency "activesupport", ">= 4.2.9"
|
18
|
+
s.add_development_dependency "minitest", ">= 4.0"
|
19
|
+
s.add_development_dependency "bundler", ">= 1.3"
|
20
|
+
s.add_development_dependency "rake"
|
17
21
|
|
18
22
|
s.files = `git ls-files`.split("\n")
|
19
23
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
20
24
|
s.require_path = "lib"
|
21
25
|
|
22
26
|
s.has_rdoc = true
|
23
|
-
s.extra_rdoc_files = ["README.rdoc"]
|
24
27
|
end
|
data/lib/hash_accessor.rb
CHANGED
data/test/hash_accessor_test.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
|
1
|
+
require_relative "test_helper"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
class HashAccessorTest < Test::Unit::TestCase
|
3
|
+
class HashAccessorTest < MiniTest::Unit::TestCase
|
6
4
|
|
7
5
|
class TestClassWithHash
|
8
6
|
include HashAccessor
|
@@ -13,7 +11,7 @@ class HashAccessorTest < Test::Unit::TestCase
|
|
13
11
|
hash_accessor :options, :test_decimal, :type => :decimal
|
14
12
|
hash_accessor :options, :test_bool, :type => :bool
|
15
13
|
hash_accessor :options, :test_array_1, :type => :array, :collects => lambda{|item|
|
16
|
-
item.gsub(/li_/, "").to_i
|
14
|
+
item.gsub(/li_/, "").to_i
|
17
15
|
}
|
18
16
|
hash_accessor :options, :test_array_2, :type => :array, :reject_blanks => true
|
19
17
|
|
data/test/test_helper.rb
ADDED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hash_accessor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.6
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jobber
|
@@ -10,69 +9,115 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2018-06-13 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: activesupport
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - ">="
|
21
19
|
- !ruby/object:Gem::Version
|
22
|
-
version:
|
20
|
+
version: 4.2.9
|
23
21
|
type: :runtime
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - ">="
|
29
26
|
- !ruby/object:Gem::Version
|
30
|
-
version:
|
27
|
+
version: 4.2.9
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: minitest
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '4.0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '4.0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: bundler
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '1.3'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '1.3'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: rake
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
31
70
|
description: This gem provides accessor methods to hash keys.
|
32
71
|
email:
|
33
72
|
- forrest@getjobber.com
|
34
73
|
executables: []
|
35
74
|
extensions: []
|
36
|
-
extra_rdoc_files:
|
37
|
-
- README.rdoc
|
75
|
+
extra_rdoc_files: []
|
38
76
|
files:
|
39
|
-
- .
|
77
|
+
- ".coveralls"
|
78
|
+
- ".gitignore"
|
79
|
+
- ".ruby-version"
|
80
|
+
- ".travis.yml"
|
81
|
+
- CHANGELOG.md
|
82
|
+
- Gemfile
|
40
83
|
- MIT-LICENSE
|
41
|
-
- README.
|
84
|
+
- README.md
|
42
85
|
- Rakefile
|
43
86
|
- hash_accessor.gemspec
|
44
87
|
- lib/hash_accessor.rb
|
45
88
|
- lib/hash_accessor/class_methods.rb
|
46
89
|
- lib/hash_accessor/railtie.rb
|
47
90
|
- rails/init.rb
|
91
|
+
- test/gemfiles/Gemfile.rails-4.2.x
|
48
92
|
- test/hash_accessor_test.rb
|
93
|
+
- test/test_helper.rb
|
49
94
|
homepage:
|
50
95
|
licenses: []
|
96
|
+
metadata: {}
|
51
97
|
post_install_message:
|
52
98
|
rdoc_options: []
|
53
99
|
require_paths:
|
54
100
|
- lib
|
55
101
|
required_ruby_version: !ruby/object:Gem::Requirement
|
56
|
-
none: false
|
57
102
|
requirements:
|
58
|
-
- -
|
103
|
+
- - ">="
|
59
104
|
- !ruby/object:Gem::Version
|
60
105
|
version: '0'
|
61
106
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
107
|
requirements:
|
64
|
-
- -
|
108
|
+
- - ">="
|
65
109
|
- !ruby/object:Gem::Version
|
66
110
|
version: 1.3.6
|
67
111
|
requirements: []
|
68
112
|
rubyforge_project:
|
69
|
-
rubygems_version:
|
113
|
+
rubygems_version: 2.6.12
|
70
114
|
signing_key:
|
71
|
-
specification_version:
|
115
|
+
specification_version: 4
|
72
116
|
summary: This gem provides extended functionality to serialized hashed in rails similary
|
73
117
|
to rails' active_attr. It allows you to define accessor methods for variable that
|
74
118
|
rest inside a serialized hash. This is very useful if you have a large list of often
|
75
119
|
changing DB variables on a model which don't get queried against.
|
76
120
|
test_files:
|
121
|
+
- test/gemfiles/Gemfile.rails-4.2.x
|
77
122
|
- test/hash_accessor_test.rb
|
78
|
-
|
123
|
+
- test/test_helper.rb
|
data/README.rdoc
DELETED
@@ -1,67 +0,0 @@
|
|
1
|
-
= HashAccessor
|
2
|
-
|
3
|
-
This gem provides similar functionality to Rails' new ActiveAttr, except with a bunch of powerful methods behind it. Type definitions, defaults, lambdas on arrays, and more.
|
4
|
-
|
5
|
-
The purpose behind building HashAccessor was to be able to quickly add/modify/remove variables being stored in a serialized hash of a rails model. This is very useful if you have a large list of often changing variables on a model which don't get queried against. You can create new variables without messing up your DB. Storing account configurations or custom themes is a common scenario.
|
6
|
-
|
7
|
-
This gem was designed to have HTML forms update directly to the hash, but maintain the correct class (respecting :attr_accessible of course). Options like :default, :type, and :collects are particularly helpful when dealing with forms.
|
8
|
-
|
9
|
-
== Installation
|
10
|
-
|
11
|
-
In your <code>Gemfile</code>:
|
12
|
-
|
13
|
-
gem "hash_accessor"
|
14
|
-
|
15
|
-
Then run:
|
16
|
-
|
17
|
-
bundle install
|
18
|
-
|
19
|
-
== Usage
|
20
|
-
|
21
|
-
You define each accessor you want to be stored inside the serialized hash
|
22
|
-
|
23
|
-
<code>hash_accessor _NAME_OF_HASH_, _NAME_OF_VARIABLE_, options</code>
|
24
|
-
|
25
|
-
Here is an example:
|
26
|
-
|
27
|
-
class MyModel < ActiveRecord::Base
|
28
|
-
serialize :options, Hash
|
29
|
-
|
30
|
-
hash_accessor :options, :currency, :default => "$USD"
|
31
|
-
hash_accessor :options, :display_currency_on_invoices, :type => :boolean, :default => true
|
32
|
-
hash_accessor :options, :invoice_due_date_net, :type => :integer, :default => 3
|
33
|
-
|
34
|
-
|
35
|
-
def some_method
|
36
|
-
|
37
|
-
self.currency = "$CAD"
|
38
|
-
|
39
|
-
display_currency_on_invoices?
|
40
|
-
|
41
|
-
...
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
=== Valid Options:
|
47
|
-
|
48
|
-
<code>:default</code> - if undefined, this plugin will create an empty instance of the defined type or null
|
49
|
-
|
50
|
-
<code>:type</code> - defaults to :string. Can also be :integer, :float, :decimal, :boolean, or :array
|
51
|
-
|
52
|
-
==== For Arrays only:
|
53
|
-
<code>:collects</code> - only runs on arrays. Calls the lambda method on each item in the array before saving
|
54
|
-
|
55
|
-
<code>:reject_blanks</code> - removes all blank elements after the collect method. This with :collects can be used together for storing a list of ids stored as checkboxes in a form.
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
== Contributing & Reporting Issues
|
60
|
-
|
61
|
-
While I can't promise the most speedy response, I do plan to continue to maintain this gem. Please feel free to report any issues, provide feedback, or make suggestions on the {Issue Tracker}[http://github.com/GetJobber/hash_accessor/issues]
|
62
|
-
|
63
|
-
|
64
|
-
---
|
65
|
-
|
66
|
-
|
67
|
-
Copyright on Updates - Copyright (c) 2011 OctopusApp Inc. ({getjobber.com}[http://getjobber.com]), released under the MIT license
|