simple_enum-persistence 0.1.0 → 0.1.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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7e18e945f72f1bd93194c4ce5b46cc97cbee284
4
- data.tar.gz: f32b25307b11a3e490987be09a1fe0277d95be23
3
+ metadata.gz: fedb1927ee03241f5acbc723d0dbd541af1c7555
4
+ data.tar.gz: 8c84cb29399975a59784cb7bff7c2f8cc021be14
5
5
  SHA512:
6
- metadata.gz: 8d4b9363873d8cafc6707c4ba7c5fad5b56d017d5d3232369faaa67358558817ebf0f4e3f7c2fb397a603edddd55d7faa2f52609f2e2ec446303624843a779f9
7
- data.tar.gz: 1022f35a51fbac5aa3b7f6092ce83e1a64f4604e40f2ceb863da7513ff8da1743891611644f94beaefe64a317bbc8e8dceda170f3954fcfda1f6bbf40fc9dddf
6
+ metadata.gz: 4396a4da6a92b84cc02120d180b3bb5928a53c8d2e4ca44f80504e8035f52c57684c16af6e8ea13d9d01b8759836ca2488557c17aff9e5cae293d109f6e43c2e
7
+ data.tar.gz: ec2c412bf25531baea059f5ef6e810890137ef864946765878a343808364c43940e5924fbb6d6bbd3de187abc475170b254e3f8c868812d8a2b0eb4c75c88c6e
data/.travis.yml CHANGED
@@ -1,4 +1,12 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
- - 2.2.1
4
- before_install: gem install bundler -v 1.10.6
4
+ - 1.9.3
5
+ - 2.1.7
6
+ - 2.2.3
7
+ - jruby-19mode
8
+
9
+ gemfile:
10
+ - Gemfile
11
+
12
+ sudo: false
data/Gemfile CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in simple_enum-persistence.gemspec
4
4
  gemspec
5
+
6
+ # some development deps
7
+ gem 'activerecord-jdbcsqlite3-adapter', platform: :jruby
8
+ gem 'sqlite3', platform: :ruby
9
+ gem 'bson_ext', platform: :ruby
10
+
11
+ # Code coverage on CI only
12
+ gem 'codeclimate-test-reporter', group: :test, require: nil
data/README.md CHANGED
@@ -1,17 +1,31 @@
1
1
  # SimpleEnum::Persistence
2
2
 
