brick 1.0.223 → 1.0.224
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/brick/extensions.rb +9 -7
- data/lib/brick/rails/engine.rb +28 -10
- data/lib/brick/rails/form_builder.rb +6 -2
- data/lib/brick/rails.rb +1 -1
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 571fea9051ed0e8037ba73f0d3010f22f29b417b6def200fcf63894dced9289e
|
4
|
+
data.tar.gz: 6bace7cf19e59ca209a9b6395a7fce3324e4ca77bf13bd8a21bf7b3f0fe6604a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ed1f0d0711c39d1174cf3306dd0c698ccc832478c32432eb84ce5a01a704da9fb24e9fda05d2986fe822fe21876aa34de4a0900f5cdacb1255446a74c07b2b9
|
7
|
+
data.tar.gz: 3b77a0656498452157fe25fb3c8c894acb8ee17fad51e6e203123d31d9d108fe59e8a7b1f265e4e168ab82c2d85cf461983079f7e753075d54ac6366d3e6d5e5
|
data/lib/brick/extensions.rb
CHANGED
@@ -1658,7 +1658,7 @@ class Object
|
|
1658
1658
|
end
|
1659
1659
|
plural_class_name = ActiveSupport::Inflector.pluralize(model_name = class_name)
|
1660
1660
|
# gsub is so that if it's namespaced then we turn the first part into what would be a schema name
|
1661
|
-
singular_table_name = ::Brick.table_name_lookup
|
1661
|
+
singular_table_name = ::Brick.table_name_lookup&.fetch(model_name, nil) || ActiveSupport::Inflector.underscore(model_name).gsub('/', '.')
|
1662
1662
|
|
1663
1663
|
if base_model
|
1664
1664
|
table_name = base_model.table_name
|
@@ -2518,10 +2518,11 @@ class Object
|
|
2518
2518
|
code << " def show\n"
|
2519
2519
|
code << " #{find_by_name = "find_#{singular_table_name}"}\n"
|
2520
2520
|
code << " end\n"
|
2521
|
+
find_obj = "find_#{singular_table_name}"
|
2521
2522
|
self.define_method :show do
|
2522
2523
|
_schema, @_is_show_schema_list = ::Brick.set_db_schema(params)
|
2523
2524
|
_, singular_table_name = model.real_singular(params)
|
2524
|
-
instance_variable_set("@#{singular_table_name}".to_sym, find_obj)
|
2525
|
+
instance_variable_set("@#{singular_table_name}".to_sym, send(find_obj))
|
2525
2526
|
add_csp_hash("'unsafe-inline'")
|
2526
2527
|
end
|
2527
2528
|
end
|
@@ -2614,7 +2615,7 @@ class Object
|
|
2614
2615
|
self.define_method :edit do
|
2615
2616
|
_schema, @_is_show_schema_list = ::Brick.set_db_schema(params)
|
2616
2617
|
_, singular_table_name = model.real_singular(params)
|
2617
|
-
instance_variable_set("@#{singular_table_name}".to_sym, find_obj)
|
2618
|
+
instance_variable_set("@#{singular_table_name}".to_sym, send(find_obj))
|
2618
2619
|
add_csp_hash
|
2619
2620
|
end
|
2620
2621
|
|
@@ -2642,7 +2643,7 @@ class Object
|
|
2642
2643
|
end
|
2643
2644
|
|
2644
2645
|
_, singular_table_name = model.real_singular(params)
|
2645
|
-
instance_variable_set("@#{singular_table_name}".to_sym, (obj = find_obj))
|
2646
|
+
instance_variable_set("@#{singular_table_name}".to_sym, (obj = send(find_obj)))
|
2646
2647
|
upd_params = send(params_name_sym)
|
2647
2648
|
json_overrides = ::Brick.config.json_columns&.fetch(table_name, nil)
|
2648
2649
|
if model.respond_to?(:devise_modules)
|
@@ -2688,7 +2689,7 @@ class Object
|
|
2688
2689
|
code << " end\n"
|
2689
2690
|
self.define_method :destroy do
|
2690
2691
|
::Brick.set_db_schema(params)
|
2691
|
-
if (obj = find_obj).send(:destroy)
|
2692
|
+
if (obj = send(find_obj)).send(:destroy)
|
2692
2693
|
redirect_to send("#{model._brick_index}_path".to_sym)
|
2693
2694
|
else
|
2694
2695
|
redirect_to send("#{model._brick_index(:singular)}_path".to_sym, obj)
|
@@ -2699,11 +2700,11 @@ class Object
|
|
2699
2700
|
code << "private\n" if pk.present? || is_need_params
|
2700
2701
|
|
2701
2702
|
if pk.present?
|
2702
|
-
code << " def
|
2703
|
+
code << " def #{find_obj}
|
2703
2704
|
id = params[:id]&.split(/[\\/,_]/)
|
2704
2705
|
@#{singular_table_name} = #{model.name}.find(id.is_a?(Array) && id.length == 1 ? id.first : id)
|
2705
2706
|
end\n"
|
2706
|
-
self.define_method
|
2707
|
+
self.define_method(find_obj) do
|
2707
2708
|
id = if pk.length == 1 # && model.columns_hash[pk.first]&.type == :string
|
2708
2709
|
params[:id].gsub('^^sl^^', '/')
|
2709
2710
|
else
|
@@ -2723,6 +2724,7 @@ class Object
|
|
2723
2724
|
model.find(id_simplified)
|
2724
2725
|
end
|
2725
2726
|
end
|
2727
|
+
private find_obj
|
2726
2728
|
end
|
2727
2729
|
|
2728
2730
|
if is_need_params
|
data/lib/brick/rails/engine.rb
CHANGED
@@ -106,6 +106,16 @@ function linkSchemas() {
|
|
106
106
|
load inflections
|
107
107
|
end
|
108
108
|
require 'brick/join_array'
|
109
|
+
|
110
|
+
# Load it once at the start for Rails >= 7.2 ...
|
111
|
+
Module.class_exec &::Brick::ADD_CONST_MISSING if ActiveRecord.version >= Gem::Version.new('7.2.0')
|
112
|
+
# ... and also for Rails >= 5.0, whenever the app gets reloaded
|
113
|
+
if ::Rails.application.respond_to?(:reloader)
|
114
|
+
::Rails.application.reloader.to_prepare { Module.class_exec &::Brick::ADD_CONST_MISSING }
|
115
|
+
else
|
116
|
+
Module.class_exec &::Brick::ADD_CONST_MISSING # Older Rails -- just load at the start
|
117
|
+
end
|
118
|
+
|
109
119
|
# Now the Brick initializer since there may be important schema things configured
|
110
120
|
if !::Brick.initializer_loaded && File.exist?(brick_initializer = ::Rails.root&.join('config/initializers/brick.rb') || '')
|
111
121
|
::Brick.initializer_loaded = load brick_initializer
|
@@ -180,12 +190,6 @@ function linkSchemas() {
|
|
180
190
|
::Brick.established_drf = "/#{::Brick.config.path_prefix}#{action[action.index('#')..-1]}"
|
181
191
|
end
|
182
192
|
end
|
183
|
-
|
184
|
-
Module.class_exec &::Brick::ADD_CONST_MISSING # Load it once at the start ...
|
185
|
-
# ... and also for Rails >= 5.0, whenever the app gets reloaded
|
186
|
-
if ::Rails.application.respond_to?(:reloader)
|
187
|
-
::Rails.application.reloader.to_prepare { Module.class_exec &::Brick::ADD_CONST_MISSING }
|
188
|
-
end
|
189
193
|
end
|
190
194
|
|
191
195
|
# After we're initialized and before running the rest of stuff, put our configuration in place
|
@@ -632,10 +636,17 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
632
636
|
|
633
637
|
def path_keys(hm_assoc, fk_name, pk)
|
634
638
|
pk.map!(&:to_sym)
|
635
|
-
keys = if
|
636
|
-
|
639
|
+
keys = if hm_assoc.macro == :has_and_belongs_to_many
|
640
|
+
# %%% Can a HABTM use composite keys?
|
641
|
+
# (If so then this should be rewritten to do a .zip() )
|
642
|
+
name_from_other_direction = hm_assoc.klass.reflect_on_all_associations.find { |a| a.join_table == hm_assoc.join_table }&.name
|
643
|
+
[["#{name_from_other_direction}.#{pk.first}", pk.first]]
|
637
644
|
else
|
638
|
-
|
645
|
+
if fk_name.is_a?(Array) && pk.is_a?(Array) # Composite keys?
|
646
|
+
fk_name.zip(pk)
|
647
|
+
else
|
648
|
+
[[fk_name, pk.length == 1 ? pk.first : pk.inspect]]
|
649
|
+
end
|
639
650
|
end
|
640
651
|
if hm_assoc.options.key?(:as) && !(hmaar = hm_assoc.active_record).abstract_class?
|
641
652
|
poly_type = if hmaar.column_names.include?(hmaar.inheritance_column)
|
@@ -689,7 +700,14 @@ window.addEventListener(\"popstate\", linkSchemas);
|
|
689
700
|
skip_klass_hms = ::Brick.config.skip_index_hms[model_name] || {}
|
690
701
|
hms_headers = hms.each_with_object([]) do |hm, s|
|
691
702
|
hm_stuff = [(hm_assoc = hm.last),
|
692
|
-
"H#{hm_assoc.macro
|
703
|
+
"H#{case hm_assoc.macro
|
704
|
+
when :has_one
|
705
|
+
'O'
|
706
|
+
when :has_and_belongs_to_many
|
707
|
+
'ABTM'
|
708
|
+
else
|
709
|
+
'M'
|
710
|
+
end}#{'T' if hm_assoc.options[:through]}",
|
693
711
|
(assoc_name = hm.first)]
|
694
712
|
hm_fk_name = if (through = hm_assoc.options[:through])
|
695
713
|
next unless @_brick_model.instance_methods.include?(through) &&
|
@@ -76,8 +76,12 @@ module Brick::Rails::FormBuilder
|
|
76
76
|
out << self.hidden_field(method.to_sym, html_options)
|
77
77
|
out << "<trix-editor input=\"#{self.field_id(method)}\"></trix-editor>"
|
78
78
|
end
|
79
|
-
|
80
|
-
|
79
|
+
if spit_out_text_field
|
80
|
+
# %%% Need to update the max-width with javascript when page width is adjusted?
|
81
|
+
html_options.merge!(style: 'min-width: 154px;field-sizing: content;') # max-width: auto;
|
82
|
+
out << self.text_field(method.to_sym, html_options)
|
83
|
+
end
|
84
|
+
when :boolean
|
81
85
|
out << self.check_box(method.to_sym)
|
82
86
|
when :integer, :decimal, :float
|
83
87
|
if model.respond_to?(:attribute_types) && (enum_type = model.attribute_types[method]).is_a?(ActiveRecord::Enum::EnumType)
|
data/lib/brick/rails.rb
CHANGED
@@ -167,7 +167,7 @@ erDiagram
|
|
167
167
|
%> <%= \"#\{through_name} }o--|| #\{hm_name}\".html_safe %> : \"\"
|
168
168
|
<%= \"#{model_short_name} }o..o{ #\{hm_name} : \\\"#\{hm.first}\\\"\".html_safe %><%
|
169
169
|
else # has_many
|
170
|
-
%> <%= \"#{model_short_name}
|
170
|
+
%> <%= \"#{model_short_name} #\{hm.last.macro == :has_and_belongs_to_many ? '}o' : '||'}--o{ #\{hm_name} : \\\"#\{
|
171
171
|
hm.first.to_s unless (last_hm = hm.first.to_s).downcase == hm_class.name.underscore.pluralize.tr('/', '_')
|
172
172
|
}\\\"\".html_safe %><%
|
173
173
|
end %>
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
@@ -297,7 +297,7 @@ module Brick
|
|
297
297
|
puts " due to invalid source #{a.source_reflection_name.inspect}."
|
298
298
|
next
|
299
299
|
end
|
300
|
-
|
300
|
+
elsif a.macro != :has_and_belongs_to_many
|
301
301
|
this_fks = (this_fk = a.foreign_key).is_a?(Array) ? this_fk.uniq : [this_fk.to_s]
|
302
302
|
if !a.options.key?(:as) && a.klass.table_exists? && (this_fks - a.klass.column_names).length.positive?
|
303
303
|
options = ", #{a.options.map { |k, v| "#{k.inspect} => #{v.inspect}" }.join(', ')}" if a.options.present?
|
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.224
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lorin Thwaits
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-12-
|
11
|
+
date: 2024-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -257,7 +257,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
257
257
|
- !ruby/object:Gem::Version
|
258
258
|
version: 1.3.6
|
259
259
|
requirements: []
|
260
|
-
rubygems_version: 3.
|
260
|
+
rubygems_version: 3.1.6
|
261
261
|
signing_key:
|
262
262
|
specification_version: 4
|
263
263
|
summary: Create a Rails app from data alone
|