effective_resources 1.8.38 → 1.9.3

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
  SHA256:
3
- metadata.gz: a0ef8a137a53e9e2c1aa64630dfb9e90b0ae9bf3e5da8bcbc3e2f184b3273906
4
- data.tar.gz: a467531f9b59542bdb1703b01ee8f5839019a1e540d7b0b35ecbe690a635ab11
3
+ metadata.gz: 598341ec405c5f865bd47dd20eb3ac0260243a753bebc3ebe6c113364be41c20
4
+ data.tar.gz: 17fdbbf3cd41afa8342b6443c646d7082c052706e3995c4a0a0279ed8e063ae9
5
5
  SHA512:
6
- metadata.gz: f2aa7368664b69915f1323908f096ced6228b98debdddc81afabca6cd6e73fcb5cb0a2e8e3fbf216a178448b4e038729836195fea5846f1b209f8b3cccd15210
7
- data.tar.gz: 6f3138d9e04b9bd1de179211e12b71b5b338ea8324fab434bee70d6c6fdb30a67cf70f4ad06a7b2ecc3b4d7c033c994c2c85de0971a34989014a31006fea501e
6
+ metadata.gz: f1b7daf92008549871a27f404f56f6c24554d49f5d8a33659fe5428af05544cc051b5824e682bce143ad459755b317d39866e2a770c916c0ca9e882d23a9349a
7
+ data.tar.gz: 4f1815a0e2f563687c78422623c20bef18143b33e01e2fa49d61681583233f8fb40884f5fba98261fb3c7b32dfb4d810f2ffab95d2f241b614ca24d50c1a6180
@@ -14,7 +14,7 @@ module Effective
14
14
  include Effective::Resources::Paths
15
15
  include Effective::Resources::Relation
16
16
  include Effective::Resources::Sql
17
-
17
+ include Effective::Resources::Tenants
18
18
 
19
19
  # In practice, this is initialized two ways
20
20
  # With a klass and a namespace from effective_datatables
@@ -1,3 +1,5 @@
1
+ # frozen_sting_literals: true
2
+
1
3
  module Effective
2
4
  module Resources
3
5
  module Forms
@@ -1,3 +1,5 @@
1
+ # frozen_sting_literals: true
2
+
1
3
  module Effective
2
4
  module Resources
3
5
  module Generator
@@ -26,6 +28,23 @@ module Effective
26
28
  Array(namespaces).map { |name| name.to_s.classify }.join('::') + '::' + class_name.gsub('::', '')
27
29
  end
28
30
 
31
+ # Tenants
32
+ def tenant_controller_path
33
+ (Tenant.module_name.downcase + '/' + controller_path) if tenant?
34
+ end
35
+
36
+ def tenant_namespaced_class_name
37
+ (Tenant.module_name + '::' + namespaced_class_name) if tenant?
38
+ end
39
+
40
+ def tenant_namespaced_module_name
41
+ (Tenant.module_name + '::' + namespaced_module_name) if tenant?
42
+ end
43
+
44
+ def tenant_class_name
45
+ (Tenant.module_name + '::' + class_name) if tenant?
46
+ end
47
+
29
48
  end
30
49
  end
31
50
  end
@@ -1,3 +1,5 @@
1
+ # frozen_sting_literals: true
2
+
1
3
  module Effective
2
4
  module Resources
3
5
  module Init
@@ -6,7 +8,10 @@ module Effective
6
8
 
7
9
  def _initialize_input(input, namespace: nil, relation: nil)
8
10
  @initialized_name = input
9
- @model_klass = (relation ? _klass_by_input(relation) : _klass_by_input(input))
11
+
12
+ # Sets the class but also namespaces
13
+ @model_klass = _klass_by_input(input)
14
+ @model_klass = _klass_by_input(relation) if relation.present?
10
15
 
11
16
  # Consider controller_name
12
17
  if @model_klass && input.kind_of?(String) && namespace.blank?
@@ -7,28 +7,11 @@ module Effective
7
7
  end
8
8
 
9
9
  def datatable_klass
