administrate-field-active_storage 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (100) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +36 -14
  4. data/administrate-field-active_storage.gemspec +1 -1
  5. data/app/views/fields/active_storage/_form.html.erb +7 -0
  6. data/app/views/fields/active_storage/_item.html.erb +34 -1
  7. data/app/views/fields/active_storage/_items.html.erb +25 -0
  8. data/app/views/fields/active_storage/_show.html.erb +2 -8
  9. data/contribute.md +5 -1
  10. data/example-project/.gitignore +30 -0
  11. data/example-project/.ruby-version +1 -0
  12. data/example-project/Gemfile +66 -0
  13. data/example-project/Gemfile.lock +263 -0
  14. data/example-project/README.md +24 -0
  15. data/example-project/Rakefile +6 -0
  16. data/example-project/app/assets/config/manifest.js +3 -0
  17. data/example-project/app/assets/images/.keep +0 -0
  18. data/example-project/app/assets/javascripts/application.js +16 -0
  19. data/example-project/app/assets/javascripts/cable.js +13 -0
  20. data/example-project/app/assets/javascripts/channels/.keep +0 -0
  21. data/example-project/app/assets/stylesheets/application.css +15 -0
  22. data/example-project/app/channels/application_cable/channel.rb +4 -0
  23. data/example-project/app/channels/application_cable/connection.rb +4 -0
  24. data/example-project/app/controllers/admin/application_controller.rb +21 -0
  25. data/example-project/app/controllers/admin/users_controller.rb +21 -0
  26. data/example-project/app/controllers/application_controller.rb +2 -0
  27. data/example-project/app/controllers/concerns/.keep +0 -0
  28. data/example-project/app/controllers/users_controller.rb +7 -0
  29. data/example-project/app/dashboards/user_dashboard.rb +58 -0
  30. data/example-project/app/helpers/application_helper.rb +2 -0
  31. data/example-project/app/jobs/application_job.rb +2 -0
  32. data/example-project/app/mailers/application_mailer.rb +4 -0
  33. data/example-project/app/models/application_record.rb +3 -0
  34. data/example-project/app/models/concerns/.keep +0 -0
  35. data/example-project/app/models/user.rb +3 -0
  36. data/example-project/app/views/layouts/application.html.erb +15 -0
  37. data/example-project/app/views/layouts/mailer.html.erb +13 -0
  38. data/example-project/app/views/layouts/mailer.text.erb +1 -0
  39. data/example-project/bin/bundle +3 -0
  40. data/example-project/bin/rails +9 -0
  41. data/example-project/bin/rake +9 -0
  42. data/example-project/bin/setup +36 -0
  43. data/example-project/bin/spring +17 -0
  44. data/example-project/bin/update +31 -0
  45. data/example-project/bin/yarn +11 -0
  46. data/example-project/config.ru +5 -0
  47. data/example-project/config/application.rb +19 -0
  48. data/example-project/config/boot.rb +4 -0
  49. data/example-project/config/cable.yml +10 -0
  50. data/example-project/config/credentials.yml.enc +1 -0
  51. data/example-project/config/database.yml +25 -0
  52. data/example-project/config/environment.rb +5 -0
  53. data/example-project/config/environments/development.rb +61 -0
  54. data/example-project/config/environments/production.rb +94 -0
  55. data/example-project/config/environments/test.rb +46 -0
  56. data/example-project/config/initializers/application_controller_renderer.rb +8 -0
  57. data/example-project/config/initializers/assets.rb +14 -0
  58. data/example-project/config/initializers/backtrace_silencers.rb +7 -0
  59. data/example-project/config/initializers/content_security_policy.rb +25 -0
  60. data/example-project/config/initializers/cookies_serializer.rb +5 -0
  61. data/example-project/config/initializers/filter_parameter_logging.rb +4 -0
  62. data/example-project/config/initializers/inflections.rb +16 -0
  63. data/example-project/config/initializers/mime_types.rb +4 -0
  64. data/example-project/config/initializers/wrap_parameters.rb +14 -0
  65. data/example-project/config/locales/en.yml +33 -0
  66. data/example-project/config/puma.rb +34 -0
  67. data/example-project/config/routes.rb +9 -0
  68. data/example-project/config/spring.rb +6 -0
  69. data/example-project/config/storage.yml +34 -0
  70. data/example-project/db/migrate/20181013145025_create_users.rb +9 -0
  71. data/example-project/db/migrate/20181221134334_create_active_storage_tables.active_storage.rb +26 -0
  72. data/example-project/db/schema.rb +42 -0
  73. data/example-project/db/seeds.rb +7 -0
  74. data/example-project/lib/assets/.keep +0 -0
  75. data/example-project/lib/tasks/.keep +0 -0
  76. data/example-project/log/.keep +0 -0
  77. data/example-project/package.json +5 -0
  78. data/example-project/public/404.html +67 -0
  79. data/example-project/public/422.html +67 -0
  80. data/example-project/public/500.html +66 -0
  81. data/example-project/public/apple-touch-icon-precomposed.png +0 -0
  82. data/example-project/public/apple-touch-icon.png +0 -0
  83. data/example-project/public/favicon.ico +0 -0
  84. data/example-project/public/robots.txt +1 -0
  85. data/example-project/test/application_system_test_case.rb +5 -0
  86. data/example-project/test/controllers/.keep +0 -0
  87. data/example-project/test/fixtures/.keep +0 -0
  88. data/example-project/test/fixtures/files/.keep +0 -0
  89. data/example-project/test/fixtures/users.yml +7 -0
  90. data/example-project/test/helpers/.keep +0 -0
  91. data/example-project/test/integration/.keep +0 -0
  92. data/example-project/test/mailers/.keep +0 -0
  93. data/example-project/test/models/.keep +0 -0
  94. data/example-project/test/models/user_test.rb +7 -0
  95. data/example-project/test/system/.keep +0 -0
  96. data/example-project/test/test_helper.rb +10 -0
  97. data/example-project/tmp/.keep +0 -0
  98. data/example-project/vendor/.keep +0 -0
  99. data/lib/administrate/field/active_storage.rb +15 -0
  100. metadata +92 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 90caaf4c6fe823ec5996eec5848f27dd93fc0025
