dry_model 0.0.1.pre
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/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/dry_model.gemspec +19 -0
- data/lib/dry_model/application.rb +22 -0
- data/lib/dry_model/helpers/settings.rb +59 -0
- data/lib/dry_model/shared/methods.rb +35 -0
- data/lib/dry_model/version.rb +3 -0
- data/lib/dry_model.rb +20 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 205e9b42cd43c9848b03a330a3ac4b65de5c7f38
|
4
|
+
data.tar.gz: b3dfbe93dda4489fbc0e7bec7ce7b2c095a4fbdf
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 80bb8fa480649200b247f9375b2fab969b7aa72b39364b0497ed80b9860334ced76f2d92eccb0c6b432320fa7525f3d64fad68d6caa469369bb7121a45e45ff5
|
7
|
+
data.tar.gz: 31b67d00515d9058505fbba142c5f76c7914b844153a4bae923fa8dc5fa1656b8d6efa64a4cfdf165801cf0b9703ddbc94ff861f1ad0dd8bbaf1ed02ccf14ee4
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
dry-model
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
2.3.0
|
data/dry_model.gemspec
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), "lib", "dry_model", "version")
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'dry_model'
|
5
|
+
s.license = 'MIT'
|
6
|
+
s.version = DryModel::VERSION
|
7
|
+
s.homepage = 'https://github.com/victorcreed/dry_model'
|
8
|
+
s.authors = ['Kamal Ejaz']
|
9
|
+
s.email = ['a2ninek@yahoo.com']
|
10
|
+
s.description = 'micro library to dry models'
|
11
|
+
s.summary = 'micro library to dry models'
|
12
|
+
|
13
|
+
s.files = `git ls-files`.split("\n").sort
|
14
|
+
s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
|
15
|
+
|
16
|
+
s.required_ruby_version = '>= 1.9.3'
|
17
|
+
|
18
|
+
s.add_dependency 'rails', '>= 3.2', '< 5.0'
|
19
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'dry_model/helpers/settings'
|
2
|
+
require 'dry_model/shared/methods'
|
3
|
+
|
4
|
+
module DryModel
|
5
|
+
class Application
|
6
|
+
include Settings
|
7
|
+
include Settings::Inheritance
|
8
|
+
setting :load_paths, [Rails.root.join("app", "dry_models")]
|
9
|
+
|
10
|
+
def setup!
|
11
|
+
files.each { |file| load(file) }
|
12
|
+
end
|
13
|
+
def files
|
14
|
+
load_paths.flatten.compact.uniq.flat_map { |path| Dir["#{path}/**/*.rb"] }
|
15
|
+
end
|
16
|
+
|
17
|
+
def register(model, &block)
|
18
|
+
model.send(:include, DryModel::Shared::Methods)
|
19
|
+
model.class_eval(&block)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
module DryModel
|
3
|
+
module Settings
|
4
|
+
extend ActiveSupport::Concern
|
5
|
+
included do
|
6
|
+
def read_default_settings(name)
|
7
|
+
default_setting[name]
|
8
|
+
end
|
9
|
+
def default_setting
|
10
|
+
self.class.default_settings
|
11
|
+
end
|
12
|
+
end
|
13
|
+
class_methods do
|
14
|
+
def default_settings
|
15
|
+
@default_settings ||= {}
|
16
|
+
end
|
17
|
+
|
18
|
+
def setting(name, default)
|
19
|
+
default_settings[name] = default
|
20
|
+
attr_writer name
|
21
|
+
define_method name do
|
22
|
+
if instance_variable_defined? "@#{name}"
|
23
|
+
instance_variable_get "@#{name}"
|
24
|
+
else
|
25
|
+
read_default_settings name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
define_method "#{name}?" do
|
30
|
+
value = public_send(name)
|
31
|
+
if value.is_a? Array
|
32
|
+
value.any?
|
33
|
+
else
|
34
|
+
value.present?
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
module Inheritance
|
40
|
+
|
41
|
+
extend ActiveSupport::Concern
|
42
|
+
class_methods do
|
43
|
+
def settings_inherited_by(heir)
|
44
|
+
(@setting_heirs ||= []) << heir
|
45
|
+
heir.send :include, ControllerLess::Settings
|
46
|
+
end
|
47
|
+
def inheritable_setting(name, default)
|
48
|
+
setting name, default
|
49
|
+
@setting_heirs.each{ |c| c.setting name, default }
|
50
|
+
end
|
51
|
+
|
52
|
+
def deprecated_inheritable_setting(name, default)
|
53
|
+
deprecated_setting name, default
|
54
|
+
@setting_heirs.each{ |c| c.deprecated_setting name, default }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
module DryModel
|
3
|
+
module Shared
|
4
|
+
module Methods
|
5
|
+
extend ActiveSupport::Concern
|
6
|
+
class_methods do
|
7
|
+
|
8
|
+
def def_has_many(value, options={})
|
9
|
+
has_many value, options
|
10
|
+
accepts_nested_attributes_for value, reject_if: :all_blank, allow_destroy: true
|
11
|
+
end
|
12
|
+
|
13
|
+
def def_has_many_through(value, options={})
|
14
|
+
def_has_many(options.fetch(:through))
|
15
|
+
def_has_many(value, options)
|
16
|
+
end
|
17
|
+
def def_func(func_name, &block)
|
18
|
+
define_method(func_name, &block)
|
19
|
+
end
|
20
|
+
%w(extra_columns blocked_columns).each do |col_name|
|
21
|
+
attr_accessor col_name
|
22
|
+
define_method "#{col_name}_list" do |list|
|
23
|
+
instance_variable_set("@#{col_name}", list)
|
24
|
+
end
|
25
|
+
define_method col_name do
|
26
|
+
instance_variable_get("@#{col_name}") || []
|
27
|
+
end
|
28
|
+
end
|
29
|
+
def whitelist_columns
|
30
|
+
(column_names - blocked_columns) + extra_columns
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/lib/dry_model.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'active_support/core_ext'
|
2
|
+
|
3
|
+
module DryModel
|
4
|
+
autoload :VERSION, 'dry_model/version'
|
5
|
+
autoload :Application, 'dry_model/application'
|
6
|
+
|
7
|
+
class << self
|
8
|
+
attr_accessor :application
|
9
|
+
def application
|
10
|
+
@application ||= DryModel::Application.new
|
11
|
+
end
|
12
|
+
def setup
|
13
|
+
|
14
|
+
puts "Its here"
|
15
|
+
application.setup!
|
16
|
+
yield application
|
17
|
+
end
|
18
|
+
delegate :register, to: :application
|
19
|
+
end
|
20
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dry_model
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1.pre
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Kamal Ejaz
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-05-23 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rails
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.2'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5.0'
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.2'
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5.0'
|
33
|
+
description: micro library to dry models
|
34
|
+
email:
|
35
|
+
- a2ninek@yahoo.com
|
36
|
+
executables: []
|
37
|
+
extensions: []
|
38
|
+
extra_rdoc_files: []
|
39
|
+
files:
|
40
|
+
- ".ruby-gemset"
|
41
|
+
- ".ruby-version"
|
42
|
+
- dry_model.gemspec
|
43
|
+
- lib/dry_model.rb
|
44
|
+
- lib/dry_model/application.rb
|
45
|
+
- lib/dry_model/helpers/settings.rb
|
46
|
+
- lib/dry_model/shared/methods.rb
|
47
|
+
- lib/dry_model/version.rb
|
48
|
+
homepage: https://github.com/victorcreed/dry_model
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 1.9.3
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">"
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.3.1
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.5.1
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: micro library to dry models
|
72
|
+
test_files: []
|