redde 0.3.39 → 0.4.0
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 +5 -5
- data/.travis.yml +4 -1
- data/README.md +2 -2
- data/app/assets/javascripts/redde/index.js.coffee +14 -13
- data/app/assets/javascripts/redde/sortTree/index.js.coffee +1 -1
- data/app/assets/javascripts/redde/sortable.coffee +1 -1
- data/app/controllers/admin/base_controller.rb +18 -0
- data/app/helpers/redde/index_helper.rb +105 -103
- data/app/models/redde/photo.rb +1 -1
- data/app/models/redde/presence/view.rb +28 -0
- data/app/models/redde/presence.rb +5 -0
- data/app/views/admin/base/edit.html.haml +1 -1
- data/app/views/admin/redde_photos/_photo.haml +1 -1
- data/db/migrate/20160121152706_create_redde_photos.rb +1 -1
- data/lib/redde/engine.rb +4 -1
- data/lib/redde/version.rb +1 -1
- data/lib/redde.rb +1 -0
- data/redde.gemspec +4 -2
- metadata +39 -10
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: b5e0be1b746e4912e3b8956e5b8425449cc99cd59a7898cd344298c2981f6534
|
|
4
|
+
data.tar.gz: c7fc72bd1781b24ad1d20e09eb6fa99fa70927154d4814d704f17de7f9fe7185
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: cfc5dc125bacb07fb1eec37085685e253d8ed2637f764aa5bc6417597c29f1adb29c95fc40c665284154a5178bd3760aa495627a310279c369bc6ad621ee7230
|
|
7
|
+
data.tar.gz: 1a1b284210da57a843253d91537fd1d229cade37b37d082122888957f96dfbeeeab8166335b809f956ca65917da2428f6a079c8c2036b085e5428b477b992c2f
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Redde
|
|
2
|
-
[](https://travis-ci.org/redde/redde)
|
|
3
|
+
[](https://codeclimate.com/github/redde/redde)
|
|
4
4
|
|
|
5
5
|
Admin generator for redde projects
|
|
6
6
|
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
#= require jquery
|
|
2
|
-
#= require jquery_ujs
|
|
3
|
-
|
|
4
|
-
# Пока подключаем все подряд, потом сделать кастомизацию
|
|
5
|
-
#= require ./sortable
|
|
6
|
-
#= require ./sortTree
|
|
7
|
-
#= require ./fileapi
|
|
8
|
-
#= require ./redactor
|
|
9
|
-
#= require ./file
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
#= require jquery
|
|
2
|
+
#= require jquery_ujs
|
|
3
|
+
|
|
4
|
+
# Пока подключаем все подряд, потом сделать кастомизацию
|
|
5
|
+
#= require ./sortable
|
|
6
|
+
#= require ./sortTree
|
|
7
|
+
#= require ./fileapi
|
|
8
|
+
#= require ./redactor
|
|
9
|
+
#= require ./file
|
|
10
|
+
#= require message-bus
|
|
11
|
+
|
|
12
|
+
$ ->
|
|
13
|
+
$(document).on 'click', '[data-href]', (e)->
|
|
14
|
+
location.href = $(e.currentTarget).data('href')
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
class Admin::BaseController < ActionController::Base
|
|
2
2
|
layout 'redde'
|
|
3
3
|
before_action :authenticate_manager!
|
|
4
|
+
after_action :track_viewer, only: [:edit, :update]
|
|
4
5
|
protect_from_forgery with: :exception
|
|
5
6
|
include Redde::AdminHelper
|
|
6
7
|
include Redde::IndexHelper
|
|
@@ -71,6 +72,23 @@ class Admin::BaseController < ActionController::Base
|
|
|
71
72
|
'сохранена'
|
|
72
73
|
end
|
|
73
74
|
|
|
75
|
+
def use_presence?
|
|
76
|
+
defined?(Redis)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
def item
|
|
80
|
+
instance_variable_get("@#{record}")
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def track_viewer
|
|
84
|
+
Redde::Presence::View.new(item, current_manager.id).view if item.present?
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
def viewers
|
|
88
|
+
@viewers ||= Manager.where(Redde::Presence::View.viewers_of(item)) if item
|
|
89
|
+
end
|
|
90
|
+
helper_method :viewers
|
|
91
|
+
|
|
74
92
|
def url_for_obj(obj, custom_url = nil)
|
|
75
93
|
return custom_url if custom_url.present?
|
|
76
94
|
return [:edit, :admin, obj] if params[:commit] == 'Применить'
|
|
@@ -11,108 +11,6 @@ module Redde::IndexHelper
|
|
|
11
11
|
model_name.columns.select { |i| i.type == :string }.first
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
class IndexBuilder
|
|
15
|
-
include ActionView::Helpers::TagHelper
|
|
16
|
-
include ActionView::Context
|
|
17
|
-
|
|
18
|
-
attr_accessor :list, :params
|
|
19
|
-
|
|
20
|
-
def initialize(list, params)
|
|
21
|
-
@list = list
|
|
22
|
-
@params = params
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def empty( options = {} )
|
|
26
|
-
content_tag(:th, "", class: ['list__head', options[:class]])
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def thead insert
|
|
30
|
-
content_tag :thead do
|
|
31
|
-
content_tag(:tr, empty + visible + insert + empty(class: 'list__head_del') + empty)
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def visible
|
|
36
|
-
empty(class: '_eye') if list.column_names.include?('visible')
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
class IndexHeadCellBuilder
|
|
40
|
-
include ActionView::Helpers::TagHelper
|
|
41
|
-
include ActionView::Context
|
|
42
|
-
|
|
43
|
-
attr_accessor :list
|
|
44
|
-
|
|
45
|
-
def initialize(list)
|
|
46
|
-
@list = list
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def cell field = nil, options = {}, &block
|
|
50
|
-
if field.is_a?(Symbol) || field.is_a?(String)
|
|
51
|
-
content_tag :th, list.human_attribute_name(field), class: ['list__head', options[:class]]
|
|
52
|
-
elsif field.is_a?(Hash)
|
|
53
|
-
content_tag :th, "", class: ['list__head', field[:class]]
|
|
54
|
-
elsif field.nil?
|
|
55
|
-
content_tag :th, "", class: 'list__head'
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
class IndexCellBuilder
|
|
61
|
-
include ActionView::Helpers
|
|
62
|
-
include ActionView::Context
|
|
63
|
-
include ActionView::Helpers::UrlHelper
|
|
64
|
-
include Rails.application.routes.url_helpers
|
|
65
|
-
include Haml::Helpers
|
|
66
|
-
|
|
67
|
-
attr_accessor :item, :builder
|
|
68
|
-
|
|
69
|
-
def initialize(item, builder)
|
|
70
|
-
@item = item
|
|
71
|
-
@builder = builder
|
|
72
|
-
init_haml_helpers
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def self.content value
|
|
76
|
-
case value.class.name
|
|
77
|
-
when 'Time' then I18n.l(value, format: '%d %b %Y, %H:%M')
|
|
78
|
-
when 'Date' then I18n.l(value, format: '%d %b %Y')
|
|
79
|
-
else
|
|
80
|
-
value
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def cell(field, options = {}, &block)
|
|
85
|
-
# через content_tag ... do не работает
|
|
86
|
-
if field.is_a?(Hash)
|
|
87
|
-
content_tag :td, capture(&block), class: ['list__cell', field[:class]]
|
|
88
|
-
else
|
|
89
|
-
content_tag :td, if block_given? then capture(&block) else IndexCellBuilder.content(item.send(field)) end, class: ['list__cell', options[:class]]
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
def empty(options = {})
|
|
94
|
-
content_tag(:td, "", class: ['list__cell', options[:class]])
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def handle
|
|
98
|
-
return content_tag(:td, "", class: ['list__cell', '_handle'], 'data-sortable-handle' => "") if item.class.column_names.include?('position')
|
|
99
|
-
empty
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
def visible
|
|
103
|
-
content_tag :td, class: 'list__cell _eye' do
|
|
104
|
-
link_to('', url_for(id: item, controller: builder.params[:controller], action: :update, item.class.model_name.param_key => { visible: !item.visible} ), class: ['list__eye', ('_disactive' if !item.visible)], data: { method: 'put' })
|
|
105
|
-
end if item.class.column_names.include?('visible')
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def del
|
|
109
|
-
content_tag :td, class: 'list__cell list__cell_del' do
|
|
110
|
-
link_to('', url_for(id: item, action: :destroy, controller: builder.params[:controller]), method: :delete, data: { confirm: 'Точно удалить?' }, class: 'list__del')
|
|
111
|
-
end
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
14
|
def list_table(list, options = {}, &block)
|
|
117
15
|
raise ArgumentError, "Missing block" unless block_given?
|
|
118
16
|
builder = IndexBuilder.new(list, params)
|
|
@@ -233,7 +131,111 @@ module Redde::IndexHelper
|
|
|
233
131
|
end
|
|
234
132
|
|
|
235
133
|
def index_value_for(item, column)
|
|
236
|
-
|
|
134
|
+
"#{item.model_name}::INDEX_COLUMNS".constantize[column.to_sym].call(item)
|
|
135
|
+
rescue
|
|
237
136
|
item.send(column)
|
|
238
137
|
end
|
|
138
|
+
|
|
139
|
+
class IndexBuilder
|
|
140
|
+
include ActionView::Helpers::TagHelper
|
|
141
|
+
include ActionView::Context
|
|
142
|
+
|
|
143
|
+
attr_accessor :list, :params
|
|
144
|
+
|
|
145
|
+
def initialize(list, params)
|
|
146
|
+
@list = list
|
|
147
|
+
@params = params
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
def empty( options = {} )
|
|
151
|
+
content_tag(:th, "", class: ['list__head', options[:class]])
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def thead insert
|
|
155
|
+
content_tag :thead do
|
|
156
|
+
content_tag(:tr, empty + visible + insert + empty(class: 'list__head_del') + empty)
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def visible
|
|
161
|
+
empty(class: '_eye') if list.column_names.include?('visible')
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
class IndexHeadCellBuilder
|
|
165
|
+
include ActionView::Helpers::TagHelper
|
|
166
|
+
include ActionView::Context
|
|
167
|
+
|
|
168
|
+
attr_accessor :list
|
|
169
|
+
|
|
170
|
+
def initialize(list)
|
|
171
|
+
@list = list
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def cell field = nil, options = {}, &block
|
|
175
|
+
if field.is_a?(Symbol) || field.is_a?(String)
|
|
176
|
+
content_tag :th, list.human_attribute_name(field), class: ['list__head', options[:class]]
|
|
177
|
+
elsif field.is_a?(Hash)
|
|
178
|
+
content_tag :th, "", class: ['list__head', field[:class]]
|
|
179
|
+
elsif field.nil?
|
|
180
|
+
content_tag :th, "", class: 'list__head'
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
class IndexCellBuilder
|
|
186
|
+
include ActionView::Helpers
|
|
187
|
+
include ActionView::Context
|
|
188
|
+
include ActionView::Helpers::UrlHelper
|
|
189
|
+
include Redde::IndexHelper
|
|
190
|
+
include Rails.application.routes.url_helpers
|
|
191
|
+
include Haml::Helpers
|
|
192
|
+
|
|
193
|
+
attr_accessor :item, :builder
|
|
194
|
+
|
|
195
|
+
def initialize(item, builder)
|
|
196
|
+
@item = item
|
|
197
|
+
@builder = builder
|
|
198
|
+
init_haml_helpers
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
def self.content(value)
|
|
202
|
+
case value.class.name
|
|
203
|
+
when 'Time' then I18n.l(value, format: '%d %b %Y, %H:%M')
|
|
204
|
+
when 'Date' then I18n.l(value, format: '%d %b %Y')
|
|
205
|
+
else
|
|
206
|
+
value
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def cell(field, options = {}, &block)
|
|
211
|
+
# через content_tag ... do не работает
|
|
212
|
+
if field.is_a?(Hash)
|
|
213
|
+
content_tag :td, capture(&block), class: ['list__cell', field[:class]]
|
|
214
|
+
else
|
|
215
|
+
content_tag :td, if block_given? then capture(&block) else raw(IndexCellBuilder.content(index_value_for(item, field))) end, class: ['list__cell', options[:class]]
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
def empty(options = {})
|
|
220
|
+
content_tag(:td, "", class: ['list__cell', options[:class]])
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
def handle
|
|
224
|
+
return content_tag(:td, "", class: ['list__cell', '_handle'], 'data-sortable-handle' => "") if item.class.column_names.include?('position')
|
|
225
|
+
empty
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
def visible
|
|
229
|
+
content_tag :td, class: 'list__cell _eye' do
|
|
230
|
+
link_to('', url_for(id: item, controller: builder.params[:controller], action: :update, item.class.model_name.param_key => { visible: !item.visible} ), class: ['list__eye', ('_disactive' if !item.visible)], data: { method: 'put' })
|
|
231
|
+
end if item.class.column_names.include?('visible')
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
def del
|
|
235
|
+
content_tag :td, class: 'list__cell list__cell_del' do
|
|
236
|
+
link_to('', url_for(id: item, action: :destroy, controller: builder.params[:controller]), method: :delete, data: { confirm: 'Точно удалить?' }, class: 'list__del')
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
end
|
|
240
|
+
end
|
|
239
241
|
end
|
data/app/models/redde/photo.rb
CHANGED
|
@@ -2,7 +2,7 @@ class Redde::Photo < ActiveRecord::Base
|
|
|
2
2
|
mount_uploader :src, PhotoUploader
|
|
3
3
|
self.table_name = 'redde_photos'
|
|
4
4
|
|
|
5
|
-
belongs_to :imageable, polymorphic: true
|
|
5
|
+
belongs_to :imageable, polymorphic: true, optional: true
|
|
6
6
|
default_scope { order(:position) }
|
|
7
7
|
before_save :set_token, unless: :persisted_link?
|
|
8
8
|
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Redde
|
|
2
|
+
module Presence
|
|
3
|
+
class View
|
|
4
|
+
attr_reader :obj, :user_id
|
|
5
|
+
TTL = 15
|
|
6
|
+
|
|
7
|
+
def initialize(obj, user_id)
|
|
8
|
+
@obj = obj
|
|
9
|
+
@user_id = user_id
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def self.viewers_of(obj)
|
|
13
|
+
Redis.current.keys("#{obj.class.name}:#{obj.id}:*").map do |key|
|
|
14
|
+
key.split(':').last.to_i
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def view
|
|
19
|
+
Redis.current.set(key, 1)
|
|
20
|
+
Redis.current.expire(key, TTL)
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def key
|
|
24
|
+
"#{obj.class.name}:#{obj.id}:#{user_id}"
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
%li.photos__item{ :id => "photo_#{photo.id}" }
|
|
2
2
|
= link_to photo.src_url, class: 'photos__link' do
|
|
3
|
-
= image_tag photo.
|
|
3
|
+
= image_tag photo.src_url(:admin), class: 'photos__img'
|
|
4
4
|
%span.photos__title= photo.src.file.filename
|
|
5
5
|
= link_to("",
|
|
6
6
|
url_for([:admin, photo]),
|
data/lib/redde/engine.rb
CHANGED
|
@@ -2,7 +2,7 @@ module Redde
|
|
|
2
2
|
class Engine < ::Rails::Engine
|
|
3
3
|
config.generators do |g|
|
|
4
4
|
g.test_framework :rspec, fixture: false
|
|
5
|
-
g.fixture_replacement :
|
|
5
|
+
g.fixture_replacement :factory_bot, dir: 'spec/factories'
|
|
6
6
|
g.assets false
|
|
7
7
|
g.helper false
|
|
8
8
|
end
|
|
@@ -11,5 +11,8 @@ module Redde
|
|
|
11
11
|
redde/favicon.png
|
|
12
12
|
)
|
|
13
13
|
end
|
|
14
|
+
initializer 'ReddeEngine.add_message_bus' do |app|
|
|
15
|
+
app.middleware.use MessageBus::Rack::Middleware
|
|
16
|
+
end
|
|
14
17
|
end
|
|
15
18
|
end
|
data/lib/redde/version.rb
CHANGED
data/lib/redde.rb
CHANGED
data/redde.gemspec
CHANGED
|
@@ -29,22 +29,24 @@ Gem::Specification.new do |spec|
|
|
|
29
29
|
spec.add_runtime_dependency 'mini_magick'
|
|
30
30
|
spec.add_runtime_dependency 'kaminari'
|
|
31
31
|
spec.add_runtime_dependency 'ancestry'
|
|
32
|
+
spec.add_runtime_dependency 'message_bus'
|
|
33
|
+
spec.add_runtime_dependency 'redis'
|
|
32
34
|
spec.add_dependency 'rails', '>= 3.1'
|
|
33
35
|
spec.add_dependency 'sass-rails'
|
|
34
36
|
|
|
35
37
|
spec.add_development_dependency 'bundler'
|
|
36
38
|
spec.add_development_dependency 'rake'
|
|
37
39
|
spec.add_development_dependency 'rspec-rails', '>= 2.7'
|
|
38
|
-
spec.add_development_dependency '
|
|
40
|
+
spec.add_development_dependency 'factory_bot_rails', '>= 2.7'
|
|
39
41
|
spec.add_development_dependency 'guard-rspec'
|
|
40
42
|
spec.add_development_dependency 'sqlite3'
|
|
41
43
|
spec.add_development_dependency 'generator_spec'
|
|
42
44
|
spec.add_development_dependency 'devise'
|
|
43
45
|
spec.add_development_dependency 'coffee-rails'
|
|
44
46
|
spec.add_development_dependency 'sprockets-rails'
|
|
45
|
-
spec.add_development_dependency 'quiet_assets'
|
|
46
47
|
spec.add_development_dependency 'capybara'
|
|
47
48
|
spec.add_development_dependency 'ffaker'
|
|
48
49
|
spec.add_development_dependency 'rubocop'
|
|
49
50
|
spec.add_development_dependency 'launchy'
|
|
51
|
+
spec.add_development_dependency 'puma'
|
|
50
52
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: redde
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Oleg Bovykin
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: exe
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date:
|
|
12
|
+
date: 2019-07-09 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: jquery-rails
|
|
@@ -151,6 +151,34 @@ dependencies:
|
|
|
151
151
|
- - ">="
|
|
152
152
|
- !ruby/object:Gem::Version
|
|
153
153
|
version: '0'
|
|
154
|
+
- !ruby/object:Gem::Dependency
|
|
155
|
+
name: message_bus
|
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
|
157
|
+
requirements:
|
|
158
|
+
- - ">="
|
|
159
|
+
- !ruby/object:Gem::Version
|
|
160
|
+
version: '0'
|
|
161
|
+
type: :runtime
|
|
162
|
+
prerelease: false
|
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
164
|
+
requirements:
|
|
165
|
+
- - ">="
|
|
166
|
+
- !ruby/object:Gem::Version
|
|
167
|
+
version: '0'
|
|
168
|
+
- !ruby/object:Gem::Dependency
|
|
169
|
+
name: redis
|
|
170
|
+
requirement: !ruby/object:Gem::Requirement
|
|
171
|
+
requirements:
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: '0'
|
|
175
|
+
type: :runtime
|
|
176
|
+
prerelease: false
|
|
177
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
178
|
+
requirements:
|
|
179
|
+
- - ">="
|
|
180
|
+
- !ruby/object:Gem::Version
|
|
181
|
+
version: '0'
|
|
154
182
|
- !ruby/object:Gem::Dependency
|
|
155
183
|
name: rails
|
|
156
184
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -222,7 +250,7 @@ dependencies:
|
|
|
222
250
|
- !ruby/object:Gem::Version
|
|
223
251
|
version: '2.7'
|
|
224
252
|
- !ruby/object:Gem::Dependency
|
|
225
|
-
name:
|
|
253
|
+
name: factory_bot_rails
|
|
226
254
|
requirement: !ruby/object:Gem::Requirement
|
|
227
255
|
requirements:
|
|
228
256
|
- - ">="
|
|
@@ -320,7 +348,7 @@ dependencies:
|
|
|
320
348
|
- !ruby/object:Gem::Version
|
|
321
349
|
version: '0'
|
|
322
350
|
- !ruby/object:Gem::Dependency
|
|
323
|
-
name:
|
|
351
|
+
name: capybara
|
|
324
352
|
requirement: !ruby/object:Gem::Requirement
|
|
325
353
|
requirements:
|
|
326
354
|
- - ">="
|
|
@@ -334,7 +362,7 @@ dependencies:
|
|
|
334
362
|
- !ruby/object:Gem::Version
|
|
335
363
|
version: '0'
|
|
336
364
|
- !ruby/object:Gem::Dependency
|
|
337
|
-
name:
|
|
365
|
+
name: ffaker
|
|
338
366
|
requirement: !ruby/object:Gem::Requirement
|
|
339
367
|
requirements:
|
|
340
368
|
- - ">="
|
|
@@ -348,7 +376,7 @@ dependencies:
|
|
|
348
376
|
- !ruby/object:Gem::Version
|
|
349
377
|
version: '0'
|
|
350
378
|
- !ruby/object:Gem::Dependency
|
|
351
|
-
name:
|
|
379
|
+
name: rubocop
|
|
352
380
|
requirement: !ruby/object:Gem::Requirement
|
|
353
381
|
requirements:
|
|
354
382
|
- - ">="
|
|
@@ -362,7 +390,7 @@ dependencies:
|
|
|
362
390
|
- !ruby/object:Gem::Version
|
|
363
391
|
version: '0'
|
|
364
392
|
- !ruby/object:Gem::Dependency
|
|
365
|
-
name:
|
|
393
|
+
name: launchy
|
|
366
394
|
requirement: !ruby/object:Gem::Requirement
|
|
367
395
|
requirements:
|
|
368
396
|
- - ">="
|
|
@@ -376,7 +404,7 @@ dependencies:
|
|
|
376
404
|
- !ruby/object:Gem::Version
|
|
377
405
|
version: '0'
|
|
378
406
|
- !ruby/object:Gem::Dependency
|
|
379
|
-
name:
|
|
407
|
+
name: puma
|
|
380
408
|
requirement: !ruby/object:Gem::Requirement
|
|
381
409
|
requirements:
|
|
382
410
|
- - ">="
|
|
@@ -518,6 +546,8 @@ files:
|
|
|
518
546
|
- app/models/concerns/redde/tree_sortable.rb
|
|
519
547
|
- app/models/concerns/redde/with_photo.rb
|
|
520
548
|
- app/models/redde/photo.rb
|
|
549
|
+
- app/models/redde/presence.rb
|
|
550
|
+
- app/models/redde/presence/view.rb
|
|
521
551
|
- app/models/redde/system_command.rb
|
|
522
552
|
- app/models/redde/url_generator.rb
|
|
523
553
|
- app/uploaders/photo_uploader.rb
|
|
@@ -585,8 +615,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
585
615
|
- !ruby/object:Gem::Version
|
|
586
616
|
version: '0'
|
|
587
617
|
requirements: []
|
|
588
|
-
|
|
589
|
-
rubygems_version: 2.4.5.1
|
|
618
|
+
rubygems_version: 3.0.4
|
|
590
619
|
signing_key:
|
|
591
620
|
specification_version: 4
|
|
592
621
|
summary: Admin scaffold generator for redde projects
|