4
- data.tar.gz: cdfdf97f2bbf930878c2e9317634bc7b72a01e1b
3
+ metadata.gz: 9e3e3647b9b229f49a3072af6f62b72bc9d55976
4
+ data.tar.gz: 5d6b454861f7e2e03e1cd0f7d8a99bab189c8748
5
5
  SHA512:
6
- metadata.gz: 32a5196ddcb39b7b740a30d1a17cd5313c168554b42fbfa75e4239b815f1cc4d9008db95c807020ab041c0aeac5568e05b3ea2b5ed74cfa8671ea93a3cfdabac
7
- data.tar.gz: 8f269a049d8bbaa83a993bd7d2a5d7ccdcaf8ccf3b72b8c6049c7aebfb4c5098ea03c8f8c49d8a62fcc69e7edd5eefa530b417a6e65ff5f1641eab62a9230432
6
+ metadata.gz: dfc0eb316fb73d319b0d92b918472e98fa1e66625bb1e36bccbf02c1d1b61eda74a61cddb0d67e429473e7f8ce9729d965957cd3f9788e662f46cbc2073a478f
7
+ data.tar.gz: c6f7543548f1039e099c65706f9b0bf70786d8fe531cd32ef6aeb6c593279c8aae0ab35c50758fdf5954700ff26bd53ec47c04c369489b3e11a8a94bf5606d7f
data/.gitignore CHANGED
@@ -8,3 +8,4 @@
8
8
  /spec/reports/
9
9
  /tmp/
10
10
  *.gem
11
+ .DS_Store
data/README.md CHANGED
@@ -1,11 +1,11 @@
1
1
  # Administrate::Field::ActiveStorage
