tybo 0.0.7 → 0.0.9
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/app/components/forms/has_many_form_component.html.erb +5 -0
- data/app/components/forms/has_many_form_component.rb +8 -0
- data/app/components/forms/has_one_form_component.html.erb +10 -0
- data/app/components/forms/has_one_form_component.rb +8 -0
- data/app/components/icons/collection_component.html.erb +1 -1
- data/app/components/icons/home_component.html.erb +2 -1
- data/app/components/icons/mic_component.html.erb +1 -1
- data/app/components/icons/news_paper_component.html.erb +1 -1
- data/app/components/icons/office_building_component.html.erb +1 -1
- data/app/components/icons/question_mark_circle_component.html.erb +1 -1
- data/app/components/icons/trash_component.html.erb +1 -1
- data/app/components/icons/users_component.html.erb +1 -1
- data/lib/generators/bo/bo_generator.rb +23 -10
- data/lib/generators/bo/templates/_form.html.erb +17 -9
- data/lib/generators/bo/templates/_search_bar.html.erb +1 -1
- data/lib/generators/bo/templates/controller.rb +14 -6
- data/lib/tybo/version.rb +1 -1
- metadata +10 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: daa02ecc2547566ac774ab1e182054ff7a9cfbaa7c45561338e2b706536eafe8
|
|
4
|
+
data.tar.gz: 8f506d40fe83c7856efceb1f1b5eb55ebdee15a5769ae4e59332850f2d18bfc7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0dfda4edfd7ed96a710117404e4247ab4a99b65af0da16b9ed71416e142c1c3ce01adff087dd463c474751d6d2aa07be437d02267ab2abc7d3af03df2ebbdb15
|
|
7
|
+
data.tar.gz: 5fef87ba89d3bb1deb46b6848239e4acfa717b60cbde1b714c75112cdb84546dd35913be7c349257e3c637a86bba5e86fe434b0a6c0fe25b134d147f32198dda
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
<div class="space-y-6 sm:space-y-5">
|
|
2
|
+
<div>
|
|
3
|
+
<h3 class="text-lg font-medium leading-6 text-gray-900"><%= @title %></h3>
|
|
4
|
+
</div>
|
|
5
|
+
<div class="space-y-6 sm:space-y-5">
|
|
6
|
+
<div class="sm:items-start sm:gap-4 sm:border-t sm:border-gray-200 sm:pt-5">
|
|
7
|
+
<%= content %>
|
|
8
|
+
</div>
|
|
9
|
+
</div>
|
|
10
|
+
</div>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 text-white h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10" />
|
|
3
3
|
</svg>
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6" />
|
|
3
3
|
</svg>
|
|
4
|
+
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white text-sidebar-50" xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M11 5.882V19.24a1.76 1.76 0 01-3.417.592l-2.147-6.15M18 13a3 3 0 100-6M5.436 13.683A4.001 4.001 0 017 6h1.832c4.1 0 7.625-1.234 9.168-3v14c-1.543-1.766-5.067-3-9.168-3H7a3.988 3.988 0 01-1.564-.317z" />
|
|
3
3
|
</svg>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 01-2.25 2.25M16.5 7.5V18a2.25 2.25 0 002.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 002.25 2.25h13.5M6 7.5h3v3H6v-3z" />
|
|
3
3
|
</svg>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4" />
|
|
3
3
|
</svg>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
3
3
|
</svg>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6" xmlns="http://www.w3.org/2000/svg" className="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white" xmlns="http://www.w3.org/2000/svg" className="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={2}>
|
|
2
2
|
<path strokeLinecap="round" strokeLinejoin="round" d="M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16" />
|
|
3
3
|
</svg>
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
1
|
+
<svg class="mr-3 flex-shrink-0 h-6 w-6 text-white text-sidebar-50" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
|
|
2
2
|
<path stroke-linecap="round" stroke-linejoin="round" d="M17 20h5v-2a3 3 0 00-5.356-1.857M17 20H7m10 0v-2c0-.656-.126-1.283-.356-1.857M7 20H2v-2a3 3 0 015.356-1.857M7 20v-2c0-.656.126-1.283.356-1.857m0 0a5.002 5.002 0 019.288 0M15 7a3 3 0 11-6 0 3 3 0 016 0zm6 3a2 2 0 11-4 0 2 2 0 014 0zM7 10a2 2 0 11-4 0 2 2 0 014 0z"/>
|
|
3
3
|
</svg>
|
|
@@ -6,6 +6,7 @@ class BoGenerator < Rails::Generators::NamedBase
|
|
|
6
6
|
|
|
7
7
|
check_class_collision suffix: 'bo'
|
|
8
8
|
class_option :namespace, type: :string, default: 'administrators'
|
|
9
|
+
|
|
9
10
|
def create_bo_file
|
|
10
11
|
# Template method
|
|
11
12
|
# First argument is the name of the template
|
|
@@ -21,12 +22,11 @@ class BoGenerator < Rails::Generators::NamedBase
|
|
|
21
22
|
create_translations
|
|
22
23
|
end
|
|
23
24
|
|
|
24
|
-
def bo_model
|
|
25
|
-
class_name.constantize
|
|
26
|
-
end
|
|
27
25
|
|
|
28
|
-
def
|
|
29
|
-
|
|
26
|
+
def add_link_to_side_bar
|
|
27
|
+
inject_into_file "app/views/#{options[:namespace]}/layouts/_side_bar.html.erb", before: " <%= sidebar.with_current_user_card(user: current_#{options[:namespace].singularize}) %>\n" do
|
|
28
|
+
" <%= sidebar.with_item(path: #{options[:namespace]}_#{plural_name}_path, icon: Icons::UsersComponent, label: I18n.t('bo.#{file_name}.others').capitalize) %>\n"
|
|
29
|
+
end
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def create_routes
|
|
@@ -35,10 +35,24 @@ class BoGenerator < Rails::Generators::NamedBase
|
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
+
private
|
|
39
|
+
|
|
40
|
+
def bo_model
|
|
41
|
+
class_name.constantize
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def plural_name
|
|
45
|
+
file_name.pluralize
|
|
46
|
+
end
|
|
47
|
+
|
|
38
48
|
def model_columns
|
|
39
49
|
bo_model.column_names.map(&:to_sym)
|
|
40
50
|
end
|
|
41
51
|
|
|
52
|
+
def simple_form_conflict_keywords
|
|
53
|
+
%w[country country_code]
|
|
54
|
+
end
|
|
55
|
+
|
|
42
56
|
def bo_model_title(model=nil)
|
|
43
57
|
return unless model
|
|
44
58
|
|
|
@@ -61,6 +75,10 @@ class BoGenerator < Rails::Generators::NamedBase
|
|
|
61
75
|
has_many_assoc&.map do |association|
|
|
62
76
|
params["#{association.name.to_s.singularize}_ids".to_sym] = []
|
|
63
77
|
end
|
|
78
|
+
has_one_assoc&.map do |association|
|
|
79
|
+
attributes = association.klass.column_names.map(&:to_sym).delete_if {|attr| excluded_columns.include?(attr)}
|
|
80
|
+
params["#{association.name.to_s.singularize}_attributes".to_sym] = attributes
|
|
81
|
+
end
|
|
64
82
|
params
|
|
65
83
|
end
|
|
66
84
|
|
|
@@ -80,9 +98,4 @@ class BoGenerator < Rails::Generators::NamedBase
|
|
|
80
98
|
model_columns - excluded_columns
|
|
81
99
|
end
|
|
82
100
|
|
|
83
|
-
def add_link_to_side_bar
|
|
84
|
-
inject_into_file "app/views/#{options[:namespace]}/layouts/_side_bar.html.erb", before: " <%= sidebar.with_current_user_card(user: current_#{options[:namespace].singularize}) %>\n" do
|
|
85
|
-
" <%= sidebar.with_item(path: #{options[:namespace]}_#{plural_name}_path, icon: Icons::UsersComponent, label: I18n.t('bo.#{file_name}.others').capitalize) %>\n"
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
101
|
end
|
|
@@ -13,20 +13,28 @@
|
|
|
13
13
|
<%- if association.options[:class_name] == "ActionText::RichText" -%>
|
|
14
14
|
<%%= f.rich_text_area :<%= association.name.to_s.singularize.to_s.remove('rich_text_' )%> %>
|
|
15
15
|
<%- else -%>
|
|
16
|
-
<%%=
|
|
16
|
+
<%%= render(Forms::HasOneFormComponent.new(title: I18n.t('bo.<%= association.name %>.one') )) do %>
|
|
17
|
+
<%%= f.simple_fields_for :<%= association.name.to_s %> do |<%= association.name.to_s %>_form| %>
|
|
18
|
+
<%- association.klass.column_names.each do |column| -%>
|
|
19
|
+
<%- next if excluded_columns.include?(column.to_sym) || bo_model.reflect_on_all_associations.map(&:foreign_key).include?(column) -%>
|
|
20
|
+
<%- simple_form_alias = simple_form_conflict_keywords.include?(column) ? ',as: :string' : nil -%>
|
|
21
|
+
<%%= <%= association.name.to_s %>_form.input :<%= column %> <%= simple_form_alias %> %>
|
|
22
|
+
<%- end -%>
|
|
23
|
+
<%% end %>
|
|
24
|
+
<%% end %>
|
|
25
|
+
|
|
17
26
|
<%- end -%>
|
|
18
27
|
<%- end -%>
|
|
19
|
-
|
|
20
28
|
<!-- has_many Associations -->
|
|
21
29
|
<%- has_many_assoc.each do |association| -%>
|
|
22
|
-
|
|
23
|
-
<label class="block text-sm font-medium text-gray-700 string optional text-sm font-medium text-gray-600" for="<%= "#{class_name.underscore}_#{association.name.to_s.singularize}_ids" %>"><%= association.name.to_s.singularize%></label>
|
|
30
|
+
<%%= render(Forms::HasManyFormComponent.new(title: I18n.t('bo.<%= association.name.to_s.singularize%>.others') )) do %>
|
|
24
31
|
<%%= f.select :<%= "#{association.name.to_s.singularize}_ids" %>,
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
32
|
+
<%= association.klass.name %>.all.map { |item| [item.<%=bo_model_title(association.klass.name.constantize)%>, item.id] },
|
|
33
|
+
{ include_blank: true },
|
|
34
|
+
multiple: true,
|
|
35
|
+
data: { controller: 'ts--select' } %>
|
|
36
|
+
<%% end %>
|
|
37
|
+
|
|
30
38
|
<%- end -%>
|
|
31
39
|
<%%= render(Forms::SubmitButtonComponent.new) %>
|
|
32
40
|
<%% end %>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<div class="relative inline-block text-left" data-controller="dropdown">
|
|
1
|
+
<div class="relative mt-3 inline-block text-left" data-controller="dropdown">
|
|
2
2
|
<div>
|
|
3
3
|
<button data-action="click->dropdown#toggle click@window->dropdown#hide" type="button" class="inline-flex w-full justify-center rounded-md border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 shadow-sm hover:bg-gray-50 focus:outline-none " id="menu-button" aria-expanded="true" aria-haspopup="true">
|
|
4
4
|
<%%= I18n.t('bo.filters') %>
|
|
@@ -9,26 +9,34 @@ module <%= options[:namespace].camelize %>
|
|
|
9
9
|
@pagy, @<%= class_name.pluralize.underscore %> = pagy(@q.result(distinct: true))
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
def show
|
|
12
|
+
def show
|
|
13
|
+
<%- has_one_assoc.each do |association| -%>
|
|
14
|
+
<%- next if association.options[:class_name] == "ActionText::RichText" -%>
|
|
15
|
+
@<%= class_name.underscore %>.build_<%= association.name %> if @<%= class_name.underscore %>.<%= association.name %>.nil?
|
|
16
|
+
<%- end -%>
|
|
17
|
+
end
|
|
13
18
|
|
|
14
19
|
def new
|
|
15
20
|
@<%= class_name.underscore %> = <%= class_name %>.new
|
|
21
|
+
<%- has_one_assoc.each do |association| -%>
|
|
22
|
+
<%- next if association.options[:class_name] == "ActionText::RichText" -%>
|
|
23
|
+
@<%= class_name.underscore %>.build_<%= association.name %>
|
|
24
|
+
<%- end -%>
|
|
16
25
|
end
|
|
17
26
|
|
|
27
|
+
def edit; end
|
|
28
|
+
|
|
18
29
|
def create
|
|
19
30
|
@<%= class_name.underscore %> = <%= class_name %>.new(<%= class_name.underscore %>_params)
|
|
20
31
|
|
|
21
32
|
if @<%= class_name.underscore %>.save
|
|
22
33
|
flash[:success] = t('bo.record.created')
|
|
23
34
|
redirect_to <%="#{options[:namespace]}_#{class_name.underscore.pluralize}_path"%>
|
|
24
|
-
|
|
25
35
|
else
|
|
26
36
|
render :new, status: :unprocessable_entity
|
|
27
37
|
end
|
|
28
38
|
end
|
|
29
39
|
|
|
30
|
-
def edit; end
|
|
31
|
-
|
|
32
40
|
def update
|
|
33
41
|
if @<%= class_name.underscore %>.update(<%= class_name.underscore %>_params)
|
|
34
42
|
flash[:success] = t('bo.record.updated')
|
|
@@ -44,7 +52,7 @@ module <%= options[:namespace].camelize %>
|
|
|
44
52
|
|
|
45
53
|
redirect_to <%="#{options[:namespace]}_#{class_name.underscore.pluralize}_path"%>, status: :see_other
|
|
46
54
|
end
|
|
47
|
-
|
|
55
|
+
|
|
48
56
|
private
|
|
49
57
|
|
|
50
58
|
def set_<%= class_name.underscore %>
|
|
@@ -57,7 +65,7 @@ module <%= options[:namespace].camelize %>
|
|
|
57
65
|
<%- if value.nil? -%>
|
|
58
66
|
:<%= key %><%=permited_params.count == (index +1) ? '' : ',' %>
|
|
59
67
|
<%- else -%>
|
|
60
|
-
<%= "#{key}: []" %><%=permited_params.count == (index +1) ? '' : ',' %>
|
|
68
|
+
<%= "#{key}: %i[#{value.join(" ")}]" %><%=permited_params.count == (index +1) ? '' : ',' %>
|
|
61
69
|
<%- end -%>
|
|
62
70
|
<%- end -%>
|
|
63
71
|
)
|
data/lib/tybo/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tybo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Michel Delpierre
|
|
8
8
|
- Julien Camblan
|
|
9
|
-
autorequire:
|
|
9
|
+
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2023-02-
|
|
12
|
+
date: 2023-02-07 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rails
|
|
@@ -141,6 +141,10 @@ files:
|
|
|
141
141
|
- app/components/forms/delete_button_component.rb
|
|
142
142
|
- app/components/forms/divider_component.html.erb
|
|
143
143
|
- app/components/forms/divider_component.rb
|
|
144
|
+
- app/components/forms/has_many_form_component.html.erb
|
|
145
|
+
- app/components/forms/has_many_form_component.rb
|
|
146
|
+
- app/components/forms/has_one_form_component.html.erb
|
|
147
|
+
- app/components/forms/has_one_form_component.rb
|
|
144
148
|
- app/components/forms/submit_button_component.html.erb
|
|
145
149
|
- app/components/forms/submit_button_component.rb
|
|
146
150
|
- app/components/forms/subtitle_component.html.erb
|
|
@@ -258,7 +262,7 @@ licenses:
|
|
|
258
262
|
- MIT
|
|
259
263
|
metadata:
|
|
260
264
|
homepage_uri: https://rubygems.org/gems/tybo
|
|
261
|
-
post_install_message:
|
|
265
|
+
post_install_message:
|
|
262
266
|
rdoc_options: []
|
|
263
267
|
require_paths:
|
|
264
268
|
- lib
|
|
@@ -273,8 +277,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
273
277
|
- !ruby/object:Gem::Version
|
|
274
278
|
version: '0'
|
|
275
279
|
requirements: []
|
|
276
|
-
rubygems_version: 3.
|
|
277
|
-
signing_key:
|
|
280
|
+
rubygems_version: 3.2.3
|
|
281
|
+
signing_key:
|
|
278
282
|
specification_version: 4
|
|
279
283
|
summary: A tailwind custom admin engine for Ruby on Rails
|
|
280
284
|
test_files: []
|