brick 1.0.84 → 1.0.85
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/config.rb +25 -4
- data/lib/brick/extensions.rb +19 -7
- data/lib/brick/frameworks/rails/controller.rb +10 -4
- data/lib/brick/frameworks/rails/engine.rb +21 -5
- data/lib/brick/util.rb +1 -0
- data/lib/brick/version_number.rb +1 -1
- data/lib/brick.rb +32 -16
- data/lib/generators/brick/install_generator.rb +8 -2
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9b174d2fbdbef5d71921aa28da8fe7f943eb095fc3dd3c95efb7ac752681917e
|
|
4
|
+
data.tar.gz: daf09d491031d7f30171b85e25f68ceb36e73df5b183b86ab8269474651fb4b6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 697528d1c7445130ab1cae24b76ad154f72e1a770c26f50ab6bf6f40fe98045c775311c32460e4bfca0869567873166733f0b488eb3e67d9f1a11eb271407032
|
|
7
|
+
data.tar.gz: ba9004f32e27f8104eb3547bec82682011a2f328e6081774e6afd4485ff14ec10cc5992bcf539fbc328131a5bd5dbde5804b18bcf73f26108ab9a1f9f48b49b7
|
data/lib/brick/config.rb
CHANGED
|
@@ -20,6 +20,23 @@ module Brick
|
|
|
20
20
|
@serializer = Brick::Serializers::YAML
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
+
def mode
|
|
24
|
+
@mutex.synchronize do
|
|
25
|
+
case @brick_mode
|
|
26
|
+
when nil, :development
|
|
27
|
+
(::Rails.env == 'development' || ENV.key?('BRICK')) ? :on : nil
|
|
28
|
+
when :diag_env
|
|
29
|
+
ENV.key?('BRICK') ? :on : nil
|
|
30
|
+
else
|
|
31
|
+
@brick_mode
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def mode=(setting)
|
|
37
|
+
@mutex.synchronize { @brick_mode = setting unless @brick_mode == :on }
|
|
38
|
+
end
|
|
39
|
+
|
|
23
40
|
# Any path prefixing to apply to all auto-generated Brick routes
|
|
24
41
|
def path_prefix
|
|
25
42
|
@mutex.synchronize { @path_prefix }
|
|
@@ -31,7 +48,8 @@ module Brick
|
|
|
31
48
|
|
|
32
49
|
# Indicates whether Brick models are on or off. Default: true.
|
|
33
50
|
def enable_models
|
|
34
|
-
|
|
51
|
+
brick_mode = mode
|
|
52
|
+
@mutex.synchronize { brick_mode == :on && (@enable_models.nil? || @enable_models) }
|
|
35
53
|
end
|
|
36
54
|
|
|
37
55
|
def enable_models=(enable)
|
|
@@ -40,7 +58,8 @@ module Brick
|
|
|
40
58
|
|
|
41
59
|
# Indicates whether Brick controllers are on or off. Default: true.
|
|
42
60
|
def enable_controllers
|
|
43
|
-
|
|
61
|
+
brick_mode = mode
|
|
62
|
+
@mutex.synchronize { brick_mode == :on && (@enable_controllers.nil? || @enable_controllers) }
|
|
44
63
|
end
|
|
45
64
|
|
|
46
65
|
def enable_controllers=(enable)
|
|
@@ -49,7 +68,8 @@ module Brick
|
|
|
49
68
|
|
|
50
69
|
# Indicates whether Brick views are on or off. Default: true.
|
|
51
70
|
def enable_views
|
|
52
|
-
|
|
71
|
+
brick_mode = mode
|
|
72
|
+
@mutex.synchronize { brick_mode == :on && (@enable_views.nil? || @enable_views) }
|
|
53
73
|
end
|
|
54
74
|
|
|
55
75
|
def enable_views=(enable)
|
|
@@ -58,7 +78,8 @@ module Brick
|
|
|
58
78
|
|
|
59
79
|
# Indicates whether Brick routes are on or off. Default: true.
|
|
60
80
|
def enable_routes
|
|
61
|
-
|
|
81
|
+
brick_mode = mode
|
|
82
|
+
@mutex.synchronize { brick_mode == :on && (@enable_routes.nil? || @enable_routes) }
|
|
62
83
|
end
|
|
63
84
|
|
|
64
85
|
def enable_routes=(enable)
|
data/lib/brick/extensions.rb
CHANGED
|
@@ -766,7 +766,7 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
|
|
|
766
766
|
|
|
767
767
|
alias _brick_find_sti_class find_sti_class
|
|
768
768
|
def find_sti_class(type_name)
|
|
769
|
-
if ::Brick.sti_models.key?(type_name)
|
|
769
|
+
if ::Brick.sti_models.key?(type_name ||= name)
|
|
770
770
|
_brick_find_sti_class(type_name)
|
|
771
771
|
else
|
|
772
772
|
# This auto-STI is more of a brute-force approach, building modules where needed
|
|
@@ -816,6 +816,8 @@ end
|
|
|
816
816
|
if Object.const_defined?('ActionView')
|
|
817
817
|
module ActionView::Helpers::FormTagHelper
|
|
818
818
|
def link_to_brick(*args, **kwargs)
|
|
819
|
+
return unless ::Brick.config.mode == :on
|
|
820
|
+
|
|
819
821
|
text = (args.first.is_a?(String) && args.first) || args[1]
|
|
820
822
|
klass_or_obj = ((args.first.is_a?(ActiveRecord::Relation) ||
|
|
821
823
|
args.first.is_a?(ActiveRecord::Base) ||
|
|
@@ -860,7 +862,7 @@ if Object.const_defined?('ActionView')
|
|
|
860
862
|
pk = (klass.primary_key || ActiveRecord::Base.primary_key).to_sym
|
|
861
863
|
# Used to also have this but it's a bit too permissive to identify a primary key: (path_params.length == 1 && path_params.values.first) ||
|
|
862
864
|
if ((id = (path_params[pk] || path_params[:id] || path_params["#{klass.name.underscore}_id".to_sym])) && (obj = klass.find_by(pk => id))) ||
|
|
863
|
-
(['show', 'edit'].include?(action_name) && (obj = klass.first))
|
|
865
|
+
(['show', 'edit', 'update', 'destroy'].include?(action_name) && (obj = klass.first))
|
|
864
866
|
obj
|
|
865
867
|
else
|
|
866
868
|
# %%% If there is a HMT that refers to some ___id then try to identify an appropriate filter
|
|
@@ -1633,7 +1635,11 @@ class Object
|
|
|
1633
1635
|
code << " end\n"
|
|
1634
1636
|
self.define_method :destroy do
|
|
1635
1637
|
::Brick.set_db_schema(params)
|
|
1636
|
-
|
|
1638
|
+
if (obj = find_obj).send(:destroy)
|
|
1639
|
+
redirect_to send("#{model._brick_index}_path".to_sym)
|
|
1640
|
+
else
|
|
1641
|
+
redirect_to send("#{model._brick_index(:singular)}_path".to_sym, obj)
|
|
1642
|
+
end
|
|
1637
1643
|
end
|
|
1638
1644
|
end
|
|
1639
1645
|
|
|
@@ -1732,10 +1738,16 @@ end
|
|
|
1732
1738
|
# Get info on all relations during first database connection
|
|
1733
1739
|
# ==========================================================
|
|
1734
1740
|
|
|
1735
|
-
|
|
1741
|
+
if ActiveRecord.const_defined?('ConnectionHandling')
|
|
1742
|
+
ActiveRecord::ConnectionHandling
|
|
1743
|
+
else
|
|
1744
|
+
ActiveRecord::ConnectionAdapters::ConnectionHandler
|
|
1745
|
+
end.class_exec do
|
|
1736
1746
|
alias _brick_establish_connection establish_connection
|
|
1737
1747
|
def establish_connection(*args)
|
|
1738
1748
|
conn = _brick_establish_connection(*args)
|
|
1749
|
+
return conn unless ::Brick.config.mode == :on
|
|
1750
|
+
|
|
1739
1751
|
begin
|
|
1740
1752
|
# Overwrite SQLite's #begin_db_transaction so it opens in IMMEDIATE mode instead of
|
|
1741
1753
|
# the default DEFERRED mode.
|
|
@@ -1866,7 +1878,7 @@ module ActiveRecord::ConnectionHandling
|
|
|
1866
1878
|
case ActiveRecord::Base.connection.adapter_name
|
|
1867
1879
|
when 'PostgreSQL', 'SQLite' # These bring back a hash for each row because the query uses column aliases
|
|
1868
1880
|
# schema ||= 'public' if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
|
1869
|
-
|
|
1881
|
+
retrieve_schema_and_tables(sql, is_postgres, is_mssql, schema).each do |r|
|
|
1870
1882
|
# If Apartment gem lists the table as being associated with a non-tenanted model then use whatever it thinks
|
|
1871
1883
|
# is the default schema, usually 'public'.
|
|
1872
1884
|
schema_name = if ::Brick.config.schema_behavior[:multitenant]
|
|
@@ -1915,7 +1927,7 @@ WHERE c.owner IN (#{::Brick.db_schemas.keys.map { |s| "'#{s}'" }.join(', ')})
|
|
|
1915
1927
|
ORDER BY 1, 2, c.internal_column_id, acc.position"
|
|
1916
1928
|
ActiveRecord::Base.execute_sql(sql, *ar_tables)
|
|
1917
1929
|
else
|
|
1918
|
-
|
|
1930
|
+
retrieve_schema_and_tables(sql)
|
|
1919
1931
|
end
|
|
1920
1932
|
|
|
1921
1933
|
schema_and_tables.each do |r|
|
|
@@ -2113,7 +2125,7 @@ ORDER BY 1, 2, c.internal_column_id, acc.position"
|
|
|
2113
2125
|
else
|
|
2114
2126
|
'schema_migrations'
|
|
2115
2127
|
end
|
|
2116
|
-
ar_imtn = ActiveRecord.version >= ::Gem::Version.new('5.0') ? ActiveRecord::Base.internal_metadata_table_name : ''
|
|
2128
|
+
ar_imtn = ActiveRecord.version >= ::Gem::Version.new('5.0') ? ActiveRecord::Base.internal_metadata_table_name : 'ar_internal_metadata'
|
|
2117
2129
|
[ar_smtn, ar_imtn]
|
|
2118
2130
|
end
|
|
2119
2131
|
|
|
@@ -8,10 +8,16 @@ module Brick
|
|
|
8
8
|
# `brick_enabled_for_controller`.
|
|
9
9
|
module Controller
|
|
10
10
|
def self.included(controller)
|
|
11
|
-
controller.before_action
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
if controller.respond_to?(:before_action)
|
|
12
|
+
controller.before_action(
|
|
13
|
+
:set_brick_enabled_for_controller,
|
|
14
|
+
:set_brick_controller_info
|
|
15
|
+
)
|
|
16
|
+
else
|
|
17
|
+
controller.before_filter(
|
|
18
|
+
:set_brick_enabled_for_controller,
|
|
19
|
+
:set_brick_controller_info
|
|
20
|
+
)
|
|
15
21
|
end
|
|
16
22
|
|
|
17
23
|
protected
|
|
@@ -181,10 +181,15 @@ module Brick
|
|
|
181
181
|
end
|
|
182
182
|
end
|
|
183
183
|
|
|
184
|
-
|
|
184
|
+
apartment_default_schema = ::Brick.apartment_multitenant && Apartment.default_schema
|
|
185
|
+
schema_options = if ::Brick.apartment_multitenant &&
|
|
186
|
+
(cur_schema = Apartment::Tenant.current) != apartment_default_schema
|
|
187
|
+
"<option selected value=\"#{cur_schema}\">#{cur_schema}</option>"
|
|
188
|
+
else
|
|
189
|
+
::Brick.db_schemas.keys.each_with_object(+'') { |v, s| s << "<option value=\"#{v}\">#{v}</option>" }
|
|
190
|
+
end.html_safe
|
|
185
191
|
# %%% If we are not auto-creating controllers (or routes) then omit by default, and if enabled anyway, such as in a development
|
|
186
192
|
# environment or whatever, then get either the controllers or routes list instead
|
|
187
|
-
apartment_default_schema = ::Brick.apartment_multitenant && Apartment.default_schema
|
|
188
193
|
prefix = "#{::Brick.config.path_prefix}/" if ::Brick.config.path_prefix
|
|
189
194
|
table_options = (::Brick.relations.keys - ::Brick.config.exclude_tables).each_with_object({}) do |tbl, s|
|
|
190
195
|
binding.pry if tbl.is_a?(Symbol)
|
|
@@ -329,6 +334,10 @@ a.big-arrow {
|
|
|
329
334
|
color: red;
|
|
330
335
|
white-space: nowrap;
|
|
331
336
|
}
|
|
337
|
+
.danger {
|
|
338
|
+
background-color: red;
|
|
339
|
+
color: white;
|
|
340
|
+
}
|
|
332
341
|
|
|
333
342
|
#revertTemplate {
|
|
334
343
|
display: none;
|
|
@@ -446,7 +455,7 @@ var #{table_name}HtColumns;
|
|
|
446
455
|
// This PageTransitionEvent fires when the page first loads, as well as after any other history
|
|
447
456
|
// transition such as when using the browser's Back and Forward buttons.
|
|
448
457
|
window.addEventListener(\"pageshow\", function() {
|
|
449
|
-
if (schemaSelect) { // First drop-down is only present if multitenant
|
|
458
|
+
if (schemaSelect && schemaSelect.options.length > 1) { // First drop-down is only present if multitenant
|
|
450
459
|
brickSchema = changeout(location.href, \"_brick_schema\");
|
|
451
460
|
if (brickSchema) {
|
|
452
461
|
[... document.getElementsByTagName(\"A\")].forEach(function (a) { a.href = changeout(a.href, \"_brick_schema\", brickSchema); });
|
|
@@ -1163,6 +1172,7 @@ end
|
|
|
1163
1172
|
<% end %>
|
|
1164
1173
|
|
|
1165
1174
|
#{unless args.first == 'new'
|
|
1175
|
+
confirm_are_you_sure = ActionView.version < ::Gem::Version.new('7.0') ? "data: { confirm: 'Are you sure?' }" : "form: { data: { turbo_confirm: 'Are you sure?' } }"
|
|
1166
1176
|
hms_headers.each_with_object(+'') do |hm, s|
|
|
1167
1177
|
# %%% Would be able to remove this when multiple foreign keys to same destination becomes bulletproof
|
|
1168
1178
|
next if hm.first.options[:through] && !hm.first.through_reflection
|
|
@@ -1185,7 +1195,8 @@ end
|
|
|
1185
1195
|
else
|
|
1186
1196
|
s
|
|
1187
1197
|
end
|
|
1188
|
-
end
|
|
1198
|
+
end +
|
|
1199
|
+
"<%= button_to(\"Delete #\{@#{obj_name}.brick_descrip}\", send(\"#\{#{model_name}._brick_index(:singular)}_path\".to_sym, @#{obj_name}), { method: 'delete', class: 'danger', #{confirm_are_you_sure} }) %>"
|
|
1189
1200
|
end}
|
|
1190
1201
|
<% end %>
|
|
1191
1202
|
#{script}"
|
|
@@ -1193,7 +1204,7 @@ end}
|
|
|
1193
1204
|
end
|
|
1194
1205
|
inline << "
|
|
1195
1206
|
<% if is_includes_dates %>
|
|
1196
|
-
<link rel=\"stylesheet\" href=\"https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css\">
|
|
1207
|
+
<link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/npm/flatpickr/dist/flatpickr.min.css\">
|
|
1197
1208
|
<style>
|
|
1198
1209
|
.flatpickr-calendar {
|
|
1199
1210
|
background: #A0FFA0;
|
|
@@ -1207,6 +1218,11 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
|
|
|
1207
1218
|
</script>
|
|
1208
1219
|
<% end %>
|
|
1209
1220
|
|
|
1221
|
+
<% if false # is_includes_dropdowns %>
|
|
1222
|
+
<script src=\"https://cdnjs.cloudflare.com/ajax/libs/slim-select/1.27.1/slimselect.min.js\"></script>
|
|
1223
|
+
<link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdnjs.cloudflare.com/ajax/libs/slim-select/1.27.1/slimselect.min.css\">
|
|
1224
|
+
<% end %>
|
|
1225
|
+
|
|
1210
1226
|
<% if true # @_brick_erd
|
|
1211
1227
|
%>
|
|
1212
1228
|
<script>
|
data/lib/brick/util.rb
CHANGED
|
@@ -84,6 +84,7 @@ module Brick
|
|
|
84
84
|
|
|
85
85
|
def self._custom_require_dir
|
|
86
86
|
unless (custom_require_dir = ::Brick::Util.instance_variable_get(:@_custom_require_dir))
|
|
87
|
+
require 'tmpdir'
|
|
87
88
|
::Brick::Util.instance_variable_set(:@_custom_require_dir, (custom_require_dir = Dir.mktmpdir))
|
|
88
89
|
# So normal Ruby require will now pick this one up
|
|
89
90
|
$LOAD_PATH.unshift(custom_require_dir)
|
data/lib/brick/version_number.rb
CHANGED
data/lib/brick.rb
CHANGED
|
@@ -26,27 +26,38 @@ end
|
|
|
26
26
|
require 'brick/util'
|
|
27
27
|
|
|
28
28
|
# Allow ActiveRecord < 3.2 to work with Ruby 2.7 and later
|
|
29
|
-
if (ruby_version = ::Gem::Version.new(RUBY_VERSION)) >= ::Gem::Version.new('2.7')
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
::Brick::Util._patch_require(
|
|
33
|
-
'active_support/values/time_zone.rb', '/activesupport',
|
|
34
|
-
[' def parse(str, now=now)',
|
|
35
|
-
' def parse(str, now=now())']
|
|
36
|
-
)
|
|
37
|
-
# Remove circular reference for "reflection" for ActiveRecord 3.1
|
|
38
|
-
if ActiveRecord.version >= ::Gem::Version.new('3.1')
|
|
29
|
+
if (ruby_version = ::Gem::Version.new(RUBY_VERSION)) >= ::Gem::Version.new('2.7')
|
|
30
|
+
if ActiveRecord.version < ::Gem::Version.new('3.2')
|
|
31
|
+
# Remove circular reference for "now"
|
|
39
32
|
::Brick::Util._patch_require(
|
|
40
|
-
'
|
|
41
|
-
['
|
|
42
|
-
|
|
43
|
-
:HasManyAssociation # Make sure the path for this guy is available to be autoloaded
|
|
33
|
+
'active_support/values/time_zone.rb', '/activesupport',
|
|
34
|
+
[' def parse(str, now=now)',
|
|
35
|
+
' def parse(str, now=now())']
|
|
44
36
|
)
|
|
37
|
+
# Remove circular reference for "reflection" for ActiveRecord 3.1
|
|
38
|
+
if ActiveRecord.version >= ::Gem::Version.new('3.1')
|
|
39
|
+
::Brick::Util._patch_require(
|
|
40
|
+
'active_record/associations/has_many_association.rb', '/activerecord',
|
|
41
|
+
['reflection = reflection)',
|
|
42
|
+
'reflection = reflection())'],
|
|
43
|
+
:HasManyAssociation # Make sure the path for this guy is available to be autoloaded
|
|
44
|
+
)
|
|
45
|
+
end
|
|
45
46
|
end
|
|
47
|
+
|
|
48
|
+
# # Create unfrozen route path in Rails 3.2
|
|
49
|
+
# if ActiveRecord.version < ::Gem::Version.new('4')
|
|
50
|
+
# ::Brick::Util._patch_require(
|
|
51
|
+
# 'action_dispatch/routing/route_set.rb', '/actiondispatch',
|
|
52
|
+
# ["script_name.chomp('/')).to_s",
|
|
53
|
+
# "script_name.chomp('/')).to_s.dup"],
|
|
54
|
+
# :RouteSet # Make sure the path for this guy is available to be autoloaded
|
|
55
|
+
# )
|
|
56
|
+
# end
|
|
46
57
|
end
|
|
47
58
|
|
|
48
59
|
# Add left_outer_join! to Associations::JoinDependency and Relation::QueryMethods
|
|
49
|
-
if ActiveRecord.version < ::Gem::Version.new('5')
|
|
60
|
+
if ActiveRecord.version >= ::Gem::Version.new('4') && ActiveRecord.version < ::Gem::Version.new('5')
|
|
50
61
|
::Brick::Util._patch_require(
|
|
51
62
|
'active_record/associations/join_dependency.rb', '/activerecord', # /associations
|
|
52
63
|
["def join_constraints(outer_joins)
|
|
@@ -226,6 +237,11 @@ module Brick
|
|
|
226
237
|
true
|
|
227
238
|
end
|
|
228
239
|
|
|
240
|
+
# @api public
|
|
241
|
+
def mode=(setting)
|
|
242
|
+
Brick.config.mode = setting
|
|
243
|
+
end
|
|
244
|
+
|
|
229
245
|
# Any path prefixing to apply to all auto-generated Brick routes
|
|
230
246
|
# @api public
|
|
231
247
|
def path_prefix=(path)
|
|
@@ -433,7 +449,7 @@ module Brick
|
|
|
433
449
|
# This is attempted early if a brick initialiser file is found, and then again as a failsafe at the end of our engine's initialisation
|
|
434
450
|
# %%% Maybe look for differences the second time 'round and just add new stuff instead of entirely deferring
|
|
435
451
|
def load_additional_references
|
|
436
|
-
return if @_additional_references_loaded
|
|
452
|
+
return if @_additional_references_loaded || ::Brick.config.mode != :on
|
|
437
453
|
|
|
438
454
|
relations = ::Brick.relations
|
|
439
455
|
if (ars = ::Brick.config.additional_references) || ::Brick.config.polymorphics
|
|
@@ -136,10 +136,16 @@ module Brick
|
|
|
136
136
|
|
|
137
137
|
create_file(filename, "# frozen_string_literal: true
|
|
138
138
|
|
|
139
|
-
#
|
|
140
|
-
#
|
|
139
|
+
# Settings for the Brick gem
|
|
140
|
+
# (By default this auto-creates models, controllers, views, and routes on-the-fly.)
|
|
141
141
|
|
|
142
142
|
if Object.const_defined?('Brick')
|
|
143
|
+
# Mode -- generally :on or :off, or only in :development. Also available is :diag_env which enables only
|
|
144
|
+
# when the environment variable BRICK is set.
|
|
145
|
+
Brick.mode = :development
|
|
146
|
+
# Can be further overridden by placing this line in development.rb / test.rb / production.rb:
|
|
147
|
+
# # Brick.mode = :on # (or :off to entirely disable)
|
|
148
|
+
|
|
143
149
|
# # Custom path prefix to apply to all auto-generated Brick routes. Also causes auto-generated controllers
|
|
144
150
|
# # to be created inside a module with the same name.
|
|
145
151
|
# ::Brick.path_prefix = 'admin'
|
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.85
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lorin Thwaits
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2022-10-
|
|
11
|
+
date: 2022-10-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activerecord
|