plug 0.1.12 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +21 -1
  3. data/app/assets/images/favicon.png +0 -0
  4. data/app/assets/stylesheets/plug/application.scss +3 -0
  5. data/app/assets/stylesheets/plug/blocks/_alert.scss +5 -0
  6. data/app/assets/stylesheets/plug/blocks/_menu.scss +11 -0
  7. data/app/assets/stylesheets/plug/blocks/_task-button.scss +3 -0
  8. data/app/assets/stylesheets/plug/variables/_colors.scss +2 -1
  9. data/app/controllers/plug/api/api_controller.rb +7 -0
  10. data/app/controllers/plug/api/site_notices_controller.rb +21 -0
  11. data/app/controllers/plug/features_controller.rb +15 -1
  12. data/app/controllers/plug/site_notices_controller.rb +69 -0
  13. data/app/models/plug/concerns/model_helpers.rb +45 -0
  14. data/app/models/plug/concerns/themeable.rb +16 -0
  15. data/app/models/plug/feature.rb +1 -25
  16. data/app/models/plug/resources/site_notice.rb +17 -0
  17. data/app/models/plug/site_notice.rb +7 -0
  18. data/app/services/plug/task_execution_service.rb +18 -0
  19. data/app/views/layouts/plug/application.html.haml +2 -1
  20. data/app/views/plug/features/_task.html.haml +4 -0
  21. data/app/views/plug/features/index.html.haml +12 -2
  22. data/app/views/plug/shared/_nav.html.haml +8 -5
  23. data/app/views/plug/site_notices/_form.html.haml +25 -0
  24. data/app/views/plug/site_notices/edit.html.haml +5 -0
  25. data/app/views/plug/site_notices/index.html.haml +41 -0
  26. data/app/views/plug/site_notices/new.html.haml +7 -0
  27. data/config/routes.rb +11 -0
  28. data/db/migrate/20180403024712_create_plug_site_notices.rb +15 -0
  29. data/db/migrate/20180424015828_add_theme_to_plug_site_notice.rb +5 -0
  30. data/lib/plug/configuration.rb +4 -1
  31. data/lib/plug/version.rb +1 -1
  32. metadata +40 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 8ff054c84075e1b2e008af464461eb7ad3610a78
4
- data.tar.gz: cde21d4902f6045df745f4d67699e09c16ba1aef
2
+ SHA256:
3
+ metadata.gz: a3e56677db5277835599245727b8f5a1ddc7b089a9261f788971c6de539279cd
4
+ data.tar.gz: 619eb3d58765d7fe2ae88e0d4cc784ce0df8cea15e2e580ce0228f335da1f175
5
5
  SHA512:
6
- metadata.gz: 4baea815778c86a46fcc78e001811c1c1a3bb305e035ca8d109670786bb9824e29080503ead8fe4fcd45c50d04ba7e539af9f020fe94cd71b213649786a519b9
7
- data.tar.gz: 4220069641d7cb9a1d41949c74477bde938c39543f861d98a387372280727643700db1f196a4ac64342e8e4f4e15cfba32f4c178c29790e605a45a00a4952995
6
+ metadata.gz: 3993e47bb2626186d6057b0aed81651a3ae46d7daec51b56dfe9a8cfbe0a46c242edfc95a6080cefe651d641092b3e157746df03c2a6595a72e96b9b32bc0a56
7
+ data.tar.gz: 210f55299e22933f46c48d469fc423ec3b7c85cd8be76d7eddeee93ce96efab89f50f11ed2598d530911eb208057c9c6691114d38beba6ff9425fc6b3fc60386
data/README.md CHANGED
@@ -31,7 +31,8 @@ And run the install generator:
31
31
 
32
32
  ```bash
33
33
  → rails g plug:install
34
- → rails g plug:install:migrations
34
+ → rails plug:install:migrations
35
+ → rake plug:install:migrations # For Rails <= 3.x
35
36
  → rails db:migrate # Newer version of Rails
36
37
  → rake db:migrate # Older version of Rails
37
38
  → rails s
@@ -72,6 +73,25 @@ If you have custom HTML for notice, you can pass a block.
72
73
  <% end %>
73
74
  ```
