local_model 0.1.2 → 0.1.3

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
  SHA256:
3
- metadata.gz: 9a39edf5e4b5b1dc71f82ff08b04f01c57aa284a0bbb92a93194d70268c803c2
4
- data.tar.gz: 237feb8dc6a943b6aacecdc0ca6774c8b01e1edd7d6e055401c7a24de784ada3
3
+ metadata.gz: a86bbe76f369c6f1b0a3984edbb58dcbc070dee5211afd9e50f22b1deb72f8bf
4
+ data.tar.gz: cdda97bc5fc77dd8b54a628b49f5a7724b01a1f12b37dcb3b570971689b99e10
5
5
  SHA512:
6
- metadata.gz: 962ee92001bc3d6a0a0fbd1b9353f60cc957fe44456f3a62d2b5dcde9e0c88e413b585bb224df64753720ef4956d666c09f26a99cdd2f00fa53c24fc446d9d35
7
- data.tar.gz: 8eac9cb208772976ccabe5efae4345a924662584d2c027e446c303e0a4a7e687546cd73b9507f1c7cdad123ac9b81e5e1a0760f0ecbf19e40990d8c9c267ac31
6
+ metadata.gz: fe2ca903606f84595f7decd590d994a4c48885b7c0bd7a4a86d67603cda157b3ebede305e30368abdaa5db694bd688a6ecf08aacd351818e2f7ebfe02bb9f8cf
7
+ data.tar.gz: fa5d4d01e42968f74e0323c6173e95dc21e3a58d9d7e975740e7f082597c7d6728eacb78e84178298039dbe175448cd6cd4672c9a974a3f5124c762ba955ebfd
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- local_model (0.1.1)
4
+ local_model (0.1.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
data/lib/local_model.rb CHANGED
@@ -1,6 +1,6 @@
1
- require 'pry'
2
1
  require_relative "./local_model/version"
3
2
  require 'csv'
3
+ require_relative './local_model/sandbox'
4
4
  require_relative './local_model/adapters/boolean_adapter'
5
5
  require_relative './local_model/adapters/datetime_adapter'
6
6
  require_relative './local_model/adapters/float_adapter'
@@ -16,6 +16,21 @@ module LocalModel
16
16
  class Error < StandardError; end
17
17
 
18
18
  @@path = "#{Dir.pwd}/tmp"
19
+ @@namespace = nil
20
+
21
+ def self.namespaced?
22
+ !!@@namespace
23
+ end
24
+
25
+ def self.namespace
26
+ if @@namespace.nil?
27
+ nil
28
+ elsif @@namespace == :default || @@namespace == "default"
29
+ "LocalModel::Sbx"
30
+ else
31
+ @@namespace
32
+ end
33
+ end
19
34
 
20
35
  def self.path
21
36
  @@path
@@ -27,6 +42,7 @@ module LocalModel
27
42
  yield(configuration)
28
43
  end
29
44
  @@path = configuration.path
45
+ @@namespace = configuration.namespace
30
46
  Dir.mkdir(configuration.path) unless Dir.exist?(configuration.path)
31
47
  if configuration.cleanup_on_start
32
48
  Dir.foreach do |f|
@@ -38,11 +54,12 @@ module LocalModel
38
54
 
39
55
  class Configuration
40
56
 
41
- attr_accessor :path, :cleanup_on_start
57
+ attr_accessor :path, :cleanup_on_start, :namespace
42
58
 
43
59
  def initialize
44
60
  @path = "#{Dir.pwd}/tmp"
45
61
  @cleanup_on_start = false
62
+ @namespace = nil
46
63
  end
47
64
  end
48
65
  end
@@ -6,11 +6,13 @@ class LocalModel::Model
6
6
  end
7
7
 
8
8
  def self.belongs_to(association)
9
+ association_class_name = LocalModel::Functions.snake_to_camel(association)
10
+ association_class_name[0] = association_class_name[0].upcase
11
+ association_class_name = namespace_classname(association_class_name)
12
+ association_class = Object.const_get(association_class_name)
13
+
9
14
  define_method association do
10
15
  id = self.send("#{association}_id")
11
- association_class_name = LocalModel::Functions.snake_to_camel(association)
12
- association_class_name[0] = association_class_name[0].upcase
13
- association_class = Object.const_get(association_class_name)
14
16
  association_class.find(id)
15
17
  end
16
18
 
@@ -21,12 +23,12 @@ class LocalModel::Model
21
23
 
22
24
  def self.has_many(association, through: nil, class_name: nil, foreign_key: nil)
23
25
  if class_name.nil?
24
- association_classname = get_classname_from_association(association)
26
+ association_classname = namespace_classname(get_classname_from_association(association))
25
27
  else
26
- association_classname = class_name
28
+ association_classname = namespace_classname(class_name)
27
29
  end
28
30
 
29
- current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(self.to_s)}_id"
31
+ current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(denamespace_classname(self))}_id"
30
32
  belongs_to_id_sym = current_class_id_methodname.to_sym
31
33
 
32
34
  if through.nil?
@@ -35,7 +37,7 @@ class LocalModel::Model
35
37
  association_class.where(belongs_to_id_sym => self.id)
36
38
  end
37
39
  else
38
- through_classname = get_classname_from_association(through)
40
+ through_classname = namespace_classname(get_classname_from_association(through))
39
41
  define_method association do
40
42
  through_class = Object.const_get(through_classname)
41
43
  through_class.where(belongs_to_id_sym => self.id).map{|obj| obj.send(LocalModel::Functions.singularize(association))}
@@ -47,10 +49,11 @@ class LocalModel::Model
47
49
  if class_name.nil?
48
50
  association_classname = LocalModel::Functions.snake_to_camel(association)
49
51
  association_classname[0] = association_classname[0].upcase
52
+ association_classname = namespace_classname(association_classname)
50
53
  else
51
54
  association_classname = class_name
52
55
  end
53
- current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(self.to_s)}_id"
56
+ current_class_id_methodname = foreign_key || "#{LocalModel::Functions.camel_to_snake(denamespace_classname(self))}_id"
54
57
  belongs_to_id_sym = current_class_id_methodname.to_sym
55
58
 
56
59
  define_method association do
@@ -71,6 +74,19 @@ class LocalModel::Model
71
74
  end
72
75
  private_class_method :get_classname_from_association
73
76
 
77
+ def self.denamespace_classname(classname)
78
+ return classname.to_s.split("::").last
79
+ end
80
+ private_class_method :denamespace_classname
81
+
82
+ def self.namespace_classname(classname)
83
+ if LocalModel.namespaced?
84
+ "#{LocalModel.namespace}::#{classname}"
85
+ else
86
+ classname
87
+ end
88
+ end
89
+ private_class_method :namespace_classname
74
90
 
75
91
  def self.storage_path
76
92
  slash = LocalModel.path == '/' ? '' : '/'
@@ -0,0 +1,4 @@
1
+ module LocalModel::Sbx
2
+
3
+
4
+ end
@@ -1,3 +1,3 @@
1
1
  module LocalModel
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: local_model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Shute
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-11 00:00:00.000000000 Z
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,6 +82,7 @@ files:
82
82
  - lib/local_model/helpers/functions.rb
83
83
  - lib/local_model/helpers/pluralized_words.rb
84
84
  - lib/local_model/model.rb
85
+ - lib/local_model/sandbox.rb
85
86
  - lib/local_model/version.rb
86
87
  - local_model.gemspec
87
88
  homepage: https://github.com/micahshute/local_model