brick 1.0.103 → 1.0.104
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 +4 -4
- data/lib/brick/extensions.rb +19 -4
- data/lib/brick/frameworks/rails/engine.rb +31 -10
- data/lib/brick/frameworks/rails/form_tags.rb +87 -76
- data/lib/brick/version_number.rb +1 -1
- data/lib/generators/brick/install_generator.rb +6 -4
- metadata +2 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6d30161a8558282149a49e7eafbd43bb175ce95574178c65a75323eaacf96422
|
4
|
+
data.tar.gz: 6d56c5e77c2a0d120bc8e878bde9d33fdfa7d58bed690a21fea176d5d6b55d50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 14bfffec6fd768d4b3abff2b3ceaeb2a2dca29b167edd64c2e57a63c72eaa70bf46fc8056af25fca86812bfac63d3b793bdeaf7f13a8c2ba7834ac9e65f1fb16
|
7
|
+
data.tar.gz: 97f7c94051bb068c4d8bdb5e847e53576c8ebbe18d5c4c93e12d52566008ac612bb40f7088ba81fea21337a3c13c29f366fb993b77f2f88f9fbddea4ffb95982
|
data/lib/brick/extensions.rb
CHANGED
@@ -257,11 +257,11 @@ module ActiveRecord
|
|
257
257
|
assoc_html_name ? "#{assoc_name}-#{link}".html_safe : link
|
258
258
|
end
|
259
259
|
|
260
|
-
def self._brick_index(mode = nil)
|
260
|
+
def self._brick_index(mode = nil, separator = '_')
|
261
261
|
tbl_parts = ((mode == :singular) ? table_name.singularize : table_name).split('.')
|
262
262
|
tbl_parts.shift if ::Brick.apartment_multitenant && tbl_parts.length > 1 && tbl_parts.first == ::Brick.apartment_default_tenant
|
263
263
|
tbl_parts.unshift(::Brick.config.path_prefix) if ::Brick.config.path_prefix
|
264
|
-
index = tbl_parts.map(&:underscore).join(
|
264
|
+
index = tbl_parts.map(&:underscore).join(separator)
|
265
265
|
# Rails applies an _index suffix to that route when the resource name is singular
|
266
266
|
index << '_index' if mode != :singular && index == index.singularize
|
267
267
|
index
|
@@ -396,6 +396,8 @@ module ActiveRecord
|
|
396
396
|
end
|
397
397
|
|
398
398
|
class Relation
|
399
|
+
attr_accessor :_brick_page_num
|
400
|
+
|
399
401
|
# Links from ActiveRecord association pathing names over to real table correlation names
|
400
402
|
# that get chosen when the AREL AST tree is walked.
|
401
403
|
def brick_links
|
@@ -785,8 +787,21 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
|
|
785
787
|
end
|
786
788
|
self.order_values |= final_order_by # Same as: order!(*final_order_by)
|
787
789
|
end
|
788
|
-
|
789
|
-
|
790
|
+
if (page = params['_brick_page']&.to_i)
|
791
|
+
page = 1 if page < 1
|
792
|
+
limit = params['_brick_page_size'] || 1000
|
793
|
+
offset = (page - 1) * limit.to_i
|
794
|
+
else
|
795
|
+
offset = params['_brick_offset']
|
796
|
+
limit = params['_brick_limit']
|
797
|
+
end
|
798
|
+
if offset.is_a?(Numeric) || offset&.present?
|
799
|
+
offset = offset.to_i
|
800
|
+
self.offset_value = offset unless offset == 0
|
801
|
+
@_brick_page_num = (offset / limit.to_i) + 1 if limit&.!= 0 && (offset % limit.to_i) == 0
|
802
|
+
end
|
803
|
+
# By default just 1000 rows (Like doing: limit!(1000) but this way is compatible with AR <= 4.2)
|
804
|
+
self.limit_value = limit&.to_i || 1000 unless limit.is_a?(String) && limit.empty?
|
790
805
|
wheres unless wheres.empty? # Return the specific parameters that we did use
|
791
806
|
end
|
792
807
|
|
@@ -228,8 +228,8 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
228
228
|
# When available, add a clickable brick icon to go to the Brick version of the page
|
229
229
|
PanelComponent.class_exec do
|
230
230
|
alias _brick_init initialize
|
231
|
-
def initialize(*args)
|
232
|
-
_brick_init(*args)
|
231
|
+
def initialize(*args, **kwargs)
|
232
|
+
_brick_init(*args, **kwargs)
|
233
233
|
@name = BrickTitle.new(@name, self)
|
234
234
|
end
|
235
235
|
end
|
@@ -263,6 +263,16 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
263
263
|
_brick_resource_view_path
|
264
264
|
end
|
265
265
|
end
|
266
|
+
|
267
|
+
module Concerns::HasFields
|
268
|
+
class_methods do
|
269
|
+
alias _brick_field field
|
270
|
+
def field(name, *args, **kwargs, &block)
|
271
|
+
kwargs.merge!(args.pop) if args.last.is_a?(Hash)
|
272
|
+
_brick_field(name, **kwargs, &block)
|
273
|
+
end
|
274
|
+
end
|
275
|
+
end
|
266
276
|
end # module Avo
|
267
277
|
|
268
278
|
# Steer any Avo-related controller/action based URL lookups to the Avo RouteSet
|
@@ -454,6 +464,12 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
454
464
|
table_options << "<option value=\"#{prefix}brick_orphans\">(Orphans)</option>".html_safe if is_orphans
|
455
465
|
table_options << "<option value=\"#{prefix}brick_orphans\">(Crosstab)</option>".html_safe if is_crosstab
|
456
466
|
css = +"<style>
|
467
|
+
#titleBox {
|
468
|
+
position: sticky;
|
469
|
+
display: inline-block;
|
470
|
+
left: 0;
|
471
|
+
}
|
472
|
+
|
457
473
|
h1, h3 {
|
458
474
|
margin-bottom: 0;
|
459
475
|
}
|
@@ -465,7 +481,6 @@ h1, h3 {
|
|
465
481
|
cursor: pointer;
|
466
482
|
}
|
467
483
|
#mermaidErd {
|
468
|
-
position: relative;
|
469
484
|
display: none;
|
470
485
|
}
|
471
486
|
#mermaidErd .exclude {
|
@@ -1112,13 +1127,16 @@ erDiagram
|
|
1112
1127
|
%></title>
|
1113
1128
|
</head>
|
1114
1129
|
<body>
|
1130
|
+
<div id=\"titleBox\">
|
1115
1131
|
<p style=\"color: green\"><%= notice %></p>#{"
|
1116
1132
|
#{schema_options}" if schema_options}
|
1117
1133
|
<select id=\"tbl\">#{table_options}</select>
|
1118
1134
|
<table id=\"resourceName\"><tr>
|
1119
|
-
<td><h1><%=
|
1135
|
+
<td><h1><%= td_count = 2
|
1136
|
+
model.name %></h1></td>
|
1120
1137
|
<td id=\"imgErd\" title=\"Show ERD\"></td>
|
1121
|
-
<% if Object.const_defined?('Avo') && ::Avo.respond_to?(:railtie_namespace)
|
1138
|
+
<% if Object.const_defined?('Avo') && ::Avo.respond_to?(:railtie_namespace)
|
1139
|
+
td_count += 1 %>
|
1122
1140
|
<td><%= link_to_brick(
|
1123
1141
|
avo_svg,
|
1124
1142
|
{ index_proc: Proc.new do |avo_model|
|
@@ -1127,7 +1145,9 @@ erDiagram
|
|
1127
1145
|
title: \"#\{model.name} in Avo\" }
|
1128
1146
|
) %></td>
|
1129
1147
|
<% end %>
|
1130
|
-
</tr
|
1148
|
+
</tr><%= if (page_num = @#{table_name}._brick_page_num)
|
1149
|
+
\"<tr><td colspan=\\\"#\{td_count}\\\">Page #\{page_num}</td></tr>\".html_safe
|
1150
|
+
end %></table>#{template_link}<%
|
1131
1151
|
if description.present? %><%=
|
1132
1152
|
description %><br><%
|
1133
1153
|
end
|
@@ -1162,6 +1182,7 @@ erDiagram
|
|
1162
1182
|
});
|
1163
1183
|
</script>
|
1164
1184
|
<% end %>
|
1185
|
+
</div>
|
1165
1186
|
#{erd_markup}
|
1166
1187
|
|
1167
1188
|
<%= # Consider getting the name from the association -- hm.first.name -- if a more \"friendly\" alias should be used for a screwy table name
|
@@ -1327,7 +1348,7 @@ end
|
|
1327
1348
|
options[:url] = send(\"#\{#{model_name}._brick_index(:singular)}_path\".to_sym, obj) if ::Brick.config.path_prefix
|
1328
1349
|
%>
|
1329
1350
|
<br><br>
|
1330
|
-
|
1351
|
+
<%= form_for(obj.becomes(#{model_name}), options) do |f| %>
|
1331
1352
|
<table class=\"shadow\">
|
1332
1353
|
<% has_fields = false
|
1333
1354
|
@#{obj_name}.attributes.each do |k, val|
|
@@ -1432,7 +1453,7 @@ end
|
|
1432
1453
|
is_revert = false %>
|
1433
1454
|
<% else %>
|
1434
1455
|
<%= is_revert = false
|
1435
|
-
display_value(col_type, val) %>
|
1456
|
+
display_value(col_type, val).html_safe %>
|
1436
1457
|
<% end
|
1437
1458
|
end
|
1438
1459
|
if is_revert
|
@@ -1449,7 +1470,7 @@ end
|
|
1449
1470
|
<tr><td colspan=\"2\">(No displayable fields)</td></tr>
|
1450
1471
|
<% end %>
|
1451
1472
|
</table>
|
1452
|
-
<%
|
1473
|
+
<% end %>
|
1453
1474
|
|
1454
1475
|
#{unless args.first == 'new'
|
1455
1476
|
# Was: confirm_are_you_sure = ActionView.version < ::Gem::Version.new('7.0') ? "data: { confirm: 'Delete #\{model_name} -- Are you sure?' }" : "form: { data: { turbo_confirm: 'Delete #\{model_name} -- Are you sure?' } }"
|
@@ -1538,7 +1559,7 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
|
|
1538
1559
|
if (imgErd) imgErd.addEventListener(\"click\", showErd);
|
1539
1560
|
function showErd() {
|
1540
1561
|
imgErd.style.display = \"none\";
|
1541
|
-
mermaidErd.style.display = \"
|
1562
|
+
mermaidErd.style.display = \"block\";
|
1542
1563
|
if (mermaidCode) return; // Cut it short if we've already rendered the diagram
|
1543
1564
|
|
1544
1565
|
mermaidCode = document.createElement(\"SCRIPT\");
|
@@ -56,85 +56,85 @@ module Brick::Rails::FormTags
|
|
56
56
|
end
|
57
57
|
out << "</tr></thead>
|
58
58
|
<tbody>"
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
else
|
102
|
-
hm_klass = (col = cols[col_name])[1]
|
103
|
-
if col[2] == 'HO'
|
104
|
-
descrips = bt_descrip[col_name.to_sym][hm_klass]
|
105
|
-
if (ho_id = (ho_id_col = descrips.last).map { |id_col| obj.send(id_col.to_sym) })&.first
|
106
|
-
ho_txt = hm_klass.brick_descrip(obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, ho_id_col)
|
107
|
-
out << link_to(ho_txt, send("#{hm_klass.base_class._brick_index(:singular)}_path".to_sym, ho_id))
|
108
|
-
end
|
59
|
+
# %%% Have once gotten this error with MSSQL referring to http://localhost:3000/warehouse/cold_room_temperatures__archive
|
60
|
+
# ActiveRecord::StatementTimeout in Warehouse::ColdRoomTemperatures_Archive#index
|
61
|
+
# TinyTds::Error: Adaptive Server connection timed out
|
62
|
+
# (After restarting the server it worked fine again.)
|
63
|
+
relation.each do |obj|
|
64
|
+
out << "<tr>\n"
|
65
|
+
out << "<td>#{link_to('⇛', send("#{klass._brick_index(:singular)}_path".to_sym,
|
66
|
+
pk.map { |pk_part| obj.send(pk_part.to_sym) }), { class: 'big-arrow' })}</td>\n" if pk.present?
|
67
|
+
sequence.each do |col_name|
|
68
|
+
val = obj.attributes[col_name]
|
69
|
+
out << '<td'
|
70
|
+
out << ' class=\"dimmed\"' unless cols.key?(col_name) || (cust_col = cust_cols[col_name]) ||
|
71
|
+
(col_name.is_a?(Symbol) && bts.key?(col_name)) # HOT
|
72
|
+
out << '>'
|
73
|
+
if (bt = bts[col_name])
|
74
|
+
if bt[2] # Polymorphic?
|
75
|
+
bt_class = obj.send("#{bt.first}_type")
|
76
|
+
base_class_underscored = (::Brick.existing_stis[bt_class] || bt_class).constantize.base_class._brick_index(:singular)
|
77
|
+
poly_id = obj.send("#{bt.first}_id")
|
78
|
+
out << link_to("#{bt_class} ##{poly_id}", send("#{base_class_underscored}_path".to_sym, poly_id)) if poly_id
|
79
|
+
else # BT or HOT
|
80
|
+
bt_class = bt[1].first.first
|
81
|
+
descrips = bt_descrip[bt.first][bt_class]
|
82
|
+
bt_id_col = if descrips.nil?
|
83
|
+
puts "Caught it in the act for obj / #{col_name}!"
|
84
|
+
elsif descrips.length == 1
|
85
|
+
[obj.class.reflect_on_association(bt.first)&.foreign_key]
|
86
|
+
else
|
87
|
+
descrips.last
|
88
|
+
end
|
89
|
+
bt_txt = bt_class.brick_descrip(
|
90
|
+
# 0..62 because Postgres column names are limited to 63 characters
|
91
|
+
obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, bt_id_col
|
92
|
+
)
|
93
|
+
bt_txt = display_binary(bt_txt).html_safe if bt_txt&.encoding&.name == 'ASCII-8BIT'
|
94
|
+
bt_txt ||= "<span class=\"orphan\"><< Orphaned ID: #{val} >></span>" if val
|
95
|
+
bt_id = bt_id_col&.map { |id_col| obj.respond_to?(id_sym = id_col.to_sym) ? obj.send(id_sym) : id_col }
|
96
|
+
out << (bt_id&.first ? link_to(bt_txt, send("#{bt_class.base_class._brick_index(:singular)}_path".to_sym, bt_id)) : bt_txt || '')
|
97
|
+
end
|
98
|
+
elsif (hms_col = hms_cols[col_name])
|
99
|
+
if hms_col.length == 1
|
100
|
+
out << hms_col.first
|
109
101
|
else
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
102
|
+
hm_klass = (col = cols[col_name])[1]
|
103
|
+
if col[2] == 'HO'
|
104
|
+
descrips = bt_descrip[col_name.to_sym][hm_klass]
|
105
|
+
if (ho_id = (ho_id_col = descrips.last).map { |id_col| obj.send(id_col.to_sym) })&.first
|
106
|
+
ho_txt = hm_klass.brick_descrip(obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, ho_id_col)
|
107
|
+
out << link_to(ho_txt, send("#{hm_klass.base_class._brick_index(:singular)}_path".to_sym, ho_id))
|
108
|
+
end
|
109
|
+
else
|
110
|
+
if (ct = obj.send(hms_col[1].to_sym)&.to_i)&.positive?
|
111
|
+
out << "#{link_to("#{ct || 'View'} #{hms_col.first}",
|
112
|
+
send("#{hm_klass._brick_index}_path".to_sym,
|
113
|
+
hms_col[2].each_with_object({}) { |v, s| s[v.first] = v.last.is_a?(String) ? v.last : obj.send(v.last) })
|
114
|
+
)}\n"
|
115
|
+
end
|
115
116
|
end
|
116
117
|
end
|
118
|
+
elsif (col = cols[col_name]).is_a?(ActiveRecord::ConnectionAdapters::Column)
|
119
|
+
binding.pry if col.is_a?(Array)
|
120
|
+
col_type = col&.sql_type == 'geography' ? col.sql_type : col&.type
|
121
|
+
out << display_value(col_type || col&.sql_type, val).to_s
|
122
|
+
elsif cust_col
|
123
|
+
data = cust_col.first.map { |cc_part| obj.send(cc_part.last) }
|
124
|
+
cust_txt = klass.brick_descrip(cust_col[-2], data)
|
125
|
+
if (link_id = obj.send(cust_col.last[1]) if cust_col.last)
|
126
|
+
out << link_to(cust_txt, send("#{cust_col.last.first._brick_index(:singular)}_path", link_id))
|
127
|
+
else
|
128
|
+
out << (cust_txt || '')
|
129
|
+
end
|
130
|
+
else # Bad column name!
|
131
|
+
out << '?'
|
117
132
|
end
|
118
|
-
|
119
|
-
binding.pry if col.is_a?(Array)
|
120
|
-
col_type = col&.sql_type == 'geography' ? col.sql_type : col&.type
|
121
|
-
out << display_value(col_type || col&.sql_type, val).to_s
|
122
|
-
elsif cust_col
|
123
|
-
data = cust_col.first.map { |cc_part| obj.send(cc_part.last) }
|
124
|
-
cust_txt = klass.brick_descrip(cust_col[-2], data)
|
125
|
-
if (link_id = obj.send(cust_col.last[1]) if cust_col.last)
|
126
|
-
out << link_to(cust_txt, send("#{cust_col.last.first._brick_index(:singular)}_path", link_id))
|
127
|
-
else
|
128
|
-
out << (cust_txt || '')
|
129
|
-
end
|
130
|
-
else # Bad column name!
|
131
|
-
out << '?'
|
133
|
+
out << '</td>'
|
132
134
|
end
|
133
|
-
out << '</
|
135
|
+
out << '</tr>'
|
134
136
|
end
|
135
|
-
|
136
|
-
end
|
137
|
-
out << " </tbody>
|
137
|
+
out << " </tbody>
|
138
138
|
</table>
|
139
139
|
"
|
140
140
|
out.html_safe
|
@@ -143,6 +143,16 @@ module Brick::Rails::FormTags
|
|
143
143
|
def link_to_brick(*args, **kwargs)
|
144
144
|
return unless ::Brick.config.mode == :on
|
145
145
|
|
146
|
+
kwargs.merge!(args.pop) if args.last.is_a?(Hash)
|
147
|
+
# Avoid infinite recursion
|
148
|
+
if (visited = kwargs.fetch(:visited, nil))
|
149
|
+
return if visited.key?(object_id)
|
150
|
+
|
151
|
+
kwargs[:visited][object_id] = nil
|
152
|
+
else
|
153
|
+
kwargs[:visited] = {}
|
154
|
+
end
|
155
|
+
|
146
156
|
text = ((args.first.is_a?(String) || args.first.is_a?(Proc)) && args.shift) || args[1]
|
147
157
|
text = text.call if text.is_a?(Proc)
|
148
158
|
klass_or_obj = ((args.first.is_a?(ActiveRecord::Relation) ||
|
@@ -192,13 +202,14 @@ module Brick::Rails::FormTags
|
|
192
202
|
app_routes = Rails.application.routes # In case we're operating in another engine, reference the application since Brick routes are placed there.
|
193
203
|
if (klass_or_obj&.is_a?(Class) && klass_or_obj < ActiveRecord::Base) ||
|
194
204
|
(klass_or_obj&.is_a?(ActiveRecord::Base) && klass_or_obj.new_record? && (klass_or_obj = klass_or_obj.class))
|
195
|
-
path = (proc = kwargs[:index_proc]) ? proc.call(klass_or_obj) : "#{app_routes.path_for(controller: klass_or_obj.base_class._brick_index, action: :index)}#{filter}"
|
205
|
+
path = (proc = kwargs[:index_proc]) ? proc.call(klass_or_obj) : "#{app_routes.path_for(controller: klass_or_obj.base_class._brick_index(nil, '/'), action: :index)}#{filter}"
|
196
206
|
lt_args = [text || "Index for #{klass_or_obj.name.pluralize}", path]
|
197
207
|
else
|
198
208
|
# If there are multiple incoming parameters then last one is probably the actual ID, and first few might be some nested tree of stuff leading up to it
|
199
|
-
path = (proc = kwargs[:show_proc]) ? proc.call(klass_or_obj) : "#{app_routes.path_for(controller: klass_or_obj.class.base_class._brick_index, action: :show, id: klass_or_obj)}#{filter}"
|
209
|
+
path = (proc = kwargs[:show_proc]) ? proc.call(klass_or_obj) : "#{app_routes.path_for(controller: klass_or_obj.class.base_class._brick_index(nil, '/'), action: :show, id: klass_or_obj)}#{filter}"
|
200
210
|
lt_args = [text || "Show this #{klass_or_obj.class.name}", path]
|
201
211
|
end
|
212
|
+
kwargs.delete(:visited)
|
202
213
|
link_to(*lt_args, **kwargs)
|
203
214
|
else
|
204
215
|
# puts "Warning: link_to_brick could not find a class for \"#{controller_path}\" -- consider setting @_brick_model within that controller."
|
@@ -215,7 +226,7 @@ module Brick::Rails::FormTags
|
|
215
226
|
if links.length == 1 # If there's only one match then use any text that was supplied
|
216
227
|
link_to_brick(text || links.first.last.join('/'), links.first.first, **kwargs)
|
217
228
|
else
|
218
|
-
links.
|
229
|
+
links.each_with_object([]) { |v, s| s << link if link = link_to_brick(v.join('/'), v, **kwargs) }.join(' ').html_safe
|
219
230
|
end
|
220
231
|
end
|
221
232
|
end # link_to_brick
|
data/lib/brick/version_number.rb
CHANGED
@@ -288,16 +288,18 @@ if ActiveRecord::Base.respond_to?(:brick_select)
|
|
288
288
|
|
289
289
|
# # POLYMORPHIC ASSOCIATIONS
|
290
290
|
|
291
|
-
# #
|
292
|
-
|
291
|
+
# # Polymorphic associations are set up by providing a model name and polymorphic association name#{poly}
|
292
|
+
|
293
|
+
# # For multi-tenant databases that use a separate schema for each tenant, a single representative database schema
|
294
|
+
# # can be analysed to determine the range of polymorphic classes that can be used for each association. Hopefully
|
295
|
+
# # the schema chosen is one loaded with existing data that is representative of all possible polymorphic
|
296
|
+
# # associations.
|
293
297
|
# Brick.schema_behavior = :namespaced
|
294
298
|
#{Brick.config.schema_behavior.present? ? " Brick.schema_behavior = { multitenant: { schema_to_analyse: #{
|
295
299
|
Brick.config.schema_behavior[:multitenant]&.fetch(:schema_to_analyse, nil).inspect}" :
|
296
300
|
" # Brick.schema_behavior = { multitenant: { schema_to_analyse: 'engineering'"
|
297
301
|
} } }
|
298
302
|
|
299
|
-
# # Polymorphic associations are set up by providing a model name and polymorphic association name#{poly}
|
300
|
-
|
301
303
|
# # DEFAULT ROOT ROUTE
|
302
304
|
|
303
305
|
# # If a default route is not supplied, Brick attempts to find the most \"central\" table and wires up the default
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.104
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -164,20 +164,6 @@ dependencies:
|
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 1.42.0
|
167
|
-
- !ruby/object:Gem::Dependency
|
168
|
-
name: mysql2
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
-
requirements:
|
171
|
-
- - "~>"
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0.5'
|
174
|
-
type: :development
|
175
|
-
prerelease: false
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
177
|
-
requirements:
|
178
|
-
- - "~>"
|
179
|
-
- !ruby/object:Gem::Version
|
180
|
-
version: '0.5'
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: pg
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|