simple_enum-persistence 0.1.0 → 0.1.1

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