biovision 0.3.210504.0 → 0.4.210512.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/app/assets/stylesheets/biovision/themes/default_theme/components/users.scss +1 -0
- data/app/assets/stylesheets/biovision/themes/default_theme/components/users/dashboard.scss +4 -0
- data/app/helpers/biovision_helper.rb +18 -34
- data/app/lib/biovision/components/base/entity_links.rb +24 -0
- data/app/lib/biovision/components/base_component.rb +1 -6
- data/app/uploaders/simple_image_uploader.rb +7 -1
- data/app/views/admin/dynamic_blocks/entity/_in_list.html.erb +2 -2
- data/app/views/admin/dynamic_pages/entity/_in_list.html.erb +2 -2
- data/app/views/admin/dynamic_pages/entity/_in_search.html.erb +1 -1
- data/app/views/admin/navigation_group_pages/entity/_in_list.html.erb +2 -2
- data/app/views/admin/navigation_groups/entity/_in_list.html.erb +2 -2
- data/app/views/admin/tokens/entity/_in_list.html.erb +2 -2
- data/app/views/admin/users/entity/_fields.html.erb +1 -1
- data/app/views/admin/users/entity/_in_list.html.erb +1 -1
- data/app/views/admin/users/entity/_in_search.html.erb +1 -1
- data/app/views/admin/users/roles.html.erb +1 -1
- data/app/views/application/unauthorized.html.erb +4 -1
- data/app/views/components/users/_login_form.html.erb +1 -0
- data/app/views/my/index/index.html.erb +2 -2
- data/app/views/my/recoveries/show.html.erb +0 -0
- data/app/views/shared/entity/_linked_entity.html.erb +1 -1
- data/app/views/shared/entity/_parent.html.erb +1 -1
- data/app/views/shared/entity/edit.html.erb +1 -1
- data/app/views/shared/forms/_field.html.erb +1 -1
- data/app/views/shared/forms/_text_area.html.erb +1 -1
- data/app/views/shared/forms/_text_field.html.erb +1 -1
- data/lib/biovision/base_methods.rb +8 -1
- data/lib/biovision/version.rb +1 -1
- metadata +8 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55cbc88385aa6b6d41aa35620a597b0b410fa99d6681c69c9302ba04a09d696f
|
4
|
+
data.tar.gz: 5025b158f1afa936b8a6c9b872245379cd79a97ef4f502b180e9666121c6fdc4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a7e516295a56d2a48fba52ab0775f461ab4990b3ac5df6f137eb232b57be5c2cea4051ffc88f38d562f50dbe20a1a7b869c3dc38f3ac385a91de427bdf62802
|
7
|
+
data.tar.gz: 1c688393349578d1ff591574bb12becfa0d4dde7fe7a334f9cfa2e3a9d1c59607767042ff55f16a02e77cef2a022c94aed8729467f5865c2afa13fc77a940acf
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@
|
|
31
31
|
```ruby
|
32
32
|
gem 'dotenv-rails'
|
33
33
|
|
34
|
-
gem 'autoprefixer-rails', group: :production
|
34
|
+
# gem 'autoprefixer-rails', group: :production
|
35
35
|
|
36
36
|
gem 'biovision', git: 'https://github.com/Biovision/biovision.git'
|
37
37
|
# gem 'biovision', path: '/Users/maxim/Projects/Biovision/gems/biovision'
|
@@ -237,7 +237,7 @@ invoke :'nvm:load'
|
|
237
237
|
namespace :nvm do
|
238
238
|
task :load do
|
239
239
|
command 'echo "-----> Loading nvm"'
|
240
|
-
command %
|
240
|
+
command %(source ~/.nvm/nvm.sh)
|
241
241
|
command 'echo "-----> Now using nvm v.`nvm --version`"'
|
242
242
|
end
|
243
243
|
end
|
@@ -3,58 +3,42 @@
|
|
3
3
|
# Helper methods for common cases
|
4
4
|
module BiovisionHelper
|
5
5
|
# @param [ApplicationRecord] entity
|
6
|
-
# @param [
|
6
|
+
# @param [Biovision::Components::BaseComponent] handler
|
7
7
|
# @param [Hash] options
|
8
|
-
def admin_entity_link(entity,
|
8
|
+
def admin_entity_link(entity, handler: nil, **options)
|
9
9
|
return '∅' if entity.nil?
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
href = if entity.respond_to?(:admin_url)
|
16
|
-
entity.admin_url
|
17
|
-
else
|
18
|
-
"/admin/#{entity.class.table_name}/#{entity.id}"
|
19
|
-
end
|
11
|
+
component = (handler || Biovision::Components::BaseComponent[])
|
12
|
+
text = options.delete(:text) { component.text_for_link(entity) }
|
20
13
|
|
21
|
-
|
14
|
+
if handler.nil? || handler.permit?('view', entity)
|
15
|
+
href = component.entity_link(entity, :admin)
|
16
|
+
link_to(text, href, options)
|
17
|
+
else
|
18
|
+
text
|
19
|
+
end
|
22
20
|
end
|
23
21
|
|
24
22
|
# @param [ApplicationRecord] entity
|
25
|
-
# @param [String] text
|
26
23
|
# @param [Hash] options
|
27
|
-
def my_entity_link(entity,
|
24
|
+
def my_entity_link(entity, **options)
|
28
25
|
return '∅' if entity.nil?
|
29
26
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
href = if entity.respond_to?(:my_url)
|
35
|
-
entity.my_url
|
36
|
-
else
|
37
|
-
"/my/#{entity.class.table_name}/#{entity.id}"
|
38
|
-
end
|
27
|
+
handler = Biovision::Components::BaseComponent[]
|
28
|
+
text = options.delete(:text) { handler.text_for_link(entity) }
|
29
|
+
href = handler.entity_link(entity, :my)
|
39
30
|
|
40
31
|
link_to(text, href, options)
|
41
32
|
end
|
42
33
|
|
43
34
|
# @param [ApplicationRecord] entity
|
44
|
-
# @param [String] text
|
45
35
|
# @param [Hash] options
|
46
|
-
def entity_link(entity,
|
36
|
+
def entity_link(entity, **options)
|
47
37
|
return '' if entity.nil?
|
48
38
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
href = if entity.respond_to?(:world_url)
|
54
|
-
entity.world_url
|
55
|
-
else
|
56
|
-
"/#{entity.class.table_name}/#{entity.id}"
|
57
|
-
end
|
39
|
+
handler = Biovision::Components::BaseComponent[]
|
40
|
+
text = options.delete(:text) { handler.text_for_link(entity) }
|
41
|
+
href = handler.entity_link(entity)
|
58
42
|
|
59
43
|
link_to(text, href, options)
|
60
44
|
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Biovision
|
4
|
+
module Components
|
5
|
+
module Base
|
6
|
+
# Links for entities in context of current user
|
7
|
+
module EntityLinks
|
8
|
+
# @param [ApplicationRecord] entity
|
9
|
+
def text_for_link(entity)
|
10
|
+
entity.respond_to?(:text_for_link) ? entity.text_for_link : entity.id
|
11
|
+
end
|
12
|
+
|
13
|
+
# @param [ApplicationRecord] entity
|
14
|
+
# @param [Symbol|String] scope
|
15
|
+
def entity_link(entity, scope = '')
|
16
|
+
default = "#{scope}/#{entity.class.table_name}/#{entity.id}"
|
17
|
+
prefix = %i[admin my].include?(scope.to_sym) ? scope : 'world'
|
18
|
+
message = "#{prefix}_url".to_sym
|
19
|
+
entity.respond_to?(message) ? entity.send(message) : "/#{default}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -7,6 +7,7 @@ module Biovision
|
|
7
7
|
extend Base::ComponentSettings
|
8
8
|
include Base::ComponentPrivileges
|
9
9
|
include Base::ComponentParameters
|
10
|
+
include Base::EntityLinks
|
10
11
|
|
11
12
|
attr_reader :component, :slug, :name, :user, :user_link
|
12
13
|
|
@@ -53,12 +54,6 @@ module Biovision
|
|
53
54
|
handler_name.safe_constantize || BaseComponent
|
54
55
|
end
|
55
56
|
|
56
|
-
# Privilege names for using in biovision_component_user.data
|
57
|
-
# @deprecated use roles instead
|
58
|
-
def self.privilege_names
|
59
|
-
[]
|
60
|
-
end
|
61
|
-
|
62
57
|
# Model list for automatic role creation
|
63
58
|
def self.dependent_models
|
64
59
|
[]
|
@@ -16,7 +16,7 @@ class SimpleImageUploader < CarrierWave::Uploader::Base
|
|
16
16
|
end
|
17
17
|
|
18
18
|
process :auto_orient
|
19
|
-
process optimize: [{ jpegoptim: true, optipng: true, svgo: true }]
|
19
|
+
process optimize: [{ jpegoptim: true, optipng: true, svgo: true }], if: :optimize_images?
|
20
20
|
|
21
21
|
def auto_orient
|
22
22
|
return unless raster?
|
@@ -74,6 +74,12 @@ class SimpleImageUploader < CarrierWave::Uploader::Base
|
|
74
74
|
!new_file.extension.match?(/svgz?\z/i)
|
75
75
|
end
|
76
76
|
|
77
|
+
def optimize_images?(*)
|
78
|
+
return false unless Rails.application.config.respond_to? :optimize_images
|
79
|
+
|
80
|
+
Rails.application.config.optimize_images
|
81
|
+
end
|
82
|
+
|
77
83
|
def raster?
|
78
84
|
!File.extname(path).match?(/\.svgz?\z/i)
|
79
85
|
end
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<div class="data">
|
2
|
-
<div><%= admin_entity_link(entity) %></div>
|
2
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
3
3
|
|
4
4
|
<%= render(partial: 'shared/admin/toggle', locals: { entity: entity }) %>
|
5
5
|
|
6
|
-
<% if local_assigns[:handler]
|
6
|
+
<% if local_assigns[:handler]&.permit?('edit', entity) %>
|
7
7
|
<div class="entity-actions">
|
8
8
|
<%= edit_icon(entity) %>
|
9
9
|
<%= destroy_icon(entity) %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<figure class="image"><%= simple_image_preview(entity) %></figure>
|
2
2
|
<div class="data">
|
3
|
-
<div><%= admin_entity_link(entity) %></div>
|
3
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
4
4
|
<% unless entity.name.blank? %>
|
5
5
|
<div class="info"><%= entity.name %></div>
|
6
6
|
<% end %>
|
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
<div class="entity-actions">
|
11
11
|
<%= world_icon(entity) unless entity.url.blank? %>
|
12
|
-
<% if local_assigns[:handler]
|
12
|
+
<% if local_assigns[:handler]&.permit?('edit', entity) %>
|
13
13
|
<%= edit_icon(entity) %>
|
14
14
|
<%= destroy_icon(entity) %>
|
15
15
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<figure class="image"><%= simple_image_preview(entity) %></figure>
|
2
2
|
<div class="data">
|
3
|
-
<div><%= admin_entity_link(entity) %></div>
|
3
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
4
4
|
<% unless entity.name.blank? %>
|
5
5
|
<div class="info"><%= entity.name %></div>
|
6
6
|
<% end %>
|
@@ -1,9 +1,9 @@
|
|
1
1
|
<div class="data">
|
2
|
-
<div><%= admin_entity_link(entity.dynamic_page) %></div>
|
2
|
+
<div><%= admin_entity_link(entity.dynamic_page, handler: local_assigns[:handler]) %></div>
|
3
3
|
<div class="info"><%= entity.dynamic_page.url %></div>
|
4
4
|
<div class="secondary info"><%= entity.dynamic_page.name %></div>
|
5
5
|
|
6
|
-
<% if local_assigns[:handler]
|
6
|
+
<% if local_assigns[:handler]&.permit?('edit', entity.navigation_group) %>
|
7
7
|
<div class="entity-actions">
|
8
8
|
<% url = page_priority_admin_navigation_group_path(id: entity.navigation_group_id, page_id: entity.id) %>
|
9
9
|
<div class="priority-changer" data-url="<%= url %>">
|
@@ -1,11 +1,11 @@
|
|
1
1
|
<div class="data">
|
2
|
-
<div><%= admin_entity_link(entity) %></div>
|
2
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
3
3
|
<div class="info"><%= entity.slug %></div>
|
4
4
|
<div class="secondary info">
|
5
5
|
<%= t(:page_count, count: entity.dynamic_pages_count) %>
|
6
6
|
</div>
|
7
7
|
|
8
|
-
<% if local_assigns[:handler]
|
8
|
+
<% if local_assigns[:handler]&.permit?('edit', entity) %>
|
9
9
|
<div class="entity-actions">
|
10
10
|
<%= edit_icon(entity) %>
|
11
11
|
<%= destroy_icon(entity) %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<figure class="image"><%= simple_image_preview(entity.user) %></figure>
|
2
2
|
<div class="data">
|
3
|
-
<div><%= admin_entity_link(entity) %></div>
|
3
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
4
4
|
<div class="info">
|
5
5
|
<% unless entity.last_used.nil? %>
|
6
6
|
<div>
|
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
<%= render(partial: 'shared/admin/toggle', locals: { entity: entity }) %>
|
20
20
|
|
21
|
-
<% if local_assigns[:handler]
|
21
|
+
<% if local_assigns[:handler]&.permit?('edit', entity) %>
|
22
22
|
<div class="entity-actions">
|
23
23
|
<%= edit_icon(entity) %>
|
24
24
|
<%= destroy_icon(entity) %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<% unless entity.inviter_id.nil? %>
|
8
8
|
<div>
|
9
9
|
<dt><%= model.human_attribute_name(:inviter) %></dt>
|
10
|
-
<dd><%= admin_entity_link(entity.inviter) %></dd>
|
10
|
+
<dd><%= admin_entity_link(entity.inviter, handler: local_assigns[:handler]) %></dd>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
13
13
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<figure class="image"><%= simple_image_preview(entity) %></figure>
|
2
2
|
<div class="data">
|
3
|
-
<div><%= admin_entity_link(entity) %></div>
|
3
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
4
4
|
<% unless entity.notice.blank? %>
|
5
5
|
<div><%= entity.notice %></div>
|
6
6
|
<% end %>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<figure class="image"><%= simple_image_preview(entity) %></figure>
|
2
2
|
<div class="data">
|
3
|
-
<div><%= admin_entity_link(entity) %></div>
|
3
|
+
<div><%= admin_entity_link(entity, handler: local_assigns[:handler]) %></div>
|
4
4
|
<% unless entity.notice.blank? %>
|
5
5
|
<div><%= entity.notice %></div>
|
6
6
|
<% end %>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<% content_for :breadcrumbs do %>
|
3
3
|
<%= admin_biovision_component_link(component_handler.component) %>
|
4
4
|
<%= link_to(t('admin.users.nav_item.text'), admin_users_path) %>
|
5
|
-
<%= admin_entity_link(@entity) %>
|
5
|
+
<%= admin_entity_link(@entity, handler: component_handler) %>
|
6
6
|
<span><%= t('.nav_text') %></span>
|
7
7
|
<% end %>
|
8
8
|
|
@@ -45,8 +45,8 @@
|
|
45
45
|
<% handler = Biovision::Components::BaseComponent.handler(component, current_user) %>
|
46
46
|
<% next unless handler&.permit?('default') %>
|
47
47
|
<% if lookup_context.exists?("#{prefix}_#{component.slug}") %>
|
48
|
-
<section>
|
49
|
-
<h2><%=
|
48
|
+
<section class="my__component">
|
49
|
+
<h2><%= handler.name %></h2>
|
50
50
|
<%=
|
51
51
|
render(
|
52
52
|
partial: "#{prefix}#{component.slug}",
|
File without changes
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<% content_for :breadcrumbs do %>
|
7
7
|
<%= admin_biovision_component_link(component_handler.component) %>
|
8
8
|
<%= link_to(t("#{prefix}.nav_item.text"), "/#{controller_path}") %>
|
9
|
-
<%= admin_entity_link(@entity) %>
|
9
|
+
<%= admin_entity_link(@entity, handler: component_handler) %>
|
10
10
|
<span><%= t('.nav_text') %></span>
|
11
11
|
<% end %>
|
12
12
|
|
@@ -28,7 +28,7 @@
|
|
28
28
|
<% when :date %>
|
29
29
|
<%= f.date_field(field, options.merge(local_assigns[:options].to_h)) %>
|
30
30
|
<% when :datetime %>
|
31
|
-
<%= f.datetime_field(field, options.merge(local_assigns[:options].to_h)) %>
|
31
|
+
<%= f.datetime_field(field, options.merge(local_assigns[:options].to_h).merge(step: 1)) %>
|
32
32
|
<% when :url %>
|
33
33
|
<%= f.url_field(field, options.merge(local_assigns[:options].to_h)) %>
|
34
34
|
<% when :email %>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
options = {
|
6
6
|
class: 'input-text',
|
7
7
|
data: { check: field }.merge(local_assigns[:data].to_h),
|
8
|
-
|
8
|
+
maxlength: length_options[:maximum],
|
9
9
|
minlength: length_options[:minimum],
|
10
10
|
required: validators.select { |v| v.kind == :presence }.any?,
|
11
11
|
rows: 10,
|
@@ -5,7 +5,7 @@
|
|
5
5
|
options = {
|
6
6
|
class: 'input-text',
|
7
7
|
data: { check: field }.merge(local_assigns[:data].to_h),
|
8
|
-
|
8
|
+
maxlength: length_options[:maximum],
|
9
9
|
minlength: length_options[:minimum],
|
10
10
|
required: validators.select { |v| v.kind == :presence }.any?,
|
11
11
|
size: nil
|
@@ -11,7 +11,7 @@ module Biovision
|
|
11
11
|
helper_method :component_handler
|
12
12
|
helper_method :current_page, :param_from_request
|
13
13
|
helper_method :current_user, :current_language
|
14
|
-
helper_method :content_component
|
14
|
+
helper_method :content_component, :users_component
|
15
15
|
end
|
16
16
|
|
17
17
|
# Get current page number from request
|
@@ -53,6 +53,13 @@ module Biovision
|
|
53
53
|
@content_component ||= Biovision::Components::ContentComponent[current_user]
|
54
54
|
end
|
55
55
|
|
56
|
+
# Get users component handler
|
57
|
+
#
|
58
|
+
# @return [Biovision::Components::UsersComponent]
|
59
|
+
def users_component
|
60
|
+
@users_component ||= Biovision::Components::UsersComponent[current_user]
|
61
|
+
end
|
62
|
+
|
56
63
|
# @return [Agent]
|
57
64
|
def agent
|
58
65
|
@agent ||= Agent[request.user_agent || 'n/a']
|
data/lib/biovision/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: biovision
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.210512.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxim Khan-Magomedov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -92,14 +92,14 @@ dependencies:
|
|
92
92
|
requirements:
|
93
93
|
- - "~>"
|
94
94
|
- !ruby/object:Gem::Version
|
95
|
-
version: '0.
|
95
|
+
version: '0.30'
|
96
96
|
type: :runtime
|
97
97
|
prerelease: false
|
98
98
|
version_requirements: !ruby/object:Gem::Requirement
|
99
99
|
requirements:
|
100
100
|
- - "~>"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '0.
|
102
|
+
version: '0.30'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: kaminari
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -265,6 +265,7 @@ files:
|
|
265
265
|
- app/assets/stylesheets/biovision/themes/default_theme.scss
|
266
266
|
- app/assets/stylesheets/biovision/themes/default_theme/components.scss
|
267
267
|
- app/assets/stylesheets/biovision/themes/default_theme/components/users.scss
|
268
|
+
- app/assets/stylesheets/biovision/themes/default_theme/components/users/dashboard.scss
|
268
269
|
- app/assets/stylesheets/biovision/themes/default_theme/components/users/form_tabs.scss
|
269
270
|
- app/assets/stylesheets/biovision/themes/default_theme/components/users/profile.scss
|
270
271
|
- app/assets/stylesheets/biovision/themes/default_theme/layout.scss
|
@@ -305,6 +306,7 @@ files:
|
|
305
306
|
- app/lib/biovision/components/base/component_parameters.rb
|
306
307
|
- app/lib/biovision/components/base/component_privileges.rb
|
307
308
|
- app/lib/biovision/components/base/component_settings.rb
|
309
|
+
- app/lib/biovision/components/base/entity_links.rb
|
308
310
|
- app/lib/biovision/components/base_component.rb
|
309
311
|
- app/lib/biovision/components/contact_component.rb
|
310
312
|
- app/lib/biovision/components/content_component.rb
|
@@ -477,6 +479,7 @@ files:
|
|
477
479
|
- app/views/my/profiles/form/_sensitive_parameters.html.erb
|
478
480
|
- app/views/my/profiles/new.html.erb
|
479
481
|
- app/views/my/profiles/show.html.erb
|
482
|
+
- app/views/my/recoveries/show.html.erb
|
480
483
|
- app/views/shared/_breadcrumbs.html.erb
|
481
484
|
- app/views/shared/_cookie_notification.html.erb
|
482
485
|
- app/views/shared/_flash_messages.html.erb
|
@@ -572,7 +575,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
572
575
|
- !ruby/object:Gem::Version
|
573
576
|
version: '0'
|
574
577
|
requirements: []
|
575
|
-
rubygems_version: 3.
|
578
|
+
rubygems_version: 3.2.16
|
576
579
|
signing_key:
|
577
580
|
specification_version: 4
|
578
581
|
summary: Biovision CMS gem
|