2
2
  ![rails](https://img.shields.io/badge/rails-%3E%3D5.2.0-red.svg)
3
+
3
4
  ## Things To Know:
4
- - to preview pdf files you need to install `mupdf` or `Poppler`.
5
- - to preview video files you need to install `ffmpeg`.
5
+ - To preview pdf files you need to install `mupdf` or `Poppler`.
6
+ - To preview video files you need to install `ffmpeg`.
6
7
 
7
8
  ## How To Use:
8
-
9
9
  Add `administrate-field-active_storage` to your Gemfile:
10
10
 
11
11
  ```ruby
@@ -19,7 +19,7 @@ $ bundle install
19
19
  ```
20
20
 
21
21
  ### `has_one_attached`:
22
- assuming your modelname is `Model` and field name is `attachment`
22
+ Assuming your model name is `Model` and field name is `attachment`
23
23
  ```ruby
24
24
  class ModelDashboard < Administrate::BaseDashboard
25
25
  ATTRIBUTE_TYPES = {
@@ -28,11 +28,10 @@ class ModelDashboard < Administrate::BaseDashboard
28
28
  # ...
29
29
  ```
30
30
  Then add `:attachment` to `FORM_ATTRIBUTES` and `SHOW_PAGE_ATTRIBUTES`.
31
- currently adding `:attachment` `COLLECTION_ATTRIBUTES` will work but will probably look too big.
31
+ Adding `:attachment` `COLLECTION_ATTRIBUTES` will work but will probably look too big.
32
32
 
33
33
  ### `has_many_attached`:
34
- assuming your modelname is `Model` and field name is `attachments`
35
- the processs is identical the only issue is that the form field isn't being permitted, in order to permit it we apply the following method to the dashboard:
34
+ Assuming your model name is `Model` and field name is `attachments` the process is identical the only issue is that the form field isn't being permitted, in order to permit it we apply the following method to the dashboard:
36
35
 
37
36
  ```ruby
38
37
  class ModelDashboard < Administrate::BaseDashboard
@@ -51,10 +50,33 @@ class ModelDashboard < Administrate::BaseDashboard
51
50
  super + [:attachments => []]
52
51
  end
53
52
  ```
54
- i know it is not ideal, if you have a workaround please submit a PR
53
+ I know it is not ideal, if you have a workaround please submit a PR.
54
+
55
+ ### Removing/Deleting an Attachment
56
+ In order to allow the user to delete an attachment using the admin dashboard you need to do the following:
57
+ 1. create a controller action with a `delete` route
58
+ 2. point the `Field::ActiveStorage` field to that route
59
+
60
+ here is an example (send the route name as a symbol):
61
+ ```ruby
62
+ class ModelDashboard < Administrate::BaseDashboard
63
+ ATTRIBUTE_TYPES = {
64
+ attachment: Field::ActiveStorage.with_options({destroy_path: :custom_active_storage_destroy_path}),
65
+ }
66
+ # ...
67
+ ```
68
+ Your `routes.rb` file must point to a controller action with method `delete` which should contain the following piece of code (you can modify to your own liking).
69
+ **FOR SECURITY REASONS** please check if the current user is allowed to remove such file
70
+ ```ruby
71
+ def remove_attachment
72
+ attachment = ActiveStorage::Attachment.find(params[:attachment_id])
73
+ attachment.purge
74
+ redirect_back(fallback_location: "/")
75
+ end
76
+ ```
55
77
 
56
78
  ### url_only
57
- only the following needs to change in order for the field to be url_only
79
+ Only the following needs to change in order for the field to be url_only
58
80
  ```ruby
59
81
  class ModelDashboard < Administrate::BaseDashboard
60
82
  ATTRIBUTE_TYPES = {
@@ -64,8 +86,8 @@ class ModelDashboard < Administrate::BaseDashboard
64
86
  # ...
65
87
  end
66
88
  ```
67
- ## Things To Do:
68
89
 
90
+ ## Things To Do:
69
91
  - [x] upload single file
70
92
  - [x] adding image support through url_for to support 3rd party cloud storage
71
93
  - [x] use html 5 video element for video files
@@ -74,15 +96,15 @@ end
74
96
  - [x] preview videos
75
97
  - [x] preview pdfs
76
98
  - [x] upload multiple files
77
- - [ ] find a way to delete attachments
99
+ - [x] find a way to delete attachments
78
100
  - [ ] preview office files as pictures
79
101
 
80
- ## Contribution guide:
102
+ ## Contribution Guide:
81
103
  1. contributers are welcome (code, suggestions, and bugs).
82
104
  2. please document your code.
83
105
  3. add your name to the `contribute.md`.
84
106
 
85
- please note that this is my first gem :) i might have gotten some stuff wrong PR's are always welcome
107
+ Please note that this is my first gem :) i might have gotten some stuff wrong PR's are always welcome.
108
+
86
109
  ---
