From ec95888700ad77bcaefb8983e4251b408b053b48 Mon Sep 17 00:00:00 2001 From: Jens Ulferts Date: Wed, 19 Dec 2018 19:19:57 +0100 Subject: [PATCH] start putting grid into own module --- Gemfile.lock | 6 ++ Gemfile.modules | 37 ++++---- app/models/grids/configuration.rb | 19 ++-- .../queries/grids/filters/grid_filter.rb | 4 +- app/models/queries/grids/grid_query.rb | 4 +- app/services/params_to_query_service.rb | 19 ++-- lib/api/v3/grids/grid_representer.rb | 2 +- lib/api/v3/grids/grids_api.rb | 2 +- .../grids/schemas/grid_schema_representer.rb | 2 +- modules/grids/.gitignore | 7 ++ modules/grids/Gemfile | 14 +++ modules/grids/README.md | 3 + modules/grids/Rakefile | 36 ++++++++ .../grids/app/models/grids}/grid.rb | 25 +++-- .../grids/app/models/grids/my_page.rb | 56 ++++++------ .../grids/app/models/grids/widget.rb | 11 ++- modules/grids/bin/rails | 14 +++ modules/grids/grids.gemspec | 14 +++ modules/grids/lib/grids.rb | 5 + modules/grids/lib/grids/engine.rb | 5 + modules/grids/lib/grids/version.rb | 5 + modules/grids/test/dummy/Rakefile | 6 ++ .../test/dummy/app/assets/config/manifest.js | 5 + .../grids/test/dummy/app/assets/images/.keep | 0 .../app/assets/javascripts/application.js | 13 +++ .../dummy/app/assets/javascripts/cable.js | 13 +++ .../app/assets/javascripts/channels/.keep | 0 .../app/assets/stylesheets/application.css | 15 +++ .../app/channels/application_cable/channel.rb | 4 + .../channels/application_cable/connection.rb | 4 + .../app/controllers/application_controller.rb | 3 + .../test/dummy/app/controllers/concerns/.keep | 0 .../dummy/app/helpers/application_helper.rb | 2 + .../test/dummy/app/jobs/application_job.rb | 2 + .../dummy/app/mailers/application_mailer.rb | 4 + .../dummy/app/models/application_record.rb | 3 + .../test/dummy/app/models/concerns/.keep | 0 .../app/views/layouts/application.html.erb | 14 +++ .../dummy/app/views/layouts/mailer.html.erb | 13 +++ .../dummy/app/views/layouts/mailer.text.erb | 1 + modules/grids/test/dummy/bin/bundle | 3 + modules/grids/test/dummy/bin/rails | 4 + modules/grids/test/dummy/bin/rake | 4 + modules/grids/test/dummy/bin/setup | 38 ++++++++ modules/grids/test/dummy/bin/update | 29 ++++++ modules/grids/test/dummy/bin/yarn | 11 +++ modules/grids/test/dummy/config.ru | 5 + .../grids/test/dummy/config/application.rb | 18 ++++ modules/grids/test/dummy/config/boot.rb | 5 + modules/grids/test/dummy/config/cable.yml | 10 ++ modules/grids/test/dummy/config/database.yml | 25 +++++ .../grids/test/dummy/config/environment.rb | 5 + .../dummy/config/environments/development.rb | 54 +++++++++++ .../dummy/config/environments/production.rb | 91 +++++++++++++++++++ .../test/dummy/config/environments/test.rb | 42 +++++++++ .../application_controller_renderer.rb | 8 ++ .../test/dummy/config/initializers/assets.rb | 14 +++ .../initializers/backtrace_silencers.rb | 7 ++ .../config/initializers/cookies_serializer.rb | 5 + .../initializers/filter_parameter_logging.rb | 4 + .../dummy/config/initializers/inflections.rb | 16 ++++ .../dummy/config/initializers/mime_types.rb | 4 + .../config/initializers/wrap_parameters.rb | 14 +++ .../grids/test/dummy/config/locales/en.yml | 33 +++++++ modules/grids/test/dummy/config/puma.rb | 56 ++++++++++++ modules/grids/test/dummy/config/routes.rb | 3 + modules/grids/test/dummy/config/secrets.yml | 32 +++++++ modules/grids/test/dummy/config/spring.rb | 6 ++ modules/grids/test/dummy/lib/assets/.keep | 0 modules/grids/test/dummy/log/.keep | 0 modules/grids/test/dummy/package.json | 5 + modules/grids/test/dummy/public/404.html | 67 ++++++++++++++ modules/grids/test/dummy/public/422.html | 67 ++++++++++++++ modules/grids/test/dummy/public/500.html | 66 ++++++++++++++ .../public/apple-touch-icon-precomposed.png | 0 .../test/dummy/public/apple-touch-icon.png | 0 modules/grids/test/dummy/public/favicon.ico | 0 77 files changed, 1064 insertions(+), 79 deletions(-) create mode 100644 modules/grids/.gitignore create mode 100644 modules/grids/Gemfile create mode 100644 modules/grids/README.md create mode 100644 modules/grids/Rakefile rename {app/models => modules/grids/app/models/grids}/grid.rb (78%) rename app/models/my_page_grid.rb => modules/grids/app/models/grids/my_page.rb (64%) rename app/models/grid_widget.rb => modules/grids/app/models/grids/widget.rb (87%) create mode 100755 modules/grids/bin/rails create mode 100644 modules/grids/grids.gemspec create mode 100644 modules/grids/lib/grids.rb create mode 100644 modules/grids/lib/grids/engine.rb create mode 100644 modules/grids/lib/grids/version.rb create mode 100644 modules/grids/test/dummy/Rakefile create mode 100644 modules/grids/test/dummy/app/assets/config/manifest.js create mode 100644 modules/grids/test/dummy/app/assets/images/.keep create mode 100644 modules/grids/test/dummy/app/assets/javascripts/application.js create mode 100644 modules/grids/test/dummy/app/assets/javascripts/cable.js create mode 100644 modules/grids/test/dummy/app/assets/javascripts/channels/.keep create mode 100644 modules/grids/test/dummy/app/assets/stylesheets/application.css create mode 100644 modules/grids/test/dummy/app/channels/application_cable/channel.rb create mode 100644 modules/grids/test/dummy/app/channels/application_cable/connection.rb create mode 100644 modules/grids/test/dummy/app/controllers/application_controller.rb create mode 100644 modules/grids/test/dummy/app/controllers/concerns/.keep create mode 100644 modules/grids/test/dummy/app/helpers/application_helper.rb create mode 100644 modules/grids/test/dummy/app/jobs/application_job.rb create mode 100644 modules/grids/test/dummy/app/mailers/application_mailer.rb create mode 100644 modules/grids/test/dummy/app/models/application_record.rb create mode 100644 modules/grids/test/dummy/app/models/concerns/.keep create mode 100644 modules/grids/test/dummy/app/views/layouts/application.html.erb create mode 100644 modules/grids/test/dummy/app/views/layouts/mailer.html.erb create mode 100644 modules/grids/test/dummy/app/views/layouts/mailer.text.erb create mode 100755 modules/grids/test/dummy/bin/bundle create mode 100755 modules/grids/test/dummy/bin/rails create mode 100755 modules/grids/test/dummy/bin/rake create mode 100755 modules/grids/test/dummy/bin/setup create mode 100755 modules/grids/test/dummy/bin/update create mode 100755 modules/grids/test/dummy/bin/yarn create mode 100644 modules/grids/test/dummy/config.ru create mode 100644 modules/grids/test/dummy/config/application.rb create mode 100644 modules/grids/test/dummy/config/boot.rb create mode 100644 modules/grids/test/dummy/config/cable.yml create mode 100644 modules/grids/test/dummy/config/database.yml create mode 100644 modules/grids/test/dummy/config/environment.rb create mode 100644 modules/grids/test/dummy/config/environments/development.rb create mode 100644 modules/grids/test/dummy/config/environments/production.rb create mode 100644 modules/grids/test/dummy/config/environments/test.rb create mode 100644 modules/grids/test/dummy/config/initializers/application_controller_renderer.rb create mode 100644 modules/grids/test/dummy/config/initializers/assets.rb create mode 100644 modules/grids/test/dummy/config/initializers/backtrace_silencers.rb create mode 100644 modules/grids/test/dummy/config/initializers/cookies_serializer.rb create mode 100644 modules/grids/test/dummy/config/initializers/filter_parameter_logging.rb create mode 100644 modules/grids/test/dummy/config/initializers/inflections.rb create mode 100644 modules/grids/test/dummy/config/initializers/mime_types.rb create mode 100644 modules/grids/test/dummy/config/initializers/wrap_parameters.rb create mode 100644 modules/grids/test/dummy/config/locales/en.yml create mode 100644 modules/grids/test/dummy/config/puma.rb create mode 100644 modules/grids/test/dummy/config/routes.rb create mode 100644 modules/grids/test/dummy/config/secrets.yml create mode 100644 modules/grids/test/dummy/config/spring.rb create mode 100644 modules/grids/test/dummy/lib/assets/.keep create mode 100644 modules/grids/test/dummy/log/.keep create mode 100644 modules/grids/test/dummy/package.json create mode 100644 modules/grids/test/dummy/public/404.html create mode 100644 modules/grids/test/dummy/public/422.html create mode 100644 modules/grids/test/dummy/public/500.html create mode 100644 modules/grids/test/dummy/public/apple-touch-icon-precomposed.png create mode 100644 modules/grids/test/dummy/public/apple-touch-icon.png create mode 100644 modules/grids/test/dummy/public/favicon.ico diff --git a/Gemfile.lock b/Gemfile.lock index 832d3121ad8..2bbe2971b6a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -119,6 +119,11 @@ PATH specs: openproject-global_roles (8.2.0) +PATH + remote: modules/grids + specs: + grids (8.2.0) + PATH remote: modules/meeting specs: @@ -863,6 +868,7 @@ DEPENDENCIES fuubar (~> 2.3.1) gon (~> 6.2.0) grape (~> 1.1) + grids! health_check html-pipeline (~> 2.8.0) htmldiff diff --git a/Gemfile.modules b/Gemfile.modules index 03ee57b97a7..b762b99f747 100644 --- a/Gemfile.modules +++ b/Gemfile.modules @@ -13,20 +13,25 @@ gem 'omniauth-openid-connect', ref: '42c4bd27aaab986e0d8723da50314135691a0955' group :opf_plugins do - gem 'openproject-global_roles', path: 'modules/global_roles' - gem 'openproject-auth_plugins', path: 'modules/auth_plugins' - gem 'openproject-openid_connect', path: 'modules/openid_connect' - gem 'openproject-documents', path: 'modules/documents' - gem 'openproject-my_project_page', path: 'modules/my_project_page' - gem 'openproject-xls_export', path: 'modules/xls_export' - gem 'reporting_engine', path: 'modules/reporting_engine' - gem 'openproject-costs', path: 'modules/costs' - gem 'openproject-reporting', path: 'modules/reporting' - gem 'openproject-meeting', path: 'modules/meeting' - gem 'openproject-pdf_export', path: 'modules/pdf_export' - gem "openproject-backlogs", path: 'modules/backlogs' - gem 'openproject-avatars', path: 'modules/avatars' - gem 'openproject-two_factor_authentication', path: 'modules/two_factor_authentication' - gem 'openproject-webhooks', path: 'modules/webhooks' - gem 'openproject-github_integration', path: 'modules/github_integration' + # included so that engines can reference OpenProject::Version + $:.push File.expand_path("../lib", __FILE__) + + gem 'openproject-global_roles', path: 'modules/global_roles' + gem 'openproject-auth_plugins', path: 'modules/auth_plugins' + gem 'openproject-openid_connect', path: 'modules/openid_connect' + gem 'openproject-documents', path: 'modules/documents' + gem 'openproject-my_project_page', path: 'modules/my_project_page' + gem 'openproject-xls_export', path: 'modules/xls_export' + gem 'reporting_engine', path: 'modules/reporting_engine' + gem 'openproject-costs', path: 'modules/costs' + gem 'openproject-reporting', path: 'modules/reporting' + gem 'openproject-meeting', path: 'modules/meeting' + gem 'openproject-pdf_export', path: 'modules/pdf_export' + gem "openproject-backlogs", path: 'modules/backlogs' + gem 'openproject-avatars', path: 'modules/avatars' + gem 'openproject-two_factor_authentication', path: 'modules/two_factor_authentication' + gem 'openproject-webhooks', path: 'modules/webhooks' + gem 'openproject-github_integration', path: 'modules/github_integration' + + gem 'grids', path: 'modules/grids' end diff --git a/app/models/grids/configuration.rb b/app/models/grids/configuration.rb index fd75fb03943..c35390166d9 100644 --- a/app/models/grids/configuration.rb +++ b/app/models/grids/configuration.rb @@ -101,12 +101,13 @@ class Grids::Configuration end end -Grids::Configuration.register_grid('MyPageGrid', 'my_page_path') -Grids::Configuration.register_widget('work_packages_assigned', 'MyPageGrid') -Grids::Configuration.register_widget('work_packages_accountable', 'MyPageGrid') -Grids::Configuration.register_widget('work_packages_watched', 'MyPageGrid') -Grids::Configuration.register_widget('work_packages_created', 'MyPageGrid') -Grids::Configuration.register_widget('work_packages_calendar', 'MyPageGrid') -Grids::Configuration.register_widget('time_entries_current_user', 'MyPageGrid') -Grids::Configuration.register_widget('documents', 'MyPageGrid') -Grids::Configuration.register_widget('news', 'MyPageGrid') +# TODO: move to modules/grids/lib/grids??? +Grids::Configuration.register_grid('Grids::MyPage', 'my_page_path') +Grids::Configuration.register_widget('work_packages_assigned', 'Grids::MyPage') +Grids::Configuration.register_widget('work_packages_accountable', 'Grids::MyPage') +Grids::Configuration.register_widget('work_packages_watched', 'Grids::MyPage') +Grids::Configuration.register_widget('work_packages_created', 'Grids::MyPage') +Grids::Configuration.register_widget('work_packages_calendar', 'Grids::MyPage') +Grids::Configuration.register_widget('time_entries_current_user', 'Grids::MyPage') +Grids::Configuration.register_widget('documents', 'Grids::MyPage') +Grids::Configuration.register_widget('news', 'Grids::MyPage') diff --git a/app/models/queries/grids/filters/grid_filter.rb b/app/models/queries/grids/filters/grid_filter.rb index d5e2e53426b..44f69307419 100644 --- a/app/models/queries/grids/filters/grid_filter.rb +++ b/app/models/queries/grids/filters/grid_filter.rb @@ -29,9 +29,9 @@ #++ class Queries::Grids::Filters::GridFilter < Queries::Filters::Base - self.model = Grid + self.model = ::Grids::Grid def human_name - Grid.human_attribute_name(name) + Grids::Grid.human_attribute_name(name) end end diff --git a/app/models/queries/grids/grid_query.rb b/app/models/queries/grids/grid_query.rb index d20437b5376..2a39e5a3b6c 100644 --- a/app/models/queries/grids/grid_query.rb +++ b/app/models/queries/grids/grid_query.rb @@ -28,7 +28,7 @@ class Queries::Grids::GridQuery < Queries::BaseQuery def self.model - Grid + Grids::Grid end def default_scope @@ -42,6 +42,6 @@ class Queries::Grids::GridQuery < Queries::BaseQuery # Have to use the subselect as AR will otherwise remove # associations not defined on the subclass - Grid.where(id: or_scope) + Grids::Grid.where(id: or_scope) end end diff --git a/app/services/params_to_query_service.rb b/app/services/params_to_query_service.rb index 8e02913a576..b785eb5aefb 100644 --- a/app/services/params_to_query_service.rb +++ b/app/services/params_to_query_service.rb @@ -27,11 +27,11 @@ #++ class ParamsToQueryService - attr_accessor :model, - :user + attr_accessor :user, + :query_class - def initialize(model, user) - self.model = model + def initialize(model, user, query_class: nil) + set_query_class(query_class, model) self.user = user end @@ -120,9 +120,14 @@ class ParamsToQueryService @conversion_model ||= ::API::Utilities::QueryFiltersNameConverterContext.new(query_class) end - def query_class - model_name = model.name + def set_query_class(query_class, model) - "::Queries::#{model_name.pluralize}::#{model_name}Query".constantize + self.query_class = if query_class + query_class + else + model_name = model.name + + "::Queries::#{model_name.pluralize}::#{model_name}Query".constantize + end end end diff --git a/lib/api/v3/grids/grid_representer.rb b/lib/api/v3/grids/grid_representer.rb index ed8c0cf7904..3e9b10f25f4 100644 --- a/lib/api/v3/grids/grid_representer.rb +++ b/lib/api/v3/grids/grid_representer.rb @@ -79,7 +79,7 @@ module API setter: ->(fragment:, **) do represented.widgets = fragment.map do |widget_fragment| WidgetRepresenter - .new(GridWidget.new, current_user: current_user) + .new(::Grids::Widget.new, current_user: current_user) .from_hash(widget_fragment.with_indifferent_access) end end diff --git a/lib/api/v3/grids/grids_api.rb b/lib/api/v3/grids/grids_api.rb index e359be91612..039b8b9d72d 100644 --- a/lib/api/v3/grids/grids_api.rb +++ b/lib/api/v3/grids/grids_api.rb @@ -37,7 +37,7 @@ module API get do query = ParamsToQueryService - .new(Grid, current_user) + .new(::Grids::Grid, current_user, query_class: ::Queries::Grids::GridQuery) .call(params) if query.valid? diff --git a/lib/api/v3/grids/schemas/grid_schema_representer.rb b/lib/api/v3/grids/schemas/grid_schema_representer.rb index bd40cf9e6b5..1efb1ad145a 100644 --- a/lib/api/v3/grids/schemas/grid_schema_representer.rb +++ b/lib/api/v3/grids/schemas/grid_schema_representer.rb @@ -82,7 +82,7 @@ module API link_factory: false def self.represented_class - Grid + ::Grids::Grid end def _dependencies diff --git a/modules/grids/.gitignore b/modules/grids/.gitignore new file mode 100644 index 00000000000..71f82cb25d0 --- /dev/null +++ b/modules/grids/.gitignore @@ -0,0 +1,7 @@ +.bundle/ +log/*.log +pkg/ +test/dummy/db/*.sqlite3 +test/dummy/db/*.sqlite3-journal +test/dummy/log/*.log +test/dummy/tmp/ diff --git a/modules/grids/Gemfile b/modules/grids/Gemfile new file mode 100644 index 00000000000..1933bd4145b --- /dev/null +++ b/modules/grids/Gemfile @@ -0,0 +1,14 @@ +source 'https://rubygems.org' + +# Declare your gem's dependencies in grids.gemspec. +# Bundler will treat runtime dependencies like base dependencies, and +# development dependencies will be added by default to the :development group. +gemspec + +# Declare any dependencies that are still in development here instead of in +# your gemspec. These might include edge Rails or gems from your path or +# Git. Remember to move these dependencies to your gemspec before releasing +# your gem to rubygems.org. + +# To use a debugger +# gem 'byebug', group: [:development, :test] diff --git a/modules/grids/README.md b/modules/grids/README.md new file mode 100644 index 00000000000..77a83110e03 --- /dev/null +++ b/modules/grids/README.md @@ -0,0 +1,3 @@ +# Grids +Short description and motivation. + diff --git a/modules/grids/Rakefile b/modules/grids/Rakefile new file mode 100644 index 00000000000..db9044723e1 --- /dev/null +++ b/modules/grids/Rakefile @@ -0,0 +1,36 @@ +begin + require 'bundler/setup' +rescue LoadError + puts 'You must `gem install bundler` and `bundle install` to run rake tasks' +end + +require 'rdoc/task' + +RDoc::Task.new(:rdoc) do |rdoc| + rdoc.rdoc_dir = 'rdoc' + rdoc.title = 'Grids' + rdoc.options << '--line-numbers' + rdoc.rdoc_files.include('README.md') + rdoc.rdoc_files.include('lib/**/*.rb') +end + +APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__) +load 'rails/tasks/engine.rake' + + +load 'rails/tasks/statistics.rake' + + + +require 'bundler/gem_tasks' + +require 'rake/testtask' + +Rake::TestTask.new(:test) do |t| + t.libs << 'test' + t.pattern = 'test/**/*_test.rb' + t.verbose = false +end + + +task default: :test diff --git a/app/models/grid.rb b/modules/grids/app/models/grids/grid.rb similarity index 78% rename from app/models/grid.rb rename to modules/grids/app/models/grids/grid.rb index 13f22d7d1ca..d1d3600f5e6 100644 --- a/app/models/grid.rb +++ b/modules/grids/app/models/grids/grid.rb @@ -28,16 +28,21 @@ # See docs/COPYRIGHT.rdoc for more details. #++ -class Grid < ActiveRecord::Base - has_many :widgets, - class_name: 'GridWidget', - autosave: true +module Grids + class Grid < ActiveRecord::Base + # TODO: check if this needs to be namespaced + self.table_name = :grids - def self.new_default(_user) - new( - row_count: 4, - column_count: 5, - widgets: [] - ) + has_many :widgets, + class_name: 'Widget', + autosave: true + + def self.new_default(_user) + new( + row_count: 4, + column_count: 5, + widgets: [] + ) + end end end diff --git a/app/models/my_page_grid.rb b/modules/grids/app/models/grids/my_page.rb similarity index 64% rename from app/models/my_page_grid.rb rename to modules/grids/app/models/grids/my_page.rb index a3e205ee482..733086e4353 100644 --- a/app/models/my_page_grid.rb +++ b/modules/grids/app/models/grids/my_page.rb @@ -28,34 +28,36 @@ # See docs/COPYRIGHT.rdoc for more details. #++ -class MyPageGrid < Grid - belongs_to :user +module Grids + class MyPage < Grid + belongs_to :user - def self.new_default(user) - new( - user: user, - row_count: 7, - column_count: 4, - widgets: [ - GridWidget.new( - identifier: 'work_packages_assigned', - start_row: 1, - end_row: 7, - start_column: 1, - end_column: 3 - ), - GridWidget.new( - identifier: 'work_packages_created', - start_row: 1, - end_row: 7, - start_column: 3, - end_column: 5 - ) - ] - ) - end + def self.new_default(user) + new( + user: user, + row_count: 7, + column_count: 4, + widgets: [ + Grids::Widget.new( + identifier: 'work_packages_assigned', + start_row: 1, + end_row: 7, + start_column: 1, + end_column: 3 + ), + Grids::Widget.new( + identifier: 'work_packages_created', + start_row: 1, + end_row: 7, + start_column: 3, + end_column: 5 + ) + ] + ) + end - def self.visible_scope - where(user_id: User.current.id) + def self.visible_scope + where(user_id: User.current.id) + end end end diff --git a/app/models/grid_widget.rb b/modules/grids/app/models/grids/widget.rb similarity index 87% rename from app/models/grid_widget.rb rename to modules/grids/app/models/grids/widget.rb index 52ee5ad75d6..aad53f1e3dd 100644 --- a/app/models/grid_widget.rb +++ b/modules/grids/app/models/grids/widget.rb @@ -28,7 +28,12 @@ # See docs/COPYRIGHT.rdoc for more details. #++ -class GridWidget < ActiveRecord::Base - belongs_to :grid - serialize :options, Hash +module Grids + class Widget < ActiveRecord::Base + # TODO: make superfluous + self.table_name = :grid_widgets + + belongs_to :grid + serialize :options, Hash + end end diff --git a/modules/grids/bin/rails b/modules/grids/bin/rails new file mode 100755 index 00000000000..b676279b957 --- /dev/null +++ b/modules/grids/bin/rails @@ -0,0 +1,14 @@ +#!/usr/bin/env ruby +# This command will automatically be run when you run "rails" with Rails gems +# installed from the root of your application. + +ENGINE_ROOT = File.expand_path('../..', __FILE__) +ENGINE_PATH = File.expand_path('../../lib/grids/engine', __FILE__) +APP_PATH = File.expand_path('../../test/dummy/config/application', __FILE__) + +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) + +require 'rails/all' +require 'rails/engine/commands' diff --git a/modules/grids/grids.gemspec b/modules/grids/grids.gemspec new file mode 100644 index 00000000000..89ce937ef07 --- /dev/null +++ b/modules/grids/grids.gemspec @@ -0,0 +1,14 @@ +$:.push File.expand_path("../lib", __FILE__) + +# Maintain your gem's version: +require "grids/version" + +# Describe your gem and declare its dependencies: +Gem::Specification.new do |s| + s.name = "grids" + s.version = Grids::VERSION + s.authors = ["OpenProject"] + s.summary = "OpenProject Grids." + + s.files = Dir["{app,config,db,lib}/**/*", "Rakefile"] +end diff --git a/modules/grids/lib/grids.rb b/modules/grids/lib/grids.rb new file mode 100644 index 00000000000..7af91284175 --- /dev/null +++ b/modules/grids/lib/grids.rb @@ -0,0 +1,5 @@ +require "grids/engine" + +module Grids + # Your code goes here... +end diff --git a/modules/grids/lib/grids/engine.rb b/modules/grids/lib/grids/engine.rb new file mode 100644 index 00000000000..250dc3d8262 --- /dev/null +++ b/modules/grids/lib/grids/engine.rb @@ -0,0 +1,5 @@ +module Grids + class Engine < ::Rails::Engine + isolate_namespace Grids + end +end diff --git a/modules/grids/lib/grids/version.rb b/modules/grids/lib/grids/version.rb new file mode 100644 index 00000000000..a9425c3f716 --- /dev/null +++ b/modules/grids/lib/grids/version.rb @@ -0,0 +1,5 @@ +require 'open_project/version' + +module Grids + VERSION = ::OpenProject::VERSION.to_semver +end diff --git a/modules/grids/test/dummy/Rakefile b/modules/grids/test/dummy/Rakefile new file mode 100644 index 00000000000..e85f913914b --- /dev/null +++ b/modules/grids/test/dummy/Rakefile @@ -0,0 +1,6 @@ +# Add your own tasks in files placed in lib/tasks ending in .rake, +# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. + +require_relative 'config/application' + +Rails.application.load_tasks diff --git a/modules/grids/test/dummy/app/assets/config/manifest.js b/modules/grids/test/dummy/app/assets/config/manifest.js new file mode 100644 index 00000000000..d631a9cfd2b --- /dev/null +++ b/modules/grids/test/dummy/app/assets/config/manifest.js @@ -0,0 +1,5 @@ + +//= link_tree ../images +//= link_directory ../javascripts .js +//= link_directory ../stylesheets .css +//= link grids_manifest.js diff --git a/modules/grids/test/dummy/app/assets/images/.keep b/modules/grids/test/dummy/app/assets/images/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/app/assets/javascripts/application.js b/modules/grids/test/dummy/app/assets/javascripts/application.js new file mode 100644 index 00000000000..e54c6461cc3 --- /dev/null +++ b/modules/grids/test/dummy/app/assets/javascripts/application.js @@ -0,0 +1,13 @@ +// This is a manifest file that'll be compiled into application.js, which will include all the files +// listed below. +// +// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, +// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. +// +// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the +// compiled file. JavaScript code in this file should be added after the last require_* statement. +// +// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details +// about supported directives. +// +//= require_tree . diff --git a/modules/grids/test/dummy/app/assets/javascripts/cable.js b/modules/grids/test/dummy/app/assets/javascripts/cable.js new file mode 100644 index 00000000000..739aa5f0220 --- /dev/null +++ b/modules/grids/test/dummy/app/assets/javascripts/cable.js @@ -0,0 +1,13 @@ +// Action Cable provides the framework to deal with WebSockets in Rails. +// You can generate new channels where WebSocket features live using the `rails generate channel` command. +// +//= require action_cable +//= require_self +//= require_tree ./channels + +(function() { + this.App || (this.App = {}); + + App.cable = ActionCable.createConsumer(); + +}).call(this); diff --git a/modules/grids/test/dummy/app/assets/javascripts/channels/.keep b/modules/grids/test/dummy/app/assets/javascripts/channels/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/app/assets/stylesheets/application.css b/modules/grids/test/dummy/app/assets/stylesheets/application.css new file mode 100644 index 00000000000..0ebd7fe8299 --- /dev/null +++ b/modules/grids/test/dummy/app/assets/stylesheets/application.css @@ -0,0 +1,15 @@ +/* + * This is a manifest file that'll be compiled into application.css, which will include all the files + * listed below. + * + * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets, + * or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path. + * + * You're free to add application-wide styles to this file and they'll appear at the bottom of the + * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS + * files in this directory. Styles in this file should be added after the last require_* statement. + * It is generally better to create a new file per style scope. + * + *= require_tree . + *= require_self + */ diff --git a/modules/grids/test/dummy/app/channels/application_cable/channel.rb b/modules/grids/test/dummy/app/channels/application_cable/channel.rb new file mode 100644 index 00000000000..d6726972830 --- /dev/null +++ b/modules/grids/test/dummy/app/channels/application_cable/channel.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Channel < ActionCable::Channel::Base + end +end diff --git a/modules/grids/test/dummy/app/channels/application_cable/connection.rb b/modules/grids/test/dummy/app/channels/application_cable/connection.rb new file mode 100644 index 00000000000..0ff5442f476 --- /dev/null +++ b/modules/grids/test/dummy/app/channels/application_cable/connection.rb @@ -0,0 +1,4 @@ +module ApplicationCable + class Connection < ActionCable::Connection::Base + end +end diff --git a/modules/grids/test/dummy/app/controllers/application_controller.rb b/modules/grids/test/dummy/app/controllers/application_controller.rb new file mode 100644 index 00000000000..1c07694e9d9 --- /dev/null +++ b/modules/grids/test/dummy/app/controllers/application_controller.rb @@ -0,0 +1,3 @@ +class ApplicationController < ActionController::Base + protect_from_forgery with: :exception +end diff --git a/modules/grids/test/dummy/app/controllers/concerns/.keep b/modules/grids/test/dummy/app/controllers/concerns/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/app/helpers/application_helper.rb b/modules/grids/test/dummy/app/helpers/application_helper.rb new file mode 100644 index 00000000000..de6be7945c6 --- /dev/null +++ b/modules/grids/test/dummy/app/helpers/application_helper.rb @@ -0,0 +1,2 @@ +module ApplicationHelper +end diff --git a/modules/grids/test/dummy/app/jobs/application_job.rb b/modules/grids/test/dummy/app/jobs/application_job.rb new file mode 100644 index 00000000000..a009ace51cc --- /dev/null +++ b/modules/grids/test/dummy/app/jobs/application_job.rb @@ -0,0 +1,2 @@ +class ApplicationJob < ActiveJob::Base +end diff --git a/modules/grids/test/dummy/app/mailers/application_mailer.rb b/modules/grids/test/dummy/app/mailers/application_mailer.rb new file mode 100644 index 00000000000..286b2239d13 --- /dev/null +++ b/modules/grids/test/dummy/app/mailers/application_mailer.rb @@ -0,0 +1,4 @@ +class ApplicationMailer < ActionMailer::Base + default from: 'from@example.com' + layout 'mailer' +end diff --git a/modules/grids/test/dummy/app/models/application_record.rb b/modules/grids/test/dummy/app/models/application_record.rb new file mode 100644 index 00000000000..10a4cba84df --- /dev/null +++ b/modules/grids/test/dummy/app/models/application_record.rb @@ -0,0 +1,3 @@ +class ApplicationRecord < ActiveRecord::Base + self.abstract_class = true +end diff --git a/modules/grids/test/dummy/app/models/concerns/.keep b/modules/grids/test/dummy/app/models/concerns/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/app/views/layouts/application.html.erb b/modules/grids/test/dummy/app/views/layouts/application.html.erb new file mode 100644 index 00000000000..a6eb0174b7e --- /dev/null +++ b/modules/grids/test/dummy/app/views/layouts/application.html.erb @@ -0,0 +1,14 @@ + + + + Dummy + <%= csrf_meta_tags %> + + <%= stylesheet_link_tag 'application', media: 'all' %> + <%= javascript_include_tag 'application' %> + + + + <%= yield %> + + diff --git a/modules/grids/test/dummy/app/views/layouts/mailer.html.erb b/modules/grids/test/dummy/app/views/layouts/mailer.html.erb new file mode 100644 index 00000000000..cbd34d2e9dd --- /dev/null +++ b/modules/grids/test/dummy/app/views/layouts/mailer.html.erb @@ -0,0 +1,13 @@ + + + + + + + + + <%= yield %> + + diff --git a/modules/grids/test/dummy/app/views/layouts/mailer.text.erb b/modules/grids/test/dummy/app/views/layouts/mailer.text.erb new file mode 100644 index 00000000000..37f0bddbd74 --- /dev/null +++ b/modules/grids/test/dummy/app/views/layouts/mailer.text.erb @@ -0,0 +1 @@ +<%= yield %> diff --git a/modules/grids/test/dummy/bin/bundle b/modules/grids/test/dummy/bin/bundle new file mode 100755 index 00000000000..66e9889e8b4 --- /dev/null +++ b/modules/grids/test/dummy/bin/bundle @@ -0,0 +1,3 @@ +#!/usr/bin/env ruby +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) +load Gem.bin_path('bundler', 'bundle') diff --git a/modules/grids/test/dummy/bin/rails b/modules/grids/test/dummy/bin/rails new file mode 100755 index 00000000000..07396602377 --- /dev/null +++ b/modules/grids/test/dummy/bin/rails @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +APP_PATH = File.expand_path('../config/application', __dir__) +require_relative '../config/boot' +require 'rails/commands' diff --git a/modules/grids/test/dummy/bin/rake b/modules/grids/test/dummy/bin/rake new file mode 100755 index 00000000000..17240489f64 --- /dev/null +++ b/modules/grids/test/dummy/bin/rake @@ -0,0 +1,4 @@ +#!/usr/bin/env ruby +require_relative '../config/boot' +require 'rake' +Rake.application.run diff --git a/modules/grids/test/dummy/bin/setup b/modules/grids/test/dummy/bin/setup new file mode 100755 index 00000000000..78c4e861dc6 --- /dev/null +++ b/modules/grids/test/dummy/bin/setup @@ -0,0 +1,38 @@ +#!/usr/bin/env ruby +require 'pathname' +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a starting point to setup your application. + # Add necessary setup steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + # Install JavaScript dependencies if using Yarn + # system('bin/yarn') + + + # puts "\n== Copying sample files ==" + # unless File.exist?('config/database.yml') + # cp 'config/database.yml.sample', 'config/database.yml' + # end + + puts "\n== Preparing database ==" + system! 'bin/rails db:setup' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/modules/grids/test/dummy/bin/update b/modules/grids/test/dummy/bin/update new file mode 100755 index 00000000000..a8e4462f203 --- /dev/null +++ b/modules/grids/test/dummy/bin/update @@ -0,0 +1,29 @@ +#!/usr/bin/env ruby +require 'pathname' +require 'fileutils' +include FileUtils + +# path to your application root. +APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) + +def system!(*args) + system(*args) || abort("\n== Command #{args} failed ==") +end + +chdir APP_ROOT do + # This script is a way to update your development environment automatically. + # Add necessary update steps to this file. + + puts '== Installing dependencies ==' + system! 'gem install bundler --conservative' + system('bundle check') || system!('bundle install') + + puts "\n== Updating database ==" + system! 'bin/rails db:migrate' + + puts "\n== Removing old logs and tempfiles ==" + system! 'bin/rails log:clear tmp:clear' + + puts "\n== Restarting application server ==" + system! 'bin/rails restart' +end diff --git a/modules/grids/test/dummy/bin/yarn b/modules/grids/test/dummy/bin/yarn new file mode 100755 index 00000000000..c2bacef836f --- /dev/null +++ b/modules/grids/test/dummy/bin/yarn @@ -0,0 +1,11 @@ +#!/usr/bin/env ruby +VENDOR_PATH = File.expand_path('..', __dir__) +Dir.chdir(VENDOR_PATH) do + begin + exec "yarnpkg #{ARGV.join(" ")}" + rescue Errno::ENOENT + $stderr.puts "Yarn executable was not detected in the system." + $stderr.puts "Download Yarn at https://yarnpkg.com/en/docs/install" + exit 1 + end +end diff --git a/modules/grids/test/dummy/config.ru b/modules/grids/test/dummy/config.ru new file mode 100644 index 00000000000..f7ba0b527b1 --- /dev/null +++ b/modules/grids/test/dummy/config.ru @@ -0,0 +1,5 @@ +# This file is used by Rack-based servers to start the application. + +require_relative 'config/environment' + +run Rails.application diff --git a/modules/grids/test/dummy/config/application.rb b/modules/grids/test/dummy/config/application.rb new file mode 100644 index 00000000000..3d5f555d76e --- /dev/null +++ b/modules/grids/test/dummy/config/application.rb @@ -0,0 +1,18 @@ +require_relative 'boot' + +require 'rails/all' + +Bundler.require(*Rails.groups) +require "grids" + +module Dummy + class Application < Rails::Application + # Initialize configuration defaults for originally generated Rails version. + config.load_defaults 5.1 + + # Settings in config/environments/* take precedence over those specified here. + # Application configuration should go into files in config/initializers + # -- all .rb files in that directory are automatically loaded. + end +end + diff --git a/modules/grids/test/dummy/config/boot.rb b/modules/grids/test/dummy/config/boot.rb new file mode 100644 index 00000000000..c9aef85d404 --- /dev/null +++ b/modules/grids/test/dummy/config/boot.rb @@ -0,0 +1,5 @@ +# Set up gems listed in the Gemfile. +ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __dir__) + +require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) +$LOAD_PATH.unshift File.expand_path('../../../lib', __dir__) diff --git a/modules/grids/test/dummy/config/cable.yml b/modules/grids/test/dummy/config/cable.yml new file mode 100644 index 00000000000..d3dfabd577a --- /dev/null +++ b/modules/grids/test/dummy/config/cable.yml @@ -0,0 +1,10 @@ +development: + adapter: async + +test: + adapter: async + +production: + adapter: redis + url: redis://localhost:6379/1 + channel_prefix: dummy_production diff --git a/modules/grids/test/dummy/config/database.yml b/modules/grids/test/dummy/config/database.yml new file mode 100644 index 00000000000..0d02f249800 --- /dev/null +++ b/modules/grids/test/dummy/config/database.yml @@ -0,0 +1,25 @@ +# SQLite version 3.x +# gem install sqlite3 +# +# Ensure the SQLite 3 gem is defined in your Gemfile +# gem 'sqlite3' +# +default: &default + adapter: sqlite3 + pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> + timeout: 5000 + +development: + <<: *default + database: db/development.sqlite3 + +# Warning: The database defined as "test" will be erased and +# re-generated from your development database when you run "rake". +# Do not set this db to the same as development or production. +test: + <<: *default + database: db/test.sqlite3 + +production: + <<: *default + database: db/production.sqlite3 diff --git a/modules/grids/test/dummy/config/environment.rb b/modules/grids/test/dummy/config/environment.rb new file mode 100644 index 00000000000..426333bb469 --- /dev/null +++ b/modules/grids/test/dummy/config/environment.rb @@ -0,0 +1,5 @@ +# Load the Rails application. +require_relative 'application' + +# Initialize the Rails application. +Rails.application.initialize! diff --git a/modules/grids/test/dummy/config/environments/development.rb b/modules/grids/test/dummy/config/environments/development.rb new file mode 100644 index 00000000000..55d8c9e7bb4 --- /dev/null +++ b/modules/grids/test/dummy/config/environments/development.rb @@ -0,0 +1,54 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # In the development environment your application's code is reloaded on + # every request. This slows down response time but is perfect for development + # since you don't have to restart the web server when you make code changes. + config.cache_classes = false + + # Do not eager load code on boot. + config.eager_load = false + + # Show full error reports. + config.consider_all_requests_local = true + + # Enable/disable caching. By default caching is disabled. + if Rails.root.join('tmp/caching-dev.txt').exist? + config.action_controller.perform_caching = true + + config.cache_store = :memory_store + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{2.days.seconds.to_i}" + } + else + config.action_controller.perform_caching = false + + config.cache_store = :null_store + end + + # Don't care if the mailer can't send. + config.action_mailer.raise_delivery_errors = false + + config.action_mailer.perform_caching = false + + # Print deprecation notices to the Rails logger. + config.active_support.deprecation = :log + + # Raise an error on page load if there are pending migrations. + config.active_record.migration_error = :page_load + + # Debug mode disables concatenation and preprocessing of assets. + # This option may cause significant delays in view rendering with a large + # number of complex assets. + config.assets.debug = true + + # Suppress logger output for asset requests. + config.assets.quiet = true + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true + + # Use an evented file watcher to asynchronously detect changes in source code, + # routes, locales, etc. This feature depends on the listen gem. + # config.file_watcher = ActiveSupport::EventedFileUpdateChecker +end diff --git a/modules/grids/test/dummy/config/environments/production.rb b/modules/grids/test/dummy/config/environments/production.rb new file mode 100644 index 00000000000..6ea00186264 --- /dev/null +++ b/modules/grids/test/dummy/config/environments/production.rb @@ -0,0 +1,91 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # Code is not reloaded between requests. + config.cache_classes = true + + # Eager load code on boot. This eager loads most of Rails and + # your application in memory, allowing both threaded web servers + # and those relying on copy on write to perform better. + # Rake tasks automatically ignore this option for performance. + config.eager_load = true + + # Full error reports are disabled and caching is turned on. + config.consider_all_requests_local = false + config.action_controller.perform_caching = true + + # Attempt to read encrypted secrets from `config/secrets.yml.enc`. + # Requires an encryption key in `ENV["RAILS_MASTER_KEY"]` or + # `config/secrets.yml.key`. + config.read_encrypted_secrets = true + + # Disable serving static files from the `/public` folder by default since + # Apache or NGINX already handles this. + config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present? + + # Compress JavaScripts and CSS. + config.assets.js_compressor = :uglifier + # config.assets.css_compressor = :sass + + # Do not fallback to assets pipeline if a precompiled asset is missed. + config.assets.compile = false + + # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb + + # Enable serving of images, stylesheets, and JavaScripts from an asset server. + # config.action_controller.asset_host = 'http://assets.example.com' + + # Specifies the header that your server uses for sending files. + # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache + # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX + + # Mount Action Cable outside main process or domain + # config.action_cable.mount_path = nil + # config.action_cable.url = 'wss://example.com/cable' + # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ] + + # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. + # config.force_ssl = true + + # Use the lowest log level to ensure availability of diagnostic information + # when problems arise. + config.log_level = :debug + + # Prepend all log lines with the following tags. + config.log_tags = [ :request_id ] + + # Use a different cache store in production. + # config.cache_store = :mem_cache_store + + # Use a real queuing backend for Active Job (and separate queues per environment) + # config.active_job.queue_adapter = :resque + # config.active_job.queue_name_prefix = "dummy_#{Rails.env}" + config.action_mailer.perform_caching = false + + # Ignore bad email addresses and do not raise email delivery errors. + # Set this to true and configure the email server for immediate delivery to raise delivery errors. + # config.action_mailer.raise_delivery_errors = false + + # Enable locale fallbacks for I18n (makes lookups for any locale fall back to + # the I18n.default_locale when a translation cannot be found). + config.i18n.fallbacks = true + + # Send deprecation notices to registered listeners. + config.active_support.deprecation = :notify + + # Use default logging formatter so that PID and timestamp are not suppressed. + config.log_formatter = ::Logger::Formatter.new + + # Use a different logger for distributed setups. + # require 'syslog/logger' + # config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new 'app-name') + + if ENV["RAILS_LOG_TO_STDOUT"].present? + logger = ActiveSupport::Logger.new(STDOUT) + logger.formatter = config.log_formatter + config.logger = ActiveSupport::TaggedLogging.new(logger) + end + + # Do not dump schema after migrations. + config.active_record.dump_schema_after_migration = false +end diff --git a/modules/grids/test/dummy/config/environments/test.rb b/modules/grids/test/dummy/config/environments/test.rb new file mode 100644 index 00000000000..8e5cbde5334 --- /dev/null +++ b/modules/grids/test/dummy/config/environments/test.rb @@ -0,0 +1,42 @@ +Rails.application.configure do + # Settings specified here will take precedence over those in config/application.rb. + + # The test environment is used exclusively to run your application's + # test suite. You never need to work with it otherwise. Remember that + # your test database is "scratch space" for the test suite and is wiped + # and recreated between test runs. Don't rely on the data there! + config.cache_classes = true + + # Do not eager load code on boot. This avoids loading your whole application + # just for the purpose of running a single test. If you are using a tool that + # preloads Rails for running tests, you may have to set it to true. + config.eager_load = false + + # Configure public file server for tests with Cache-Control for performance. + config.public_file_server.enabled = true + config.public_file_server.headers = { + 'Cache-Control' => "public, max-age=#{1.hour.seconds.to_i}" + } + + # Show full error reports and disable caching. + config.consider_all_requests_local = true + config.action_controller.perform_caching = false + + # Raise exceptions instead of rendering exception templates. + config.action_dispatch.show_exceptions = false + + # Disable request forgery protection in test environment. + config.action_controller.allow_forgery_protection = false + config.action_mailer.perform_caching = false + + # Tell Action Mailer not to deliver emails to the real world. + # The :test delivery method accumulates sent emails in the + # ActionMailer::Base.deliveries array. + config.action_mailer.delivery_method = :test + + # Print deprecation notices to the stderr. + config.active_support.deprecation = :stderr + + # Raises error for missing translations + # config.action_view.raise_on_missing_translations = true +end diff --git a/modules/grids/test/dummy/config/initializers/application_controller_renderer.rb b/modules/grids/test/dummy/config/initializers/application_controller_renderer.rb new file mode 100644 index 00000000000..89d2efab2ba --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/application_controller_renderer.rb @@ -0,0 +1,8 @@ +# Be sure to restart your server when you modify this file. + +# ActiveSupport::Reloader.to_prepare do +# ApplicationController.renderer.defaults.merge!( +# http_host: 'example.org', +# https: false +# ) +# end diff --git a/modules/grids/test/dummy/config/initializers/assets.rb b/modules/grids/test/dummy/config/initializers/assets.rb new file mode 100644 index 00000000000..4b828e80cb7 --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/assets.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# Version of your assets, change this if you want to expire all your assets. +Rails.application.config.assets.version = '1.0' + +# Add additional assets to the asset load path. +# Rails.application.config.assets.paths << Emoji.images_path +# Add Yarn node_modules folder to the asset load path. +Rails.application.config.assets.paths << Rails.root.join('node_modules') + +# Precompile additional assets. +# application.js, application.css, and all non-JS/CSS in the app/assets +# folder are already added. +# Rails.application.config.assets.precompile += %w( admin.js admin.css ) diff --git a/modules/grids/test/dummy/config/initializers/backtrace_silencers.rb b/modules/grids/test/dummy/config/initializers/backtrace_silencers.rb new file mode 100644 index 00000000000..59385cdf379 --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/backtrace_silencers.rb @@ -0,0 +1,7 @@ +# Be sure to restart your server when you modify this file. + +# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces. +# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ } + +# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code. +# Rails.backtrace_cleaner.remove_silencers! diff --git a/modules/grids/test/dummy/config/initializers/cookies_serializer.rb b/modules/grids/test/dummy/config/initializers/cookies_serializer.rb new file mode 100644 index 00000000000..5a6a32d371f --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/cookies_serializer.rb @@ -0,0 +1,5 @@ +# Be sure to restart your server when you modify this file. + +# Specify a serializer for the signed and encrypted cookie jars. +# Valid options are :json, :marshal, and :hybrid. +Rails.application.config.action_dispatch.cookies_serializer = :json diff --git a/modules/grids/test/dummy/config/initializers/filter_parameter_logging.rb b/modules/grids/test/dummy/config/initializers/filter_parameter_logging.rb new file mode 100644 index 00000000000..4a994e1e7bb --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/filter_parameter_logging.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Configure sensitive parameters which will be filtered from the log file. +Rails.application.config.filter_parameters += [:password] diff --git a/modules/grids/test/dummy/config/initializers/inflections.rb b/modules/grids/test/dummy/config/initializers/inflections.rb new file mode 100644 index 00000000000..ac033bf9dc8 --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/inflections.rb @@ -0,0 +1,16 @@ +# Be sure to restart your server when you modify this file. + +# Add new inflection rules using the following format. Inflections +# are locale specific, and you may define rules for as many different +# locales as you wish. All of these examples are active by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.plural /^(ox)$/i, '\1en' +# inflect.singular /^(ox)en/i, '\1' +# inflect.irregular 'person', 'people' +# inflect.uncountable %w( fish sheep ) +# end + +# These inflection rules are supported but not enabled by default: +# ActiveSupport::Inflector.inflections(:en) do |inflect| +# inflect.acronym 'RESTful' +# end diff --git a/modules/grids/test/dummy/config/initializers/mime_types.rb b/modules/grids/test/dummy/config/initializers/mime_types.rb new file mode 100644 index 00000000000..dc1899682b0 --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/mime_types.rb @@ -0,0 +1,4 @@ +# Be sure to restart your server when you modify this file. + +# Add new mime types for use in respond_to blocks: +# Mime::Type.register "text/richtext", :rtf diff --git a/modules/grids/test/dummy/config/initializers/wrap_parameters.rb b/modules/grids/test/dummy/config/initializers/wrap_parameters.rb new file mode 100644 index 00000000000..bbfc3961bff --- /dev/null +++ b/modules/grids/test/dummy/config/initializers/wrap_parameters.rb @@ -0,0 +1,14 @@ +# Be sure to restart your server when you modify this file. + +# This file contains settings for ActionController::ParamsWrapper which +# is enabled by default. + +# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. +ActiveSupport.on_load(:action_controller) do + wrap_parameters format: [:json] +end + +# To enable root element in JSON for ActiveRecord objects. +# ActiveSupport.on_load(:active_record) do +# self.include_root_in_json = true +# end diff --git a/modules/grids/test/dummy/config/locales/en.yml b/modules/grids/test/dummy/config/locales/en.yml new file mode 100644 index 00000000000..decc5a85735 --- /dev/null +++ b/modules/grids/test/dummy/config/locales/en.yml @@ -0,0 +1,33 @@ +# Files in the config/locales directory are used for internationalization +# and are automatically loaded by Rails. If you want to use locales other +# than English, add the necessary files in this directory. +# +# To use the locales, use `I18n.t`: +# +# I18n.t 'hello' +# +# In views, this is aliased to just `t`: +# +# <%= t('hello') %> +# +# To use a different locale, set it with `I18n.locale`: +# +# I18n.locale = :es +# +# This would use the information in config/locales/es.yml. +# +# The following keys must be escaped otherwise they will not be retrieved by +# the default I18n backend: +# +# true, false, on, off, yes, no +# +# Instead, surround them with single quotes. +# +# en: +# 'true': 'foo' +# +# To learn more, please read the Rails Internationalization guide +# available at http://guides.rubyonrails.org/i18n.html. + +en: + hello: "Hello world" diff --git a/modules/grids/test/dummy/config/puma.rb b/modules/grids/test/dummy/config/puma.rb new file mode 100644 index 00000000000..1e19380dcb3 --- /dev/null +++ b/modules/grids/test/dummy/config/puma.rb @@ -0,0 +1,56 @@ +# Puma can serve each request in a thread from an internal thread pool. +# The `threads` method setting takes two numbers: a minimum and maximum. +# Any libraries that use thread pools should be configured to match +# the maximum value specified for Puma. Default is set to 5 threads for minimum +# and maximum; this matches the default thread size of Active Record. +# +threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 } +threads threads_count, threads_count + +# Specifies the `port` that Puma will listen on to receive requests; default is 3000. +# +port ENV.fetch("PORT") { 3000 } + +# Specifies the `environment` that Puma will run in. +# +environment ENV.fetch("RAILS_ENV") { "development" } + +# Specifies the number of `workers` to boot in clustered mode. +# Workers are forked webserver processes. If using threads and workers together +# the concurrency of the application would be max `threads` * `workers`. +# Workers do not work on JRuby or Windows (both of which do not support +# processes). +# +# workers ENV.fetch("WEB_CONCURRENCY") { 2 } + +# Use the `preload_app!` method when specifying a `workers` number. +# This directive tells Puma to first boot the application and load code +# before forking the application. This takes advantage of Copy On Write +# process behavior so workers use less memory. If you use this option +# you need to make sure to reconnect any threads in the `on_worker_boot` +# block. +# +# preload_app! + +# If you are preloading your application and using Active Record, it's +# recommended that you close any connections to the database before workers +# are forked to prevent connection leakage. +# +# before_fork do +# ActiveRecord::Base.connection_pool.disconnect! if defined?(ActiveRecord) +# end + +# The code in the `on_worker_boot` will be called if you are using +# clustered mode by specifying a number of `workers`. After each worker +# process is booted, this block will be run. If you are using the `preload_app!` +# option, you will want to use this block to reconnect to any threads +# or connections that may have been created at application boot, as Ruby +# cannot share connections between processes. +# +# on_worker_boot do +# ActiveRecord::Base.establish_connection if defined?(ActiveRecord) +# end +# + +# Allow puma to be restarted by `rails restart` command. +plugin :tmp_restart diff --git a/modules/grids/test/dummy/config/routes.rb b/modules/grids/test/dummy/config/routes.rb new file mode 100644 index 00000000000..4ad6d0fc74a --- /dev/null +++ b/modules/grids/test/dummy/config/routes.rb @@ -0,0 +1,3 @@ +Rails.application.routes.draw do + mount Grids::Engine => "/grids" +end diff --git a/modules/grids/test/dummy/config/secrets.yml b/modules/grids/test/dummy/config/secrets.yml new file mode 100644 index 00000000000..212fa5a68ce --- /dev/null +++ b/modules/grids/test/dummy/config/secrets.yml @@ -0,0 +1,32 @@ +# Be sure to restart your server when you modify this file. + +# Your secret key is used for verifying the integrity of signed cookies. +# If you change this key, all old signed cookies will become invalid! + +# Make sure the secret is at least 30 characters and all random, +# no regular words or you'll be exposed to dictionary attacks. +# You can use `rails secret` to generate a secure secret key. + +# Make sure the secrets in this file are kept private +# if you're sharing your code publicly. + +# Shared secrets are available across all environments. + +# shared: +# api_key: a1B2c3D4e5F6 + +# Environmental secrets are only available for that specific environment. + +development: + secret_key_base: 73f120228e9a0eb3a227404a4f79cbddc14e8d830e818c4a1fff8a5b6749c7d2c81836e8c7e113dc87243b713a82962f0a8afb1fea696e1142bf9a4d638669e7 + +test: + secret_key_base: 80f44ea759b4a80dcad11fd675687678efffb8f3437f54f7746ef38e7ae94ef8a7766899cf1ca260399662592e2bb722c393154b08d374d1a5911d7342e22667 + +# Do not keep production secrets in the unencrypted secrets file. +# Instead, either read values from the environment. +# Or, use `bin/rails secrets:setup` to configure encrypted secrets +# and move the `production:` environment over there. + +production: + secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> diff --git a/modules/grids/test/dummy/config/spring.rb b/modules/grids/test/dummy/config/spring.rb new file mode 100644 index 00000000000..c9119b40c08 --- /dev/null +++ b/modules/grids/test/dummy/config/spring.rb @@ -0,0 +1,6 @@ +%w( + .ruby-version + .rbenv-vars + tmp/restart.txt + tmp/caching-dev.txt +).each { |path| Spring.watch(path) } diff --git a/modules/grids/test/dummy/lib/assets/.keep b/modules/grids/test/dummy/lib/assets/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/log/.keep b/modules/grids/test/dummy/log/.keep new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/package.json b/modules/grids/test/dummy/package.json new file mode 100644 index 00000000000..caa2d7bb3f9 --- /dev/null +++ b/modules/grids/test/dummy/package.json @@ -0,0 +1,5 @@ +{ + "name": "dummy", + "private": true, + "dependencies": {} +} diff --git a/modules/grids/test/dummy/public/404.html b/modules/grids/test/dummy/public/404.html new file mode 100644 index 00000000000..2be3af26fc5 --- /dev/null +++ b/modules/grids/test/dummy/public/404.html @@ -0,0 +1,67 @@ + + + + The page you were looking for doesn't exist (404) + + + + + + +
+
+

The page you were looking for doesn't exist.

+

You may have mistyped the address or the page may have moved.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/modules/grids/test/dummy/public/422.html b/modules/grids/test/dummy/public/422.html new file mode 100644 index 00000000000..c08eac0d1df --- /dev/null +++ b/modules/grids/test/dummy/public/422.html @@ -0,0 +1,67 @@ + + + + The change you wanted was rejected (422) + + + + + + +
+
+

The change you wanted was rejected.

+

Maybe you tried to change something you didn't have access to.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/modules/grids/test/dummy/public/500.html b/modules/grids/test/dummy/public/500.html new file mode 100644 index 00000000000..78a030af22e --- /dev/null +++ b/modules/grids/test/dummy/public/500.html @@ -0,0 +1,66 @@ + + + + We're sorry, but something went wrong (500) + + + + + + +
+
+

We're sorry, but something went wrong.

+
+

If you are the application owner check the logs for more information.

+
+ + diff --git a/modules/grids/test/dummy/public/apple-touch-icon-precomposed.png b/modules/grids/test/dummy/public/apple-touch-icon-precomposed.png new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/public/apple-touch-icon.png b/modules/grids/test/dummy/public/apple-touch-icon.png new file mode 100644 index 00000000000..e69de29bb2d diff --git a/modules/grids/test/dummy/public/favicon.ico b/modules/grids/test/dummy/public/favicon.ico new file mode 100644 index 00000000000..e69de29bb2d