74
75
 
76
+ #### Buttons
77
+ Add buttons to the config block to perform rake tasks from the plug dashboard
78
+
79
+ ```ruby
80
+ config.buttons = [
81
+ { label: 'Clear cache', task: 'tmp:cache:clear' }
82
+ ]
83
+ ```
84
+
85
+ ### Creating new migrations
86
+
87
+ ```bash
88
+ → rails g migration MyAwesomeMigration
89
+ → rails g model MyModel name:string slug:string:index
90
+ → rails db:migrate
91
+ → rails db:migrate RAILS_ENV=test
92
+ → rake plug:install:migrations # Run this on the app to copy the new migrations
93
+ ```
94
+
75
95
  ### Running the tests
76
96
 
77
97
  ```bash
@@ -34,5 +34,8 @@
34
34
 
35
35
  // Blocks
36
36
  @import 'blocks/nav';
37
+ @import 'blocks/menu';
37
38
  @import 'blocks/notice';
39
+ @import 'blocks/alert';
38
40
  @import 'blocks/state';
41
+ @import 'blocks/task-button';
@@ -0,0 +1,5 @@
1
+ .alert {
2
+ background: $gallery;
3
+ border: solid 2px $lipstick;
4
+ padding: 2rem;
5
+ }
@@ -0,0 +1,11 @@
1
+ .menu {
2
+ list-style-type: none;
3
+
4
+ li {
5
+ display: inline-block;
6
+ margin-bottom: 0;
7
+ margin-top: 1rem;
8
+ margin-left: 2rem;
9
+ font-weight: bold;
10
+ }
11
+ }
@@ -0,0 +1,3 @@
1
+ .task-button {
2
+ margin: 0 .5rem;
3
+ }
@@ -4,4 +4,5 @@ $pale-sky: #637381;
4
4
  $alabaster: #f7f7f7;
5
5
  $gallery: #ebebeb;
6
6
  $tall-poppy: #c0392b;
7
- $jungle-green: #27ae60;
7
+ $lipstick: #c70376;
8
+ $jungle-green: #27ae60;
@@ -0,0 +1,7 @@
1
+ module Plug
2
+ module Api
3
+ class ApiController < ActionController::Base
4
+ protect_from_forgery with: :exception
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,21 @@
1
+ require_dependency 'plug/application_controller'
2
+
3
+ module Plug
4
+ module Api
5
+ class SiteNoticesController < ApiController
6
+ # GET /site_notices.json
7
+ def index
8
+ @site_notices = SiteNotice.all
9
+
10
+ render json: @site_notices
11
+ end
12
+
13
+ # GET /site_notices/slug.json
14
+ def show
15
+ @site_notice = SiteNotice.slug_and_name(params[:slug]).first
16
+
17
+ render json: @site_notice
18
+ end
19
+ end
20
+ end
21
+ end
@@ -50,6 +50,20 @@ module Plug
50
50
  redirect_to features_url, notice: 'Feature was successfully destroyed.'
51
51
  end
52
52
 
53
+ # POST /task
54
+ # TODO: Move this to a separate controller e.g. `tasks_controller.rb`
55
+ def task_execution
56
+ begin
57
+ Plug::TaskExecutionService.new(name: params[:task]).call
58
+ rescue StandardError => e
59
+ flash[:alert] = e.message
60
+ else
61
+ flash[:notice] = "Task: #{params[:task]} has completed"
62
+ end
63
+
64
+ redirect_to root_path
65
+ end
66
+
53
67
  private
54
68
  # Use callbacks to share common setup or constraints between actions.
55
69
  def set_feature
@@ -62,7 +76,7 @@ module Plug
62
76
  if Rails.version.to_i < 5
63
77
  ActiveSupport::HashWithIndifferentAccess.new(params[:feature])
64
78
  else
65
- params.require(:feature).permit(:name, :description, :state)
79
+ params.require(:feature).permit(:name, :description, :state, :notice)
66
80
  end
67
81
  end
68
82
  end
@@ -0,0 +1,69 @@
1
+ require_dependency 'plug/application_controller'
2
+
3
+ module Plug
4
+ class SiteNoticesController < ApplicationController
5
+ if Rails.version.to_i < 5
6
+ before_filter :set_site_notice, only: [:edit, :update, :destroy]
7
+ else
8
+ before_action :set_site_notice, only: [:edit, :update, :destroy]
9
+ end
10
+
11
+ # GET /site_notices
12
+ def index
13
+ @site_notices = SiteNotice.all
14
+ end
15
+
16
+ # GET /site_notices/1
17
+ # def show; end
18
+
19
+ # GET /site_notices/new
20
+ def new
21
+ @site_notice = SiteNotice.new
22
+ end
23
+
24
+ # GET /site_notices/1/edit
25
+ def edit; end
26
+
27
+ # POST /site_notices
28
+ def create
29
+ @site_notice = SiteNotice.new(site_notice_params)
30
+
31
+ if @site_notice.save
32
+ redirect_to site_notices_path, notice: 'Site Notice was successfully created.'
33
+ else
34
+ render :new
35
+ end
36
+ end
37
+
38
+ # PATCH/PUT /site_notices/1
39
+ def update
40
+ if @site_notice.update_attributes(site_notice_params)
41
+ redirect_to site_notices_path, notice: 'Site Notice was successfully updated.'
42
+ else
43
+ render :edit
44
+ end
45
+ end
46
+
47
+ # DELETE /site_notices/1
48
+ def destroy
49
+ @site_notice.destroy
50
+ redirect_to site_notices_url, notice: 'Site Notice was successfully destroyed.'
51
+ end
52
+
53
+ private
54
+ # Use callbacks to share common setup or constraints between actions.
55
+ def set_site_notice
56
+ @site_notice = SiteNotice.find(params[:id])
57
+ end
58
+
59
+ # Only allow a trusted parameter "white list" through.
60
+ # TODO: Strong params not available for older Rails
61
+ def site_notice_params
62
+ if Rails.version.to_i < 5
63
+ ActiveSupport::HashWithIndifferentAccess.new(params[:site_notice])
64
+ else
65
+ params.require(:site_notice).permit(:name, :notice, :state, :theme)
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,45 @@
1
+ require 'active_support/concern'
2
+
3
+ module Plug
4
+ module Concerns
5
+ module ModelHelpers
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+ include AASM
10
+
11
+ # Validations
12
+ validates :name, presence: { message: "#{self.humanized_class_name} name is required" },
13
+ uniqueness: { message: "#{self.humanized_class_name} name must be unique", case_sensitive: false }
14
+ validates :state, presence: { message: "#{self.humanized_class_name} state is required" }
15
+
16
+ # Callbacks
17
+ before_save { self.slug = name.parameterize }
18
+
19
+ # Scopes
20
+ scope :slug_and_name, ->(arg) { where('slug = ? OR name = ?', arg, arg) }
21
+
22
+ # States
23
+ aasm column: :state do
24
+ state :enabled, initial: true
25
+ state :disabled
26
+
27
+ event :enable do
28
+ transitions from: :disabled, to: :enabled
29
+ end
30
+
31
+ event :disable do
32
+ transitions from: :enabled, to: :disabled
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ module ClassMethods
39
+ def humanized_class_name
40
+ self.name.demodulize.underscore.humanize.capitalize
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,16 @@
1
+ require 'active_support/concern'
2
+
3
+ module Plug
4
+ module Concerns
5
+ module Themeable
6
+ extend ActiveSupport::Concern
7
+
8
+ included do
9
+
10
+ def icon
11
+ theme.split(';').last.split(':').last
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -1,30 +1,6 @@
1
1
  module Plug
2
2
  class Feature < ApplicationRecord
3
3
  include AASM
4
-
5
- # Validations
6
- validates :name, presence: { message: 'Feature name is required' },
7
- uniqueness: { message: 'Feature name must be unique', case_sensitive: false }
8
- validates :state, presence: { message: 'Feature state is required' }
9
-
10
- # Callbacks
11
- before_save { self.slug = name.parameterize }
12
-
13
- # Scopes
14
- scope :slug_and_name, ->(arg) { where('slug = ? OR name = ?', arg, arg) }
15
-
16
- # States
17
- aasm column: :state do
18
- state :enabled, initial: true
19
- state :disabled
20
-
21
- event :enable do
22
- transitions from: :disabled, to: :enabled
23
- end
24
-
25
- event :disable do
26
- transitions from: :enabled, to: :disabled
27
- end
28
- end
4
+ include Plug::Concerns::ModelHelpers
29
5
  end
30
6
  end
@@ -0,0 +1,17 @@
1
+ module Plug
2
+ module Resources
3
+ class SiteNotice < ActiveResource::Base
4
+ include Plug::Concerns::Themeable
5
+
6
+ self.site = Plug.api_path
7
+
8
+ def enabled?
9
+ state == 'enabled'
10
+ end
11
+
12
+ def disabled?
13
+ state == 'disabled'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ module Plug
2
+ class SiteNotice < ApplicationRecord
3
+ include AASM
4
+ include Plug::Concerns::ModelHelpers
5
+ include Plug::Concerns::Themeable
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'rake'
2
+
3
+ module Plug
4
+ class TaskExecutionService
5
+ attr_reader :name
6
+
7
+ def initialize(name: nil)
8
+ raise 'Task name is required' if name.nil?
9
+
10
+ @name = name
11
+ end
12
+
13
+ def call
14
+ Rails.application.load_tasks
15
+ Rake::Task[name].execute
16
+ end
17
+ end
18
+ end
@@ -1,5 +1,6 @@
1
1
  !!!
2
2
  %html{ lang: 'en' }
3
+ = favicon_link_tag 'favicon.png'
3
4
  = render 'plug/shared/head'
4
5
 
5
6
  %body
@@ -7,4 +8,4 @@
7
8
  = render 'plug/shared/nav'
8
9
  = yield
9
10
 
10
- /= render 'shared/footer'
11
+ /= render 'shared/footer'
@@ -0,0 +1,4 @@
1
+ .task-button
2
+ = form_tag(task_execution_path) do
3
+ = hidden_field_tag(:task, task[:task])
4
+ = submit_tag(task[:label])
@@ -1,8 +1,15 @@
1
+ - if notice
2
+ %p.notice= sanitize(notice)
3
+
4
+ - if alert
5
+ %p.alert= sanitize(alert)
6
+
1
7
  .row
2
8
  .column
3
- - if notice
4
- %p.notice= notice
9
+ = render partial: 'task', collection: Plug.buttons
5
10
 
11
+ .row
12
+ .column
6
13
  .clearfix
7
14
  .float-left
8
15
  %h4 Features
@@ -16,6 +23,9 @@
16
23
  %th Description
17
24
  %th Slug
18
25
  %th State
26
+
27
+ - if Plug.allow_delete
28
+ %th Actions
19
29
 
20
30
  %tbody
21
31
  - @features.each do |feature|
@@ -1,6 +1,9 @@
1
1
  %nav.clearfix.nav
2
- .row
3
- .column
4
- %h3
5
- = link_to 'Plug', plug.root_path, class: 'nav__logo'
6
- %small /unplug features
2
+ .float-left
3
+ %h3
4
+ = link_to 'Plug', plug.root_path, class: 'nav__logo'
5
+ %small /unplug features
6
+ .float-right
7
+ %ul.menu
8
+ %li= link_to 'Features', plug.root_path
9
+ %li= link_to 'Site Notices', plug.site_notices_path
@@ -0,0 +1,25 @@
1
+ = form_for @site_notice do |f|
2
+ - if @site_notice.errors.any?
3
+ #error_explanation
4
+ %h2= "#{pluralize(@site_notice.errors.count, "error")} prohibited this feature from being saved:"
5
+ %ul
6
+ - @site_notice.errors.full_messages.each do |message|
7
+ %li= message
8
+
9
+ .field
10
+ = f.label :name
11
+ = f.text_field :name
12
+ .field
13
+ = f.label :notice
14
+ = f.text_area :notice, rows: 10
15
+ .field
16
+ = f.label :state
17
+ = f.select :state, ['enabled', 'disabled']
18
+ .field
19
+ = f.label :theme
20
+ = f.select :theme, Plug.themes.map { |theme| [theme[:name], "#{theme[:style].to_a.map { |s| s.join(':') }.join(';')}"] }
21
+ .actions.clearfix
22
+ .float-left
23
+ = link_to 'Back', site_notices_path, class: 'button'
24
+ .float-right
25
+ = f.submit 'Save'
@@ -0,0 +1,5 @@
1
+ .row
2
+ .column
3
+ %h4 Editing site notice
4
+
5
+ = render 'form'
@@ -0,0 +1,41 @@
1
+ .row
2
+ .column
3
+ - if notice
4
+ %p.notice= sanitize(notice)
5
+
6
+ - if alert
7
+ %p.alert= sanitize(alert)
8
+
9
+ .clearfix
10
+ .float-left
11
+ %h4 Site Notices
12
+ .float-right
13
+ = link_to 'New Site Notice', new_site_notice_path, class: 'button'
14
+
15
+ %table
16
+ %thead
17
+ %tr
18
+ %th Name
19
+ %th Notice
20
+ %th Slug
21
+ %th State
22
+
23
+ - if Plug.allow_delete
24
+ %th Actions
25
+
26
+ %tbody
27
+ - @site_notices.each do |site_notice|
28
+ %tr
29
+ %td= link_to site_notice.name, edit_site_notice_path(site_notice), class: 'strong'
30
+ %td= site_notice.notice
31
+ %td= site_notice.slug
32
+ %td
33
+ - if site_notice.state == 'enabled'
34
+ %i.fas.fa-check-circle.fa-2x.state__enabled
35
+ - else
36
+ %i.fas.fa-times-circle.fa-2x.state__disabled
37
+
38
+ - if Plug.allow_delete
39
+ %td= link_to 'Destroy', site_notice, method: :delete, data: { confirm: 'Are you sure?' }
40
+
41
+
@@ -0,0 +1,7 @@
1
+ .row
2
+ .column
3
+ .clearfix
4
+ .float-left
5
+ %h4 New site notice
6
+
7
+ = render 'form'
@@ -1,5 +1,16 @@
1
1
  Plug::Engine.routes.draw do
2
2
  root to: 'features#index'
3
3
 
4
+ # Features
4
5
  resources :features, except: :show
6
+
7
+ # Site notices
8
+ resources :site_notices, except: :show
9
+
10
+ namespace :api, defaults: { format: :json } do
11
+ get '/site_notices/:slug', to: 'site_notices#show'
12
+ get '/site_notices', to: 'site_notices#index'
13
+ end
14
+
15
+ post '/task', to: 'features#task_execution', as: :task_execution
5
16
  end
@@ -0,0 +1,15 @@
1
+ class CreatePlugSiteNotices < ActiveRecord::Migration
2
+ def change
3
+ create_table :plug_site_notices do |t|
4
+ t.string :name
5
+ t.string :slug
6
+ t.text :notice
7
+ t.string :state
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ add_index :plug_site_notices, :name
13
+ add_index :plug_site_notices, :slug
14
+ end
15
+ end
@@ -0,0 +1,5 @@
1
+ class AddThemeToPlugSiteNotice < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_column :plug_site_notices, :theme, :string
4
+ end
5
+ end
@@ -7,7 +7,10 @@ module Plug
7
7
  VALID_OPTIONS_KEYS = [
8
8
  :auth_user,
9
9
  :auth_password,
10
- :allow_delete
10
+ :allow_delete,
11
+ :buttons,
12
+ :api_path,
13
+ :themes
11
14
  ].freeze
12
15
 
13
16
  attr_accessor *VALID_OPTIONS_KEYS
@@ -1,3 +1,3 @@
1
1
  module Plug
2
- VERSION = '0.1.12'
2
+ VERSION = '0.1.19'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plug
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.12
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-02-26 00:00:00.000000000 Z
12
+ date: 2020-06-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "<="
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 5.1.4
20
+ version: '0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "<="
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 5.1.4
27
+ version: '0'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: sass-rails
30
30
  requirement: !ruby/object:Gem::Requirement
@@ -81,6 +81,20 @@ dependencies:
81
81
  - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: activeresource
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ type: :runtime
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - ">="
96
+ - !ruby/object:Gem::Version
97
+ version: '0'
84
98
  - !ruby/object:Gem::Dependency
85
99
  name: sqlite3
86
100
  requirement: !ruby/object:Gem::Requirement
@@ -191,13 +205,17 @@ files:
191
205
  - README.md
192
206
  - Rakefile
193
207
  - app/assets/config/plug_manifest.js
208
+ - app/assets/images/favicon.png
194
209
  - app/assets/javascripts/plug/application.js
195
210
  - app/assets/javascripts/plug/features.js
196
211
  - app/assets/stylesheets/plug/_settings.scss
197
212
  - app/assets/stylesheets/plug/application.scss
213
+ - app/assets/stylesheets/plug/blocks/_alert.scss
214
+ - app/assets/stylesheets/plug/blocks/_menu.scss
198
215
  - app/assets/stylesheets/plug/blocks/_nav.scss
199
216
  - app/assets/stylesheets/plug/blocks/_notice.scss
200
217
  - app/assets/stylesheets/plug/blocks/_state.scss
218
+ - app/assets/stylesheets/plug/blocks/_task-button.scss
201
219
  - app/assets/stylesheets/plug/foundation_and_overrides.scss
202
220
  - app/assets/stylesheets/plug/milligram.scss
203
221
  - app/assets/stylesheets/plug/mixins/_bem.scss
@@ -206,22 +224,37 @@ files:
206
224
  - app/assets/stylesheets/plug/partials/_utils.scss
207
225
  - app/assets/stylesheets/plug/variables/_colors.scss
208
226
  - app/assets/stylesheets/plug/variables/_typography.scss
227
+ - app/controllers/plug/api/api_controller.rb
228
+ - app/controllers/plug/api/site_notices_controller.rb
209
229
  - app/controllers/plug/application_controller.rb
210
230
  - app/controllers/plug/features_controller.rb
231
+ - app/controllers/plug/site_notices_controller.rb
211
232
  - app/helpers/plug/application_helper.rb
212
233
  - app/mailers/plug/application_mailer.rb
213
234
  - app/models/plug/application_record.rb
235
+ - app/models/plug/concerns/model_helpers.rb
236
+ - app/models/plug/concerns/themeable.rb
214
237
  - app/models/plug/feature.rb
238
+ - app/models/plug/resources/site_notice.rb
239
+ - app/models/plug/site_notice.rb
240
+ - app/services/plug/task_execution_service.rb
215
241
  - app/views/layouts/plug/application.html.haml
216
242
  - app/views/plug/features/_form.html.haml
243
+ - app/views/plug/features/_task.html.haml
217
244
  - app/views/plug/features/edit.html.haml
218
245
  - app/views/plug/features/index.html.haml
219
246
  - app/views/plug/features/new.html.haml
220
247
  - app/views/plug/shared/_head.html.haml
221
248
  - app/views/plug/shared/_nav.html.haml
249
+ - app/views/plug/site_notices/_form.html.haml
250
+ - app/views/plug/site_notices/edit.html.haml
251
+ - app/views/plug/site_notices/index.html.haml
252
+ - app/views/plug/site_notices/new.html.haml
222
253
  - config/routes.rb
223
254
  - db/migrate/20171207020316_create_plug_features.rb
224
255
  - db/migrate/20180128202026_add_notice_to_plug_features.rb
256
+ - db/migrate/20180403024712_create_plug_site_notices.rb
257
+ - db/migrate/20180424015828_add_theme_to_plug_site_notice.rb
225
258
  - lib/generators/plug/install_generator.rb
226
259
  - lib/generators/plug/templates/plug.rb
227
260
  - lib/plug.rb
@@ -249,8 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
249
282
  - !ruby/object:Gem::Version
250
283
  version: '0'
251
284
  requirements: []
252
- rubyforge_project:
253
- rubygems_version: 2.6.13
285
+ rubygems_version: 3.0.3
254
286
  signing_key:
255
287
  specification_version: 4
256
288
  summary: Rails engine that can plug/unplug features