10
- if defined?(EffectiveDatatables)
11
- "#{controller_path.classify.pluralize}Datatable".safe_constantize ||
12
- "#{controller_path.classify}Datatable".safe_constantize ||
13
- "#{namespaced_class_name.pluralize}Datatable".safe_constantize ||
14
- "#{namespaced_module_name.pluralize}Datatable".safe_constantize ||
15
- "#{namespaced_class_name.pluralize.gsub('::', '')}Datatable".safe_constantize ||
16
- "#{class_name.pluralize.camelize}Datatable".safe_constantize ||
17
- "#{class_name.pluralize.camelize.gsub('::', '')}Datatable".safe_constantize ||
18
- "#{name.pluralize.camelize}Datatable".safe_constantize ||
19
- "#{name.pluralize.camelize.gsub('::', '')}Datatable".safe_constantize ||
20
- "Effective::Datatables::#{namespaced_class_name.pluralize}".safe_constantize ||
21
- "Effective::Datatables::#{class_name.pluralize.camelize}".safe_constantize ||
22
- "Effective::Datatables::#{name.pluralize.camelize}".safe_constantize
23
- end
10
+ (find_tenant_datatable_klass || find_datatable_klass) if defined?(EffectiveDatatables)
24
11
  end
25
12
 
26
13
  def controller_klass
27
- "#{namespaced_class_name.pluralize}Controller".safe_constantize ||
28
- "#{class_name.pluralize.classify}Controller".safe_constantize ||
29
- "#{name.pluralize.classify}Controller".safe_constantize ||
30
- "#{initialized_name.to_s.classify.pluralize}Controller".safe_constantize ||
31
- "#{initialized_name.to_s.classify}Controller".safe_constantize
14
+ find_controller_klass
32
15
  end
33
16
 
34
17
  def active_record?
@@ -39,6 +22,44 @@ module Effective
39
22
  klass && klass.ancestors.include?(ActiveModel::Model)
40
23
  end
41
24
 
25
+ private
26
+
27
+ def find_datatable_klass
28
+ "::#{controller_path.classify.pluralize}Datatable".safe_constantize ||
29
+ "::#{controller_path.classify}Datatable".safe_constantize ||
30
+ "::#{namespaced_class_name.pluralize}Datatable".safe_constantize ||
31
+ "::#{namespaced_module_name.pluralize}Datatable".safe_constantize ||
32
+ "::#{namespaced_class_name.pluralize.gsub('::', '')}Datatable".safe_constantize ||
33
+ "::#{class_name.pluralize.camelize}Datatable".safe_constantize ||
34
+ "::#{class_name.pluralize.camelize.gsub('::', '')}Datatable".safe_constantize ||
35
+ "::#{name.pluralize.camelize}Datatable".safe_constantize ||
36
+ "::#{name.pluralize.camelize.gsub('::', '')}Datatable".safe_constantize ||
37
+ "::Effective::Datatables::#{namespaced_class_name.pluralize}".safe_constantize ||
38
+ "::Effective::Datatables::#{class_name.pluralize.camelize}".safe_constantize ||
39
+ "::Effective::Datatables::#{name.pluralize.camelize}".safe_constantize
40
+ end
41
+
42
+ def find_tenant_datatable_klass
43
+ return unless tenant?
44
+
45
+ "::#{tenant_controller_path.classify.pluralize}Datatable".safe_constantize ||
46
+ "::#{tenant_controller_path.classify}Datatable".safe_constantize ||
47
+ "::#{tenant_namespaced_class_name.pluralize}Datatable".safe_constantize ||
48
+
49
+ "::#{tenant_namespaced_module_name.pluralize}Datatable".safe_constantize ||
50
+ "::#{tenant_namespaced_class_name.pluralize.gsub('::', '')}Datatable".safe_constantize ||
51
+ "::#{tenant_class_name.pluralize.camelize}Datatable".safe_constantize ||
52
+ "::#{tenant_class_name.pluralize.camelize.gsub('::', '')}Datatable".safe_constantize
53
+ end
54
+
55
+ def find_controller_klass
56
+ "#{namespaced_class_name.pluralize}Controller".safe_constantize ||
57
+ "#{class_name.pluralize.classify}Controller".safe_constantize ||
58
+ "#{name.pluralize.classify}Controller".safe_constantize ||
59
+ "#{initialized_name.to_s.classify.pluralize}Controller".safe_constantize ||
60
+ "#{initialized_name.to_s.classify}Controller".safe_constantize
61
+ end
62
+
42
63
  end
