tramway-admin 1.18.0.1 → 1.18.1
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/Rakefile +3 -5
- data/app/controllers/tramway/admin/application_controller.rb +3 -1
- data/app/controllers/tramway/admin/records_controller.rb +12 -10
- data/app/controllers/tramway/admin/singletons_controller.rb +4 -2
- data/app/controllers/tramway/admin/welcome_controller.rb +3 -2
- data/app/controllers/tramway/export/application_controller.rb +2 -0
- data/app/helpers/tramway/admin/additional_buttons_builder.rb +6 -6
- data/app/helpers/tramway/admin/application_helper.rb +2 -0
- data/app/helpers/tramway/admin/cases_helper.rb +2 -0
- data/app/helpers/tramway/admin/focus_generator_helper.rb +3 -1
- data/app/helpers/tramway/admin/inputs_helper.rb +6 -3
- data/app/helpers/tramway/admin/navbar_helper.rb +2 -0
- data/app/helpers/tramway/admin/records_helper.rb +24 -11
- data/app/helpers/tramway/admin/russian_cases_helper.rb +3 -0
- data/app/helpers/tramway/admin/singleton_helper.rb +3 -1
- data/app/jobs/tramway/admin/application_job.rb +2 -0
- data/app/mailers/tramway/admin/application_mailer.rb +2 -0
- data/app/models/tramway/user/user.rb +4 -2
- data/app/views/tramway/admin/shared/show/_associations.html.haml +1 -1
- data/config/initializers/assets.rb +3 -1
- data/config/initializers/ckeditor.rb +4 -2
- data/config/routes.rb +4 -4
- data/lib/tasks/tramway/admin_tasks.rake +2 -0
- data/lib/tramway/admin.rb +4 -4
- data/lib/tramway/admin/engine.rb +2 -0
- data/lib/tramway/admin/record_routes_helper.rb +2 -0
- data/lib/tramway/admin/version.rb +3 -1
- metadata +33 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4ae22115d6b8978b050c7b090d9c75a96a34495dfaa6ed27000e5f39b1d09fa9
|
4
|
+
data.tar.gz: 292ab0a60acca87a47584493e0037ca20d1f9a7f2361123d08b674bea5040a85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a584a11cc8d7f628c94dd73c449ff181efda27e33164e0f88c38c0290aefac0bf259723c17cc944decabf2f6ec82d5d2d01ebb700c8fabad0fa9053daf888b89
|
7
|
+
data.tar.gz: 8ae159127aee9165412773cc71b361ab75fac67993b5c1d85a1a044d9f9e08a7be46d2594f4c36fdd886436997e2b87d31400291377352dba69f54a5e9023f3d
|
data/Rakefile
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
begin
|
2
4
|
require 'bundler/setup'
|
3
5
|
rescue LoadError
|
@@ -14,14 +16,11 @@ RDoc::Task.new(:rdoc) do |rdoc|
|
|
14
16
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
15
17
|
end
|
16
18
|
|
17
|
-
APP_RAKEFILE = File.expand_path(
|
19
|
+
APP_RAKEFILE = File.expand_path('test/dummy/Rakefile', __dir__)
|
18
20
|
load 'rails/tasks/engine.rake'
|
19
21
|
|
20
|
-
|
21
22
|
load 'rails/tasks/statistics.rake'
|
22
23
|
|
23
|
-
|
24
|
-
|
25
24
|
require 'bundler/gem_tasks'
|
26
25
|
|
27
26
|
require 'rake/testtask'
|
@@ -32,5 +31,4 @@ Rake::TestTask.new(:test) do |t|
|
|
32
31
|
t.verbose = false
|
33
32
|
end
|
34
33
|
|
35
|
-
|
36
34
|
task default: :test
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'tramway/helpers/class_name_helpers'
|
2
4
|
|
3
5
|
module Tramway
|
@@ -57,7 +59,7 @@ module Tramway
|
|
57
59
|
end
|
58
60
|
|
59
61
|
def admin_form_class
|
60
|
-
if model_class.to_s.include?
|
62
|
+
if model_class.to_s.include? 'Tramway'
|
61
63
|
form_class_name
|
62
64
|
else
|
63
65
|
"::Admin::#{model_class}Form".constantize
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationController
|
2
4
|
def index
|
3
5
|
scope = params[:scope].present? ? params[:scope] : :all
|
@@ -11,29 +13,29 @@ class Tramway::Admin::RecordsController < ::Tramway::Admin::ApplicationControlle
|
|
11
13
|
@record = decorator_class.decorate model_class.active.find params[:id]
|
12
14
|
end
|
13
15
|
|
14
|
-
def
|
15
|
-
@record_form = admin_form_class.new model_class.
|
16
|
+
def new
|
17
|
+
@record_form = admin_form_class.new model_class.new
|
16
18
|
end
|
17
19
|
|
18
|
-
def
|
19
|
-
@record_form = admin_form_class.new model_class.
|
20
|
+
def create
|
21
|
+
@record_form = admin_form_class.new model_class.new
|
20
22
|
if @record_form.submit params[:record]
|
21
23
|
redirect_to params[:redirect] || record_path(@record_form.model)
|
22
24
|
else
|
23
|
-
render :
|
25
|
+
render :new
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
def
|
28
|
-
@record_form = admin_form_class.new model_class.
|
29
|
+
def edit
|
30
|
+
@record_form = admin_form_class.new model_class.active.find params[:id]
|
29
31
|
end
|
30
32
|
|
31
|
-
def
|
32
|
-
@record_form = admin_form_class.new model_class.
|
33
|
+
def update
|
34
|
+
@record_form = admin_form_class.new model_class.active.find params[:id]
|
33
35
|
if @record_form.submit params[:record]
|
34
36
|
redirect_to params[:redirect] || record_path(@record_form.model)
|
35
37
|
else
|
36
|
-
render :
|
38
|
+
render :edit
|
37
39
|
end
|
38
40
|
end
|
39
41
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Tramway::Admin
|
2
4
|
class SingletonsController < ApplicationController
|
3
5
|
def show
|
@@ -6,7 +8,7 @@ module Tramway::Admin
|
|
6
8
|
else
|
7
9
|
@singleton_form = form_class.new model_class.new
|
8
10
|
render :new
|
9
|
-
|
11
|
+
nil
|
10
12
|
end
|
11
13
|
end
|
12
14
|
|
@@ -35,7 +37,7 @@ module Tramway::Admin
|
|
35
37
|
|
36
38
|
private
|
37
39
|
|
38
|
-
# FIXME replace to module
|
40
|
+
# FIXME: replace to module
|
39
41
|
def singleton_path(*args, **options)
|
40
42
|
super args, options.merge(model: params[:model])
|
41
43
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Tramway::Admin::AdditionalButtonsBuilder
|
2
4
|
def build_buttons(additional_buttons)
|
3
5
|
if additional_buttons
|
4
|
-
additional_buttons = additional_buttons.is_a?(Hash) ? [
|
6
|
+
additional_buttons = additional_buttons.is_a?(Hash) ? [additional_buttons] : additional_buttons
|
5
7
|
additional_buttons.each do |button|
|
6
8
|
concat(
|
7
9
|
link_to(
|
@@ -16,7 +18,7 @@ module Tramway::Admin::AdditionalButtonsBuilder
|
|
16
18
|
)
|
17
19
|
end
|
18
20
|
end
|
19
|
-
|
21
|
+
nil
|
20
22
|
end
|
21
23
|
|
22
24
|
private
|
@@ -27,7 +29,7 @@ module Tramway::Admin::AdditionalButtonsBuilder
|
|
27
29
|
edit: { color: :warning, icon: :pencil },
|
28
30
|
update: { color: :warning, icon: :pencil },
|
29
31
|
delete: { color: :danger, icon: :remove }
|
30
|
-
}
|
32
|
+
}.freeze
|
31
33
|
|
32
34
|
def button_color(action)
|
33
35
|
BUTTON_STYLES[action][:color]
|
@@ -43,9 +45,7 @@ module Tramway::Admin::AdditionalButtonsBuilder
|
|
43
45
|
params.each do |model_name, model_attributes|
|
44
46
|
attributes = {}
|
45
47
|
model_attributes.each do |name, value|
|
46
|
-
if value.is_a? Proc
|
47
|
-
value = record.model.instance_exec(&value)
|
48
|
-
end
|
48
|
+
value = record.model.instance_exec(&value) if value.is_a? Proc
|
49
49
|
attributes.merge! name => value
|
50
50
|
end
|
51
51
|
param.merge! model_name => attributes
|
@@ -1,11 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Tramway
|
2
4
|
module Admin
|
3
5
|
module InputsHelper
|
4
6
|
def association_params(form_object:, property:, value:, object:)
|
5
7
|
full_class_name_association = form_object.class.full_class_name_association(property)
|
6
8
|
unless full_class_name_association
|
7
|
-
raise "It seems you\'ve defined association attributes with `property` method. Please, use `association` method. `association :#{property}`"
|
9
|
+
raise "It seems you\'ve defined association attributes with `property` method. Please, use `association` method. `association :#{property}`"
|
8
10
|
end
|
11
|
+
|
9
12
|
{
|
10
13
|
label: false,
|
11
14
|
input_html: {
|
@@ -16,7 +19,7 @@ module Tramway
|
|
16
19
|
selected: (form_object.model.send("#{property}_id") || value),
|
17
20
|
collection: full_class_name_association.active.map do |obj|
|
18
21
|
decorator_class(full_class_name_association).decorate obj
|
19
|
-
end.sort_by
|
22
|
+
end.sort_by(&:name)
|
20
23
|
}
|
21
24
|
end
|
22
25
|
|
@@ -49,7 +52,7 @@ module Tramway
|
|
49
52
|
when :polymorphic_association
|
50
53
|
{
|
51
54
|
id: params.dig(model_class.to_s.underscore, property.to_s),
|
52
|
-
type: params.dig(model_class.to_s.underscore, "#{property}_type")
|
55
|
+
type: params.dig(model_class.to_s.underscore, "#{property}_type")
|
53
56
|
}
|
54
57
|
else
|
55
58
|
params.dig(model_class.to_s.underscore, property.to_s)
|
@@ -1,6 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Tramway::Admin
|
2
4
|
module RecordsHelper
|
3
|
-
# FIXME replace to module
|
5
|
+
# FIXME: replace to module
|
4
6
|
def current_model_record_path(*args, **options)
|
5
7
|
record_path args, options.merge(model: params[:model])
|
6
8
|
end
|
@@ -29,7 +31,7 @@ module Tramway::Admin
|
|
29
31
|
"#{model_name || model_class}Decorator".constantize
|
30
32
|
end
|
31
33
|
|
32
|
-
def get_collection(
|
34
|
+
def get_collection(_model_class)
|
33
35
|
decorator_class.collections
|
34
36
|
end
|
35
37
|
|
@@ -38,7 +40,7 @@ module Tramway::Admin
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def search_tab_title(count)
|
41
|
-
"#{t(
|
43
|
+
"#{t('helpers.scope.found')} / #{count}"
|
42
44
|
end
|
43
45
|
|
44
46
|
def searchable_model?(model_class)
|
@@ -56,12 +58,12 @@ module Tramway::Admin
|
|
56
58
|
def collection_human_name(model_name:, collection_name:)
|
57
59
|
if t("default.collections.#{collection_name}").include?('<span')
|
58
60
|
t("collections.#{model_name}.#{collection_name}").pluralize(:ru)
|
59
|
-
else
|
61
|
+
else
|
60
62
|
t("default.collections.#{collection_name}")
|
61
63
|
end
|
62
64
|
end
|
63
65
|
|
64
|
-
def tab_title(model_class, tab, count,
|
66
|
+
def tab_title(model_class, tab, count, _state_method = :state)
|
65
67
|
model = model_class.name.underscore
|
66
68
|
name = collection_human_name model_name: model, collection_name: tab
|
67
69
|
params[:filter].present? ? name : "#{name} / #{count}"
|
@@ -73,12 +75,23 @@ module Tramway::Admin
|
|
73
75
|
end
|
74
76
|
|
75
77
|
def new_associated_record_path(object:, association:)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
unless association.options[:class_name].present?
|
79
|
+
raise "You should set `class_name` for #{association.name} association"
|
80
|
+
end
|
81
|
+
if association.polymorphic?
|
82
|
+
new_record_path model: association.class_name,
|
83
|
+
redirect: current_model_record_path(object),
|
84
|
+
association.options[:class_name].underscore => {
|
85
|
+
association.options[:as] => object.id,
|
86
|
+
association.type => object.class.model_name
|
87
|
+
}
|
88
|
+
else
|
89
|
+
new_record_path model: association.class_name,
|
90
|
+
redirect: current_model_record_path(object),
|
91
|
+
association.options[:class_name].underscore => {
|
92
|
+
object.model.class.name.underscore => object.id
|
93
|
+
}
|
94
|
+
end
|
82
95
|
end
|
83
96
|
end
|
84
97
|
end
|
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Tramway
|
2
4
|
module Admin
|
3
5
|
module RussianCasesHelper
|
4
6
|
def case_word(model_name, case_name)
|
5
7
|
word_case = I18n.t("cases.#{model_name.name.underscore}.#{case_name}")
|
6
8
|
return word_case if word_case.present?
|
9
|
+
|
7
10
|
raise "There is not #{case_name} implementation for \"#{model_name}\""
|
8
11
|
end
|
9
12
|
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
class Tramway::User::User < ::Tramway::Core::ApplicationRecord
|
2
|
-
has_secure_password #FIXME remove repeating from tramway-user
|
4
|
+
has_secure_password # FIXME: remove repeating from tramway-user
|
3
5
|
|
4
|
-
enumerize :role, in: [
|
6
|
+
enumerize :role, in: %i[user admin], default: :user
|
5
7
|
|
6
8
|
def admin?
|
7
9
|
role.admin?
|
@@ -2,7 +2,7 @@
|
|
2
2
|
%tr
|
3
3
|
%td
|
4
4
|
= model_class.human_attribute_name association.name
|
5
|
-
= link_to "Add #{model_class.human_attribute_name
|
5
|
+
= link_to "Add #{model_class.human_attribute_name(association.name).singularize}", new_associated_record_path(association: association, object: object), class: 'btn btn-primary'
|
6
6
|
%td{ colspan: 2 }
|
7
7
|
%table.table.table-striped.table-bordered
|
8
8
|
- object.send(association.name)&.each do |association_object|
|
@@ -1,5 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Ckeditor.setup do |config|
|
2
|
-
require
|
4
|
+
require 'ckeditor/orm/active_record'
|
3
5
|
|
4
|
-
config.assets_plugins = [
|
6
|
+
config.assets_plugins = %w[image copyformatting filebrowser sourcedialog]
|
5
7
|
end
|
data/config/routes.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
Tramway::Admin::Engine.routes.draw do
|
2
4
|
mount Tramway::Auth::Engine, at: '/auth'
|
3
|
-
if defined? Tramway::Export::Engine
|
4
|
-
mount Tramway::Export::Engine, at: '/'
|
5
|
-
end
|
5
|
+
mount Tramway::Export::Engine, at: '/' if defined? Tramway::Export::Engine
|
6
6
|
|
7
7
|
root to: 'welcome#index'
|
8
8
|
|
9
9
|
resources :records
|
10
|
-
resource :singleton, only: [
|
10
|
+
resource :singleton, only: %i[new create show edit update]
|
11
11
|
end
|
data/lib/tramway/admin.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'tramway/admin/engine'
|
2
4
|
require 'tramway/error'
|
3
5
|
|
@@ -35,7 +37,7 @@ module Tramway
|
|
35
37
|
if @available_models
|
36
38
|
@available_models.values.flatten
|
37
39
|
else
|
38
|
-
error = Tramway::Error.new(plugin: :admin, method: :available_models, message:
|
40
|
+
error = Tramway::Error.new(plugin: :admin, method: :available_models, message: 'List of available_models is empty. You should add some of them using `::Tramway::Admin.set_available_models(*list_of_classes, project: :your_project_name)` in `config/initializers/tramway.rb`')
|
39
41
|
raise error.message
|
40
42
|
end
|
41
43
|
end
|
@@ -70,9 +72,7 @@ module Tramway
|
|
70
72
|
@additional_buttons&.dig record, view
|
71
73
|
end
|
72
74
|
|
73
|
-
|
74
|
-
@customized_admin_navbar
|
75
|
-
end
|
75
|
+
attr_reader :customized_admin_navbar
|
76
76
|
|
77
77
|
def engine_class(project)
|
78
78
|
class_name = "::Tramway::#{project.to_s.camelize}"
|
data/lib/tramway/admin/engine.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tramway-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.18.
|
4
|
+
version: 1.18.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pavel Kalashnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-10-
|
11
|
+
date: 2019-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bootstrap-kaminari-views
|
@@ -39,45 +39,45 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 4.2.4
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: copyright_mafa
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '4.7'
|
48
45
|
- - ">="
|
49
46
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
47
|
+
version: 0.1.2
|
48
|
+
- - "~>"
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: 0.1.2
|
51
51
|
type: :runtime
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
|
-
- - "~>"
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '4.7'
|
58
55
|
- - ">="
|
59
56
|
- !ruby/object:Gem::Version
|
60
|
-
version:
|
57
|
+
version: 0.1.2
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: 0.1.2
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: font-awesome-rails
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
|
-
- - ">="
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 0.1.2
|
68
65
|
- - "~>"
|
69
66
|
- !ruby/object:Gem::Version
|
70
|
-
version:
|
67
|
+
version: '4.7'
|
68
|
+
- - ">="
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 4.7.0.1
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: 0.1.2
|
78
75
|
- - "~>"
|
79
76
|
- !ruby/object:Gem::Version
|
80
|
-
version:
|
77
|
+
version: '4.7'
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: 4.7.0.1
|
81
81
|
- !ruby/object:Gem::Dependency
|
82
82
|
name: kaminari
|
83
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -99,27 +99,21 @@ dependencies:
|
|
99
99
|
- !ruby/object:Gem::Version
|
100
100
|
version: 1.1.1
|
101
101
|
- !ruby/object:Gem::Dependency
|
102
|
-
name:
|
102
|
+
name: ransack
|
103
103
|
requirement: !ruby/object:Gem::Requirement
|
104
104
|
requirements:
|
105
105
|
- - ">="
|
106
106
|
- !ruby/object:Gem::Version
|
107
|
-
version: 0
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: 0.4.1
|
107
|
+
version: '0'
|
111
108
|
type: :runtime
|
112
109
|
prerelease: false
|
113
110
|
version_requirements: !ruby/object:Gem::Requirement
|
114
111
|
requirements:
|
115
112
|
- - ">="
|
116
113
|
- !ruby/object:Gem::Version
|
117
|
-
version: 0
|
118
|
-
- - "~>"
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
version: 0.4.1
|
114
|
+
version: '0'
|
121
115
|
- !ruby/object:Gem::Dependency
|
122
|
-
name:
|
116
|
+
name: selectize-rails
|
123
117
|
requirement: !ruby/object:Gem::Requirement
|
124
118
|
requirements:
|
125
119
|
- - ">="
|
@@ -133,19 +127,25 @@ dependencies:
|
|
133
127
|
- !ruby/object:Gem::Version
|
134
128
|
version: '0'
|
135
129
|
- !ruby/object:Gem::Dependency
|
136
|
-
name:
|
130
|
+
name: state_machine_buttons
|
137
131
|
requirement: !ruby/object:Gem::Requirement
|
138
132
|
requirements:
|
139
133
|
- - ">="
|
140
134
|
- !ruby/object:Gem::Version
|
141
|
-
version:
|
135
|
+
version: 0.4.1
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.4.1
|
142
139
|
type: :runtime
|
143
140
|
prerelease: false
|
144
141
|
version_requirements: !ruby/object:Gem::Requirement
|
145
142
|
requirements:
|
146
143
|
- - ">="
|
147
144
|
- !ruby/object:Gem::Version
|
148
|
-
version:
|
145
|
+
version: 0.4.1
|
146
|
+
- - "~>"
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: 0.4.1
|
149
149
|
description: Engine for admin
|
150
150
|
email:
|
151
151
|
- kalashnikovisme@gmail.com
|