3
- SimpleEnum::Multiple is extension of SimpleEnum, which brings data persistence support to SimpleEnum.
3
+ [![Travis](https://img.shields.io/travis/bbtfr/simple_enum-persistence.svg)](https://travis-ci.org/bbtfr/simple_enum-persistence)
4
+ [![Gem](https://img.shields.io/gem/v/simple_enum-persistence.svg)](https://rubygems.org/gems/simple_enum-persistence)
5
+
6
+ SimpleEnum::Persistence is extension of SimpleEnum, which brings data persistence support to SimpleEnum.
7
+ Sometimes, we need to use one of our table as enum, in order to add/remove enum type dynamically
8
+
9
+ ## Why not ActiveRecord association?
10
+
11
+ 1. SimpleEnum is a great library, which brings a lot of benefits to create enum-like fields;
12
+
13
+ 2. SimpleEnum::Persistence cache all enums in memory for better performance, and it will reload when database changes (with `after_save` callback).
4
14
 
5
15
  ## ActiveRecord Quick start
6
16
 
7
17
  Let's say we have a model Tag, we want to use it as enum data, just add this to a model:
8
18
  ```ruby
9
- as_enum :tag, Tag, persistence: true
19
+ class Post
20
+ as_enum :tag, Tag, persistence: true
21
+ end
10
22
  ```
11
23
 
12
24
  Then SimpleEnum will use `Tag.all` as enum data, `tag.name` as enum key and `tag.id` as enum value, if we want to use a field rather than `:name` as enum key:
13
25
  ```ruby
14
- as_enum :tag, Tag, persistence: { key: :name, value: :id }
26
+ class Post
27
+ as_enum :tag, Tag, persistence: { key: :name, value: :id }
28
+ end
15
29
  ```
16
30
 
17
31
  ## License
data/Rakefile CHANGED
@@ -1 +1,16 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ desc 'Default: run all unit tests for both ActiveRecord & Mongoid.'
4
+ task :default => :spec
5
+
6
+ desc 'Run rspec test suite'
7
+ task :spec do
8
+ sh 'bundle exec rspec spec/'
9
+ end
10
+
11
+ # Mongodb
12
+ directory "tmp/mongodb.data"
13
+ desc 'Run mongodb in tmp/'
14
+ task :mongodb => [:'tmp/mongodb.data'] do |t|
15
+ system "mongod", "--dbpath", "tmp/mongodb.data"
16
+ end
@@ -1,30 +1,33 @@
1
1
  module SimpleEnum
2
2
  module Persistence
3
3
  module Extension
4
- def self.included base
5
- base.module_eval do
6
- alias_method :as_enum_without_persistence, :as_enum
7
- def as_enum name, values, options = {}
8
- persistence = options.delete :persistence
9
- if persistence
10
- options[:with] ||= SimpleEnum.with.reject do |feature|
11
- %i(attribute scope).include? feature
12
- end
13
- options[:map] = :persistence
14
-
15
- values = [ values ]
16
- values.push persistence if persistence.kind_of? Hash
17
- end
18
-
19
- as_enum_without_persistence name, values, options
4
+ def as_enum name, values, options = {}
5
+ persistence = options.delete :persistence
6
+ if persistence
7
+ options[:with] ||= SimpleEnum.with.reject do |feature|
8
+ [:attribute, :scope].include? feature
20
9
  end
10
+ options[:map] = :persistence
11
+
12
+ values = [ values ]
13
+ values.push persistence if persistence.kind_of? Hash
21
14
  end
22
- end
23
15
 
24
- def generate_enum_persistence_extension_for enum, accessor
16
+ super
25
17
  end
26
18
  end
27
19
  end
28
20
  end
29
21
 
30
- SimpleEnum.register_generator :persistence, SimpleEnum::Persistence::Extension
22
+ if SimpleEnum::Attribute.method_defined? :prepend
23
+ SimpleEnum::Attribute.send :prepend, SimpleEnum::Persistence::Extension
24
+ else
25
+ # Monkey Path Module::prepend for Ruby 1.9
26
+ Attribute = SimpleEnum.send :remove_const, :Attribute
27
+ module SimpleEnum::Attribute
28
+ include Attribute
29
+ include SimpleEnum::Persistence::Extension
30
+ end
31
+ Object.send :remove_const, :Attribute
32
+ end
33
+
@@ -1,5 +1,5 @@
1
1
  module SimpleEnum
2
2
  module Persistence
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = ["bbtfrr@gmail.com"]
11
11
 
12
12
  spec.summary = %q{Persistence support for SimpleEnum.}
13
- spec.description = %q{SimpleEnum::Multiple is extension of SimpleEnum, which brings data persistence support to SimpleEnum.}
13
+ spec.description = %q{SimpleEnum::Persistence is extension of SimpleEnum, which brings data persistence support to SimpleEnum.}
14
14
  spec.homepage = "https://github.com/bbtfr/simple_enum-persistence"
15
15
  spec.license = "MIT"
16
16
 
@@ -29,7 +29,6 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_runtime_dependency 'simple_enum', '~> 2.2'
31
31
 
32
- spec.add_development_dependency 'bundler', '~> 1.10'
33
32
  spec.add_development_dependency 'rake', '~> 10.0'
34
33
  spec.add_development_dependency 'activerecord', '>= 4.0.0'
35
34
  spec.add_development_dependency 'mongoid', '>= 4.0.0'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_enum-persistence
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Theo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-09-16 00:00:00.000000000 Z
11
+ date: 2015-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_enum
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.2'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.10'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.10'
41
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -94,8 +80,8 @@ dependencies:
94
80
  - - "~>"
95
81
  - !ruby/object:Gem::Version
96
82
  version: '2.14'
97
- description: SimpleEnum::Multiple is extension of SimpleEnum, which brings data persistence
98
- support to SimpleEnum.
83
+ description: SimpleEnum::Persistence is extension of SimpleEnum, which brings data
84
+ persistence support to SimpleEnum.
99
85
  email:
100
86
  - bbtfrr@gmail.com
101
87
  executables: []