43
64
  end
44
65
  end
@@ -65,16 +65,6 @@ module Effective
65
65
  def human_plural_name
66
66
  name.pluralize.gsub('::', ' ').underscore.gsub('_', ' ')
67
67
  end
68
-
69
- def tenant
70
- return nil unless defined?(Tenant)
71
- return nil unless klass.present?
72
- return nil unless class_name.include?('::')
73
-
74
- name = class_name.split('::').first.downcase.to_sym
75
- name if Rails.application.config.tenants[name].present?
76
- end
77
-
78
68
  end
79
69
  end
80
70
  end
@@ -5,8 +5,7 @@ module Effective
5
5
  module Paths
6
6
 
7
7
  def tenant_path
8
- return unless tenant.present?
9
- Tenant.engine_path(tenant).sub("#{Rails.root}/", '')
8
+ Tenant.engine_path(tenant).sub("#{Rails.root}/", '') if tenant?
10
9
  end
11
10
 
12
11
  def model_file
@@ -0,0 +1,20 @@
1
+ module Effective
2
+ module Resources
3
+ module Tenants
4
+
5
+ def tenant?
6
+ defined?(::Tenant)
7
+ end
8
+
9
+ def tenant
10
+ return unless tenant?
11
+ return nil unless klass.present?
12
+ return nil unless class_name.include?('::')
13
+
14
+ name = class_name.split('::').first.downcase.to_sym
15
+ name if Rails.application.config.tenants[name].present?
16
+ end
17
+
18
+ end
19
+ end
20
+ end
@@ -15,16 +15,16 @@ module EffectiveGem
15
15
  module ClassMethods
16
16
  def config(namespace = nil)
17
17
  namespace ||= Tenant.current if defined?(Tenant)
18
- @config.dig(namespace) || @config
18
+ @config.dig(namespace) || @config.dig(:effective)
19
19
  end
20
20
 
21
21
  def setup(namespace = nil, &block)
22
22
  @config ||= ActiveSupport::OrderedOptions.new
23
+
23
24
  namespace ||= Tenant.current if defined?(Tenant)
25
+ namespace ||= :effective
24
26
 
25
- if namespace
26
- @config[namespace] ||= ActiveSupport::OrderedOptions.new
27
- end
27
+ @config[namespace] ||= ActiveSupport::OrderedOptions.new
28
28
 
29
29
  yield(config(namespace))
30
30
 
@@ -1,3 +1,3 @@
1
1
  module EffectiveResources
2
- VERSION = '1.8.38'.freeze
2
+ VERSION = '1.9.3'.freeze
3
3
  end
@@ -33,6 +33,24 @@ module EffectiveResources
33
33
 
34
34
  # Utilities
35
35
 
36
+ # This looks up the best class give the name
37
+ # If the Tenant is present, use those classes first.
38
+ def self.best(name)
39
+ klass = if defined?(Tenant)
40
+ ('::' + Tenant.module_name + '::' + name).safe_constantize ||
41
+ ('::' + Tenant.module_name + '::Effective::' + name).safe_constantize
42
+ end
43
+
44
+ klass ||= begin
45
+ ('::' + name).safe_constantize ||
46
+ ('::Effective::' + name).safe_constantize
47
+ end
48
+
49
+ raise("unable to find best #{name}") if klass.blank?
50
+
51
+ klass
52
+ end
53
+
36
54
  def self.truthy?(value)
37
55
  if defined?(::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES) # Rails <5
38
56
  ::ActiveRecord::ConnectionAdapters::Column::TRUE_VALUES.include?(value)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: effective_resources
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.38
4
+ version: 1.9.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Code and Effect
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-22 00:00:00.000000000 Z
11
+ date: 2021-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -184,6 +184,7 @@ files:
184
184
  - app/models/effective/resources/paths.rb
185
185
  - app/models/effective/resources/relation.rb
186
186
  - app/models/effective/resources/sql.rb
187
+ - app/models/effective/resources/tenants.rb
187
188
  - app/views/application/_flash.html.haml
188
189
  - app/views/application/create.js.erb
189
190
  - app/views/application/destroy.js.erb