87
110
  Based on the [Administrate::Field::Image](https://github.com/thoughtbot/administrate-field-image) template, and inspired by [Administrate::Field::Paperclip](https://github.com/picandocodigo/administrate-field-paperclip).
88
-
@@ -2,7 +2,7 @@ $:.push File.expand_path("../lib", __FILE__)
2
2
 
3
3
  Gem::Specification.new do |gem|
4
4
  gem.name = "administrate-field-active_storage"
5
- gem.version = "0.1.3"
5
+ gem.version = "0.1.4"
6
6
  gem.authors = ["Hamad AlGhanim"]
7
7
  gem.email = ["hamadyalghanim@gmail.com"]
8
8
  gem.homepage = "https://github.com/Dreamersoul/administrate-field-active_storage"
@@ -18,6 +18,13 @@ By default, the input is a text field for the image's URL.
18
18
  <div class="field-unit__label">
19
19
  <%= f.label field.attribute %>
20
20
  </div>
21
+
21
22
  <div class="field-unit__field">
23
+ <% if field.attached? %>
24
+ <%= render partial: 'fields/active_storage/items', locals: { field: field, removable: field.destroyable? } %>
25
+ <br />
26
+ Add:
27
+ <% end %>
28
+
22
29
  <%= f.file_field field.attribute, multiple: field.many? %>
23
30
  </div>
@@ -1,6 +1,34 @@
1
+ <%#
2
+ # Item Partial
3
+
4
+ This partial renders attached items.
5
+
6
+ Attachments of type image, video and audio are emedded. For all other types
7
+ we try use it's preview. If all else fails we simply link to the attached file.
8
+
9
+ This partial will optionally show a `remove` link next to each attachment which is
10
+ controlled via a boolean local variable.
11
+
12
+ ## Local variables:
13
+
14
+ - `field`:
15
+ An instance of [Administrate::Field::Image].
16
+ A wrapper around the image url pulled from the database.
17
+ - `attachment`:
18
+ Reference to the file
19
+ - `removable`:
20
+ A boolean used to control the display of a `Remove` link which
21
+ is used to destroy a single attachment. Defaults to `false`
22
+ %>
23
+
24
+ <%
25
+ # By default we don't allow attachment removal
26
+ removable = local_assigns.fetch(:removable, false)
27
+ %>
28
+
1
29
  <% if attachment.image? and !field.url_only? %>
2
30
  <%= image_tag(field.url(attachment)) %>
3
- <% elsif attachment.video? and attachment.previewable? and !field.url_only? %> <%# if ffmpeg is installed %>
31
+ <% elsif attachment.video? and attachment.previewable? and !field.url_only? %> <%# if ffmpeg is installed %>
4
32
  <%= video_tag(field.url(attachment), poster: field.preview(attachment, resize: "1920x1080>"), controls: true, autobuffer: true, style: "width: 100%; height: auto;") %>
5
33
  <% elsif attachment.video? and !field.url_only? %>
6
34
  <%= video_tag(field.url(attachment), controls: true, autobuffer: true, style: "width: 100%; height: auto;") %>
@@ -13,3 +41,8 @@
13
41
  <% else %>
14
42
  <%= link_to(attachment.filename, field.blob_url(attachment)) %>
15
43
  <% end %>
44
+
45
+ <% if removable %>
46
+ <%= link_to 'Remove', field.destroy_path(field, attachment), method: :delete, class: 'remove-attachment-link' %>
47
+ <hr>
48
+ <% end %>
@@ -0,0 +1,25 @@
1
+ <%#
2
+ # Items Partial
3
+
4
+ This partial renders one or more attachments
5
+
6
+ ## Local variables:
7
+
8
+ - `field`:
9
+ An instance of [Administrate::Field::Image].
10
+ A wrapper around the image url pulled from the database.
11
+ - `removable`:
12
+ A boolean used to control the display of a `Remove` link which
13
+ is used to destroy a single attachment. Defaults to `false`
14
+ %>
15
+
16
+ <%
17
+ attachments = Array(field.many? ? field.attachments : field.data)
18
+ removable = local_assigns.fetch(:removable, false)
19
+ %>
20
+
21
+ <% attachments.each do |attachment| %>
22
+ <div class="attachments-listing">
23
+ <%= render partial: 'fields/active_storage/item', locals: { field: field, attachment: attachment, removable: removable } %>
24
+ </div>
25
+ <% end %>
@@ -14,13 +14,7 @@ By default, the attribute is rendered as an image tag.
14
14
 
15
15
  [1]: http://www.rubydoc.info/gems/administrate/Administrate/Field/Image
16
16
  %>
17
+
17
18
  <% if field.attached? %>
18
- <% if field.many? %>
19
- <% field.attachments.each do |attachment| %>
20
- <%= render :partial => 'fields/active_storage/item', locals: { field: field, attachment: attachment } %>
21
- <br/>
22
- <% end %>
23
- <% else %>
24
- <%= render :partial => 'fields/active_storage/item', locals: { field: field, attachment: field.data } %>
25
- <% end %>
19
+ <%= render partial: 'fields/active_storage/items', locals: { field: field } %>
26
20
  <% end %>
data/contribute.md CHANGED
@@ -1 +1,5 @@
1
- Patrick Gleeson [@patrick-gleeson](https://github.com/patrick-gleeson)
1
+ # Contributors
2
+
3
+ - Patrick Gleeson [@patrick-gleeson](https://github.com/patrick-gleeson)
4
+ - Mario Zigliotto [@mariozig](https://github.com/mariozig)
5
+ - Leif Gensert [@leifg](https://github.com/leifg)
@@ -0,0 +1,30 @@
1
+ # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
+ #
3
+ # If you find yourself ignoring temporary files generated by your text editor
4
+ # or operating system, you probably want to add a global ignore instead:
5
+ # git config --global core.excludesfile '~/.gitignore_global'
6
+
7
+ # Ignore bundler config.
8
+ /.bundle
9
+
10
+ # Ignore the default SQLite database.
11
+ /db/*.sqlite3
12
+ /db/*.sqlite3-journal
13
+
14
+ # Ignore all logfiles and tempfiles.
15
+ /log/*
16
+ /tmp/*
17
+ !/log/.keep
18
+ !/tmp/.keep
19
+
20
+ # Ignore uploaded files in development
21
+ /storage/*
22
+
23
+ /node_modules
24
+ /yarn-error.log
25
+
26
+ /public/assets
27
+ .byebug_history
28
+
29
+ # Ignore master key for decrypting credentials and more.
30
+ /config/master.key
@@ -0,0 +1 @@
1
+ 2.4.1
@@ -0,0 +1,66 @@
1
+ source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ ruby '2.4.1'
5
+
6
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
7
+ gem 'rails', '~> 5.2.0'
8
+ # Use sqlite3 as the database for Active Record
9
+ gem 'sqlite3'
10
+ # Use Puma as the app server
11
+ gem 'puma', '~> 3.11'
12
+ # Use SCSS for stylesheets
13
+ gem 'sass-rails', '~> 5.0'
14
+ # Use Uglifier as compressor for JavaScript assets
15
+ gem 'uglifier', '>= 1.3.0'
16
+ # See https://github.com/rails/execjs#readme for more supported runtimes
17
+ # gem 'mini_racer', platforms: :ruby
18
+
19
+ # Use CoffeeScript for .coffee assets and views
20
+ gem 'coffee-rails', '~> 4.2'
21
+ # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
22
+ gem 'turbolinks', '~> 5'
23
+ # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
24
+ gem 'jbuilder', '~> 2.5'
25
+ # Use Redis adapter to run Action Cable in production
26
+ # gem 'redis', '~> 4.0'
27
+ # Use ActiveModel has_secure_password
28
+ # gem 'bcrypt', '~> 3.1.7'
29
+
30
+ # Use ActiveStorage variant
31
+ # gem 'mini_magick', '~> 4.8'
32
+
33
+ # Use Capistrano for deployment
34
+ # gem 'capistrano-rails', group: :development
35
+
36
+ # Reduces boot times through caching; required in config/boot.rb
37
+ gem 'bootsnap', '>= 1.1.0', require: false
38
+
39
+ group :development, :test do
40
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
41
+ gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
42
+ end
43
+
44
+ group :development do
45
+ # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
46
+ gem 'web-console', '>= 3.3.0'
47
+ gem 'listen', '>= 3.0.5', '< 3.2'
48
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
49
+ gem 'spring'
50
+ gem 'spring-watcher-listen', '~> 2.0.0'
51
+ end
52
+
53
+ group :test do
54
+ # Adds support for Capybara system testing and selenium driver
55
+ gem 'capybara', '>= 2.15', '< 4.0'
56
+ gem 'selenium-webdriver'
57
+ # Easy installation and use of chromedriver to run system tests with Chrome
58
+ gem 'chromedriver-helper'
59
+ end
60
+
61
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
62
+ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
63
+
64
+
65
+ gem "administrate"
66
+ gem 'administrate-field-active_storage', :path => "../"
@@ -0,0 +1,263 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ administrate-field-active_storage (0.1.5)
5
+ administrate (>= 0.2.0.rc1)
6
+ rails (>= 5.2)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ actioncable (5.2.2)
12
+ actionpack (= 5.2.2)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ actionmailer (5.2.2)
16
+ actionpack (= 5.2.2)
17
+ actionview (= 5.2.2)
18
+ activejob (= 5.2.2)
19
+ mail (~> 2.5, >= 2.5.4)
20
+ rails-dom-testing (~> 2.0)
21
+ actionpack (5.2.2)
22
+ actionview (= 5.2.2)
23
+ activesupport (= 5.2.2)
24
+ rack (~> 2.0)
25
+ rack-test (>= 0.6.3)
26
+ rails-dom-testing (~> 2.0)
27
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
28
+ actionview (5.2.2)
29
+ activesupport (= 5.2.2)
30
+ builder (~> 3.1)
31
+ erubi (~> 1.4)
32
+ rails-dom-testing (~> 2.0)
33
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
34
+ activejob (5.2.2)
35
+ activesupport (= 5.2.2)
36
+ globalid (>= 0.3.6)
37
+ activemodel (5.2.2)
38
+ activesupport (= 5.2.2)
39
+ activerecord (5.2.2)
40
+ activemodel (= 5.2.2)
41
+ activesupport (= 5.2.2)
42
+ arel (>= 9.0)
43
+ activestorage (5.2.2)
44
+ actionpack (= 5.2.2)
45
+ activerecord (= 5.2.2)
46
+ marcel (~> 0.3.1)
47
+ activesupport (5.2.2)
48
+ concurrent-ruby (~> 1.0, >= 1.0.2)
49
+ i18n (>= 0.7, < 2)
50
+ minitest (~> 5.1)
51
+ tzinfo (~> 1.1)
52
+ addressable (2.5.2)
53
+ public_suffix (>= 2.0.2, < 4.0)
54
+ administrate (0.11.0)
55
+ actionpack (>= 4.2, < 6.0)
56
+ actionview (>= 4.2, < 6.0)
57
+ activerecord (>= 4.2, < 6.0)
58
+ autoprefixer-rails (>= 6.0)
59
+ datetime_picker_rails (~> 0.0.7)
60
+ jquery-rails (>= 4.0)
61
+ kaminari (>= 1.0)
62
+ momentjs-rails (~> 2.8)
63
+ sass-rails (~> 5.0)
64
+ selectize-rails (~> 0.6)
65
+ archive-zip (0.11.0)
66
+ io-like (~> 0.3.0)
67
+ arel (9.0.0)
68
+ autoprefixer-rails (9.4.3)
69
+ execjs
70
+ bindex (0.5.0)
71
+ bootsnap (1.3.2)
72
+ msgpack (~> 1.0)
73
+ builder (3.2.3)
74
+ byebug (10.0.2)
75
+ capybara (3.12.0)
76
+ addressable
77
+ mini_mime (>= 0.1.3)
78
+ nokogiri (~> 1.8)
79
+ rack (>= 1.6.0)
80
+ rack-test (>= 0.6.3)
81
+ regexp_parser (~> 1.2)
82
+ xpath (~> 3.2)
83
+ childprocess (0.9.0)
84
+ ffi (~> 1.0, >= 1.0.11)
85
+ chromedriver-helper (2.1.0)
86
+ archive-zip (~> 0.10)
87
+ nokogiri (~> 1.8)
88
+ coffee-rails (4.2.2)
89
+ coffee-script (>= 2.2.0)
90
+ railties (>= 4.0.0)
91
+ coffee-script (2.4.1)
92
+ coffee-script-source
93
+ execjs
94
+ coffee-script-source (1.12.2)
95
+ concurrent-ruby (1.1.4)
96
+ crass (1.0.4)
97
+ datetime_picker_rails (0.0.7)
98
+ momentjs-rails (>= 2.8.1)
99
+ erubi (1.8.0)
100
+ execjs (2.7.0)
101
+ ffi (1.9.25)
102
+ globalid (0.4.1)
103
+ activesupport (>= 4.2.0)
104
+ i18n (1.3.0)
105
+ concurrent-ruby (~> 1.0)
106
+ io-like (0.3.0)
107
+ jbuilder (2.8.0)
108
+ activesupport (>= 4.2.0)
109
+ multi_json (>= 1.2)
110
+ jquery-rails (4.3.3)
111
+ rails-dom-testing (>= 1, < 3)
112
+ railties (>= 4.2.0)
113
+ thor (>= 0.14, < 2.0)
114
+ kaminari (1.1.1)
115
+ activesupport (>= 4.1.0)
116
+ kaminari-actionview (= 1.1.1)
117
+ kaminari-activerecord (= 1.1.1)
118
+ kaminari-core (= 1.1.1)
119
+ kaminari-actionview (1.1.1)
120
+ actionview
121
+ kaminari-core (= 1.1.1)
122
+ kaminari-activerecord (1.1.1)
123
+ activerecord
124
+ kaminari-core (= 1.1.1)
125
+ kaminari-core (1.1.1)
126
+ listen (3.1.5)
127
+ rb-fsevent (~> 0.9, >= 0.9.4)
128
+ rb-inotify (~> 0.9, >= 0.9.7)
129
+ ruby_dep (~> 1.2)
130
+ loofah (2.2.3)
131
+ crass (~> 1.0.2)
132
+ nokogiri (>= 1.5.9)
133
+ mail (2.7.1)
134
+ mini_mime (>= 0.1.1)
135
+ marcel (0.3.3)
136
+ mimemagic (~> 0.3.2)
137
+ method_source (0.9.2)
138
+ mimemagic (0.3.3)
139
+ mini_mime (1.0.1)
140
+ mini_portile2 (2.4.0)
141
+ minitest (5.11.3)
142
+ momentjs-rails (2.20.1)
143
+ railties (>= 3.1)
144
+ msgpack (1.2.4)
145
+ multi_json (1.13.1)
146
+ nio4r (2.3.1)
147
+ nokogiri (1.9.1)
148
+ mini_portile2 (~> 2.4.0)
149
+ public_suffix (3.0.3)
150
+ puma (3.12.0)
151
+ rack (2.0.6)
152
+ rack-test (1.1.0)
153
+ rack (>= 1.0, < 3)
154
+ rails (5.2.2)
155
+ actioncable (= 5.2.2)
156
+ actionmailer (= 5.2.2)
157
+ actionpack (= 5.2.2)
158
+ actionview (= 5.2.2)
159
+ activejob (= 5.2.2)
160
+ activemodel (= 5.2.2)
161
+ activerecord (= 5.2.2)
162
+ activestorage (= 5.2.2)
163
+ activesupport (= 5.2.2)
164
+ bundler (>= 1.3.0)
165
+ railties (= 5.2.2)
166
+ sprockets-rails (>= 2.0.0)
167
+ rails-dom-testing (2.0.3)
168
+ activesupport (>= 4.2.0)
169
+ nokogiri (>= 1.6)
170
+ rails-html-sanitizer (1.0.4)
171
+ loofah (~> 2.2, >= 2.2.2)
172
+ railties (5.2.2)
173
+ actionpack (= 5.2.2)
174
+ activesupport (= 5.2.2)
175
+ method_source
176
+ rake (>= 0.8.7)
177
+ thor (>= 0.19.0, < 2.0)
178
+ rake (12.3.2)
179
+ rb-fsevent (0.10.3)
180
+ rb-inotify (0.10.0)
181
+ ffi (~> 1.0)
182
+ regexp_parser (1.3.0)
183
+ ruby_dep (1.5.0)
184
+ rubyzip (1.2.2)
185
+ sass (3.7.2)
186
+ sass-listen (~> 4.0.0)
187
+ sass-listen (4.0.0)
188
+ rb-fsevent (~> 0.9, >= 0.9.4)
189
+ rb-inotify (~> 0.9, >= 0.9.7)
190
+ sass-rails (5.0.7)
191
+ railties (>= 4.0.0, < 6)
192
+ sass (~> 3.1)
193
+ sprockets (>= 2.8, < 4.0)
194
+ sprockets-rails (>= 2.0, < 4.0)
195
+ tilt (>= 1.1, < 3)
196
+ selectize-rails (0.12.6)
197
+ selenium-webdriver (3.141.0)
198
+ childprocess (~> 0.5)
199
+ rubyzip (~> 1.2, >= 1.2.2)
200
+ spring (2.0.2)
201
+ activesupport (>= 4.2)
202
+ spring-watcher-listen (2.0.1)
203
+ listen (>= 2.7, < 4.0)
204
+ spring (>= 1.2, < 3.0)
205
+ sprockets (3.7.2)
206
+ concurrent-ruby (~> 1.0)
207
+ rack (> 1, < 3)
208
+ sprockets-rails (3.2.1)
209
+ actionpack (>= 4.0)
210
+ activesupport (>= 4.0)
211
+ sprockets (>= 3.0.0)
212
+ sqlite3 (1.3.13)
213
+ thor (0.20.3)
214
+ thread_safe (0.3.6)
215
+ tilt (2.0.9)
216
+ turbolinks (5.2.0)
217
+ turbolinks-source (~> 5.2)
218
+ turbolinks-source (5.2.0)
219
+ tzinfo (1.2.5)
220
+ thread_safe (~> 0.1)
221
+ uglifier (4.1.20)
222
+ execjs (>= 0.3.0, < 3)
223
+ web-console (3.7.0)
224
+ actionview (>= 5.0)
225
+ activemodel (>= 5.0)
226
+ bindex (>= 0.4.0)
227
+ railties (>= 5.0)
228
+ websocket-driver (0.7.0)
229
+ websocket-extensions (>= 0.1.0)
230
+ websocket-extensions (0.1.3)
231
+ xpath (3.2.0)
232
+ nokogiri (~> 1.8)
233
+
234
+ PLATFORMS
235
+ ruby
236
+
237
+ DEPENDENCIES
238
+ administrate
239
+ administrate-field-active_storage!
240
+ bootsnap (>= 1.1.0)
241
+ byebug
242
+ capybara (>= 2.15, < 4.0)
243
+ chromedriver-helper
244
+ coffee-rails (~> 4.2)
245
+ jbuilder (~> 2.5)
246
+ listen (>= 3.0.5, < 3.2)
247
+ puma (~> 3.11)
248
+ rails (~> 5.2.0)
249
+ sass-rails (~> 5.0)
250
+ selenium-webdriver
251
+ spring
252
+ spring-watcher-listen (~> 2.0.0)
253
+ sqlite3
254
+ turbolinks (~> 5)
255
+ tzinfo-data
256
+ uglifier (>= 1.3.0)
257
+ web-console (>= 3.3.0)
258
+
259
+ RUBY VERSION
260
+ ruby 2.4.1p111
261
+
262
+ BUNDLED WITH
263
+ 1.16.0