rails_column_enumerator 1.0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 89190c022a1e885c4be851cacfe768892d5d0fd7
4
+ data.tar.gz: ee8b544d9a48aa9e3efb09a4d7e5938723cd1ed4
5
+ SHA512:
6
+ metadata.gz: af3d11f0593e71acaa43d016d3957b5a0d3572a46ba71f323d3c91283f9f029607b50a0058bbe2efa553314796c9e6d2e3b56f657b105744f1aff2b17285d0c7
7
+ data.tar.gz: dc1a82e176a10ce7bb4d9283d7fd10baeaf5de38ebd04d5dcb7418cf4dade935cc1b5a1a1868334351a72a9c4e57136e299b075564ac38aa01bed2ef2a99131b
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rails_column_enumerator.gemspec
4
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,36 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ rails_column_enumerator (0.1.0)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activemodel (3.2.11)
10
+ activesupport (= 3.2.11)
11
+ builder (~> 3.0.0)
12
+ activerecord (3.2.11)
13
+ activemodel (= 3.2.11)
14
+ activesupport (= 3.2.11)
15
+ arel (~> 3.0.2)
16
+ tzinfo (~> 0.3.29)
17
+ activesupport (3.2.11)
18
+ i18n (~> 0.6)
19
+ multi_json (~> 1.0)
20
+ arel (3.0.3)
21
+ builder (3.0.4)
22
+ i18n (0.7.0)
23
+ multi_json (1.11.2)
24
+ mysql2 (0.3.18)
25
+ rake (10.4.2)
26
+ tzinfo (0.3.45)
27
+
28
+ PLATFORMS
29
+ ruby
30
+
31
+ DEPENDENCIES
32
+ activerecord (= 3.2.11)
33
+ bundler (~> 1.8)
34
+ mysql2 (= 0.3.18)
35
+ rails_column_enumerator!
36
+ rake (~> 10.0)
data/README.md ADDED
@@ -0,0 +1,65 @@
1
+ # RailsColumnEnumerator
2
+
3
+ Simple Gem to easily store attributes as enumerated values in ActiveRecord using Rails
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'rails_column_enumerator'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install rails_column_enumerator
20
+
21
+ ## Usage
22
+
23
+ Add ```extends RailsColumnEnumerator``` to the top of whatever class you want to add an enumerated column to
24
+
25
+ Then define the attribute with ```enumerated_column``` method
26
+
27
+ example:
28
+ ```ruby
29
+ class TestClass < ActiveRecord::Base
30
+ extends RailsColumnEnumerator
31
+
32
+ enumerated_column :sample_column, { first: 1, second: 2, third: 3 }
33
+ end
34
+
35
+ # The following two consts would be added to your class (Their name is derived from the name you pass into 'enumerated_column')
36
+ TestClass::SAMPLE_COLUMNS # { "first" => 1, "second" => 2, "third" => 3}
37
+ TestClass::SAMPLE_COLUMN_SYMBOLS # { 1 => "first", 2 => "second", 3 => "third" }
38
+
39
+ # You can use your enumerated attribute as follows
40
+ example = TestClass.new
41
+
42
+ example.sample_column = :second
43
+
44
+ example.sample_column # 2
45
+ example.sample_column(true) # :second
46
+
47
+ example.sample_column = 3
48
+
49
+ example.sample_column # 3
50
+ example.sample_column(true) # :third
51
+ ```
52
+
53
+ ## Development
54
+
55
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
56
+
57
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
58
+
59
+ ## Contributing
60
+
61
+ 1. Fork it ( https://github.com/[my-github-username]/rails_column_enumerator/fork )
62
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
63
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
64
+ 4. Push to the branch (`git push origin my-new-feature`)
65
+ 5. Create a new Pull Request
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "rails_column_enumerator"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
@@ -0,0 +1,24 @@
1
+ require "rails_column_enumerator/version"
2
+
3
+ module RailsColumnEnumerator
4
+ def enumerated_column(column_name, enumerated_values)
5
+ enum_name = column_name.to_s.pluralize.upcase.to_sym
6
+ enum_symbols_name = (column_name.to_s.upcase + '_SYMBOLS').to_sym
7
+
8
+ self.const_set(enum_name, enumerated_values.with_indifferent_access)
9
+ self.const_set(enum_symbols_name, enumerated_values.invert)
10
+
11
+ self.send(:define_method, column_name) do |return_symbol = false|
12
+ return_symbol ? self.class.const_get(enum_symbols_name)[read_attribute(column_name)].to_sym : read_attribute(column_name)
13
+ end
14
+
15
+ self.send(:define_method, (column_name.to_s + '=').to_sym)do |val|
16
+ if val.is_a?(String) || val.is_a?(Symbol)
17
+ val = val.to_s.downcase
18
+ write_attribute(column_name, self.class.const_get(enum_name)[val])
19
+ else
20
+ write_attribute(column_name, val)
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,3 @@
1
+ module RailsColumnEnumerator
2
+ VERSION = "1.0.0"
3
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rails_column_enumerator/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rails_column_enumerator"
8
+ spec.version = RailsColumnEnumerator::VERSION
9
+ spec.authors = ["Brian O'Reilly"]
10
+ spec.email = ["brian.oreilly@clio.com"]
11
+ spec.summary = %q{Gem for enumerating Class attributes}
12
+ spec.homepage = "https://github.com/brianclio/rails_column_enumerator"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
16
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
+ spec.require_paths = ["lib"]
18
+
19
+ spec.add_development_dependency "bundler", "~> 1.8"
20
+ spec.add_development_dependency "rake", "~> 10.0"
21
+ spec.add_development_dependency "activerecord", "3.2.11"
22
+ spec.add_development_dependency 'mysql2', '0.3.18'
23
+ end
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rails_column_enumerator
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Brian O'Reilly
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-18 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.8'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.8'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.11
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.11
55
+ - !ruby/object:Gem::Dependency
56
+ name: mysql2
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.3.18
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '='
67
+ - !ruby/object:Gem::Version
68
+ version: 0.3.18
69
+ description:
70
+ email:
71
+ - brian.oreilly@clio.com
72
+ executables:
73
+ - console
74
+ extensions: []
75
+ extra_rdoc_files: []
76
+ files:
77
+ - Gemfile
78
+ - Gemfile.lock
79
+ - README.md
80
+ - bin/console
81
+ - lib/rails_column_enumerator.rb
82
+ - lib/rails_column_enumerator/version.rb
83
+ - rails_column_enumerator.gemspec
84
+ homepage: https://github.com/brianclio/rails_column_enumerator
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubyforge_project:
104
+ rubygems_version: 2.4.6
105
+ signing_key:
106
+ specification_version: 4
107
+ summary: Gem for enumerating Class attributes
108
+ test_files: []
109
+ has_rdoc: