occams 1.0.4 → 1.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +10 -9
- data/CHANGELOG.md +6 -0
- data/README.md +5 -5
- data/TODOS.md +1 -1
- data/bin/setup +4 -7
- data/config/application.rb +12 -14
- data/config/cable.yml +10 -0
- data/config/environment.rb +3 -3
- data/config/environments/development.rb +26 -3
- data/config/environments/production.rb +95 -0
- data/config/environments/test.rb +25 -12
- data/config/initializers/assets.rb +14 -0
- data/config/initializers/content_security_policy.rb +27 -0
- data/config/initializers/filter_parameter_logging.rb +10 -0
- data/config/initializers/inflections.rb +18 -0
- data/config/initializers/json.rb +9 -0
- data/config/initializers/new_framework_defaults_7_0.rb +144 -0
- data/config/initializers/permissions_policy.rb +13 -0
- data/db/migrate/00_create_active_storage_tables.rb +19 -3
- data/db/migrate/01_create_cms.rb +1 -1
- data/lib/occams/content/tags/audio.rb +3 -4
- data/lib/occams/content/tags/breadcrumbs.rb +3 -3
- data/lib/occams/content/tags/siblings.rb +4 -4
- data/lib/occams/version.rb +1 -1
- data/occams.gemspec +2 -1
- metadata +31 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: efb5d94cf738164a3e046fa7cfb156622bd2bc0e9b8204b4b8351528e071d125
|
4
|
+
data.tar.gz: 1a258f13ab0e8f4d2bee5389fc35b9aaae9d1e8d21b9cbf785c4c87d4bdf64e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9efc2ff6514d9232b567c2db268f2db505662f13c6de0393f4cb263f69883a73514b24bf528316eaadc08d7d077de08b1df806697dc727784291119040f70f05
|
7
|
+
data.tar.gz: 5599e31e8c182f8ce24cc8c23c1be933b0c84e3044d120d1e4ff3378a24aada88b509e2ac97ea94e1d7de48d6d1b7bcebc7477be6aca804630b0377cd596cf5e
|
data/.travis.yml
CHANGED
@@ -10,18 +10,19 @@ addons:
|
|
10
10
|
|
11
11
|
language: ruby
|
12
12
|
rvm:
|
13
|
-
- 2.
|
14
|
-
-
|
15
|
-
- 2.
|
16
|
-
- 2.6.5
|
13
|
+
- 2.7.8
|
14
|
+
- 3.1.4
|
15
|
+
- 3.2.2
|
17
16
|
gemfile:
|
18
|
-
- test/gemfiles/
|
17
|
+
- test/gemfiles/6.1.gemfile
|
19
18
|
jobs:
|
20
19
|
include:
|
21
|
-
- rvm: 2.
|
22
|
-
gemfile: test/gemfiles/6.
|
23
|
-
- rvm:
|
24
|
-
gemfile: test/gemfiles/6.
|
20
|
+
- rvm: 2.7.8
|
21
|
+
gemfile: test/gemfiles/6.1.gemfile
|
22
|
+
- rvm: 3.1.4
|
23
|
+
gemfile: test/gemfiles/6.1.gemfile
|
24
|
+
- rvm: 3.2.2
|
25
|
+
gemfile: test/gemfiles/7.0.gemfile
|
25
26
|
branches:
|
26
27
|
only:
|
27
28
|
- master
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## v1.0.5 - 8/31/2023
|
4
|
+
|
5
|
+
- All tests now green on Rails 6.1 and 7.0, each tested with rubies 2.7.8, 3.1.4 and 3.2.2.
|
6
|
+
- Tests added for new tags
|
7
|
+
- TODO: set up CI pipeline
|
8
|
+
|
3
9
|
## v1.0.4 - 8/26/2023
|
4
10
|
|
5
11
|
- Added [cms:breadcrumbs Nav tag](https://github.com/avonderluft/occams/wiki/Content-Tags#breadcrumbs)
|
data/README.md
CHANGED
@@ -21,7 +21,7 @@ ocCaM'S, pronounced "AH-kums" is a nod to [Occam's Razor](https://en.wikipedia.o
|
|
21
21
|
|
22
22
|
## Features
|
23
23
|
|
24
|
-
* Simple drop-in integration with Rails 6.
|
24
|
+
* Simple drop-in integration with Rails 6.1+ apps with minimal configuration
|
25
25
|
* CMS stays away from the rest of your application
|
26
26
|
|
27
27
|
Referring to the [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) documentation, substituting 'Occams' for 'ComfortableMexicanSofa' where appropriate.
|
@@ -41,8 +41,8 @@ Referring to the [ComfortableMexicanSofa](https://github.com/comfy/comfortable-m
|
|
41
41
|
|
42
42
|
## Compatibility
|
43
43
|
|
44
|
-
-
|
45
|
-
- Rails 7 is recommended, since performance is noticably better
|
44
|
+
- Test suite passing on Ruby 2.7.8, 3.1.4 and 3.2.2 with Rails 6.1 and 7.0+
|
45
|
+
- Rails 7+ is recommended, since performance is noticably better than 6
|
46
46
|
|
47
47
|
## Installation
|
48
48
|
|
@@ -103,13 +103,13 @@ For more detail see [CONTRIBUTING](CONTRIBUTING.md)
|
|
103
103
|
|
104
104
|
#### Testing
|
105
105
|
|
106
|
-
- `bin/rails db:migrate`
|
106
|
+
- `bin/rails db:migrate RAILS_ENV=test`
|
107
107
|
- `rake db:test:prepare`
|
108
108
|
- `rake test`
|
109
109
|
|
110
110
|
#### Acknowledgements
|
111
111
|
|
112
|
-
- Obviously to Oleg Khabarov, the creator of [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa). This is his work, with
|
112
|
+
- Obviously to [Oleg Khabarov](https://github.com/GBH), the creator of [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa). This is his work, with a few updates and additions.
|
113
113
|
- Thanks to [Roman Almeida](https://github.com/nasmorn) for contributing OEM License for [Redactor Text Editor](http://imperavi.com/redactor)
|
114
114
|
|
115
115
|
---
|
data/TODOS.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# ToDos
|
2
2
|
|
3
|
+
- set up CI
|
3
4
|
- add admin content search to list layouts, pages and snippets - see https://blog.robertsj.com/search/
|
4
5
|
- add application console for testing
|
5
6
|
- add feature to resize file_link'd images
|
6
|
-
- get the original [ComfortableMexicanSofa](https://github.com/comfy/comfortable-mexican-sofa) tests working with Rails 7 and Ruby 3
|
data/bin/setup
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fileutils'
|
3
|
-
include FileUtils
|
4
3
|
|
5
4
|
# path to your application root.
|
6
5
|
APP_ROOT = File.expand_path('..', __dir__)
|
@@ -9,20 +8,18 @@ def system!(*args)
|
|
9
8
|
system(*args) || abort("\n== Command #{args} failed ==")
|
10
9
|
end
|
11
10
|
|
12
|
-
chdir APP_ROOT do
|
13
|
-
# This script is a
|
11
|
+
FileUtils.chdir APP_ROOT do
|
12
|
+
# This script is a way to set up or update your development environment automatically.
|
13
|
+
# This script is idempotent, so that you can run it at any time and get an expectable outcome.
|
14
14
|
# Add necessary setup steps to this file.
|
15
15
|
|
16
16
|
puts '== Installing dependencies =='
|
17
17
|
system! 'gem install bundler --conservative'
|
18
18
|
system('bundle check') || system!('bundle install')
|
19
19
|
|
20
|
-
# Install JavaScript dependencies if using Yarn
|
21
|
-
# system('bin/yarn')
|
22
|
-
|
23
20
|
# puts "\n== Copying sample files =="
|
24
21
|
# unless File.exist?('config/database.yml')
|
25
|
-
# cp 'config/database.yml.sample', 'config/database.yml'
|
22
|
+
# FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
|
26
23
|
# end
|
27
24
|
|
28
25
|
puts "\n== Preparing database =="
|
data/config/application.rb
CHANGED
@@ -12,20 +12,16 @@ module Occams
|
|
12
12
|
class Application < Rails::Application
|
13
13
|
require_relative '../lib/occams'
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
#
|
19
|
-
#
|
20
|
-
|
21
|
-
#
|
22
|
-
#
|
23
|
-
# config.time_zone =
|
24
|
-
|
25
|
-
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
26
|
-
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
27
|
-
# config.i18n.default_locale = :de
|
28
|
-
|
15
|
+
# Initialize configuration defaults for originally generated Rails version.
|
16
|
+
config.load_defaults 6.1
|
17
|
+
|
18
|
+
# Configuration for the application, engines, and railties goes here.
|
19
|
+
#
|
20
|
+
# These settings can be overridden in specific environments using the files
|
21
|
+
# in config/environments, which are processed later.
|
22
|
+
#
|
23
|
+
# config.time_zone = "Central Time (US & Canada)"
|
24
|
+
# config.eager_load_paths << Rails.root.join("extras")
|
29
25
|
# Ensuring that all ActiveStorage routes are loaded before out globbing route.
|
30
26
|
config.railties_order = [ActiveStorage::Engine, :main_app, :all]
|
31
27
|
|
@@ -33,5 +29,7 @@ module Occams
|
|
33
29
|
config.paths['config/routes.rb'] << 'config/cms_routes.rb'
|
34
30
|
|
35
31
|
config.i18n.enforce_available_locales = true
|
32
|
+
|
33
|
+
config.active_record.yaml_column_permitted_classes = [Symbol, Date, Time, ActiveSupport::TimeWithZone, ActiveSupport::TimeZone]
|
36
34
|
end
|
37
35
|
end
|
data/config/cable.yml
ADDED
data/config/environment.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
# Load the
|
4
|
-
|
3
|
+
# Load the Rails application.
|
4
|
+
require_relative 'application'
|
5
5
|
|
6
|
-
# Initialize the
|
6
|
+
# Initialize the Rails application.
|
7
7
|
Occams::Application.initialize!
|
@@ -1,10 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'active_support/core_ext/integer/time'
|
4
|
+
|
3
5
|
defined?(Occams::Application) && Occams::Application.configure do
|
4
6
|
# Settings specified here will take precedence over those in config/application.rb.
|
5
7
|
|
6
|
-
# In the development environment your application's code is reloaded
|
7
|
-
#
|
8
|
+
# In the development environment your application's code is reloaded any time
|
9
|
+
# it changes. This slows down response time but is perfect for development
|
8
10
|
# since you don't have to restart the web server when you make code changes.
|
9
11
|
config.cache_classes = false
|
10
12
|
|
@@ -14,10 +16,14 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
14
16
|
# Show full error reports.
|
15
17
|
config.consider_all_requests_local = true
|
16
18
|
|
19
|
+
# Enable server timing
|
20
|
+
config.server_timing = true
|
21
|
+
|
17
22
|
# Enable/disable caching. By default caching is disabled.
|
18
23
|
# Run rails dev:cache to toggle caching.
|
19
24
|
if Rails.root.join('tmp/caching-dev.txt').exist?
|
20
25
|
config.action_controller.perform_caching = true
|
26
|
+
config.action_controller.enable_fragment_cache_logging = true
|
21
27
|
|
22
28
|
config.cache_store = :memory_store
|
23
29
|
config.public_file_server.headers = {
|
@@ -29,7 +35,7 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
29
35
|
config.cache_store = :null_store
|
30
36
|
end
|
31
37
|
|
32
|
-
# Store uploaded files on the local file system (see config/storage.yml for options)
|
38
|
+
# Store uploaded files on the local file system (see config/storage.yml for options).
|
33
39
|
config.active_storage.service = :local
|
34
40
|
|
35
41
|
# Don't care if the mailer can't send.
|
@@ -40,6 +46,12 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
40
46
|
# Print deprecation notices to the Rails logger.
|
41
47
|
config.active_support.deprecation = :log
|
42
48
|
|
49
|
+
# Raise exceptions for disallowed deprecations.
|
50
|
+
config.active_support.disallowed_deprecation = :raise
|
51
|
+
|
52
|
+
# Tell Active Support which deprecation messages to disallow.
|
53
|
+
config.active_support.disallowed_deprecation_warnings = []
|
54
|
+
|
43
55
|
# Raise an error on page load if there are pending migrations.
|
44
56
|
config.active_record.migration_error = :page_load
|
45
57
|
|
@@ -48,6 +60,9 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
48
60
|
# number of complex assets.
|
49
61
|
config.assets.debug = true
|
50
62
|
|
63
|
+
# Highlight code that triggered database queries in logs.
|
64
|
+
config.active_record.verbose_query_logs = true
|
65
|
+
|
51
66
|
# Suppress logger output for asset requests.
|
52
67
|
config.assets.quiet = true
|
53
68
|
|
@@ -56,4 +71,12 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
56
71
|
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
57
72
|
|
58
73
|
config.active_job.queue_adapter = :inline
|
74
|
+
# Raises error for missing translations.
|
75
|
+
# config.i18n.raise_on_missing_translations = true
|
76
|
+
|
77
|
+
# Annotate rendered view with file names.
|
78
|
+
# config.action_view.annotate_rendered_view_with_filenames = true
|
79
|
+
|
80
|
+
# Uncomment if you wish to allow Action Cable access from any origin.
|
81
|
+
# config.action_cable.disable_request_forgery_protection = true
|
59
82
|
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/integer/time'
|
4
|
+
|
5
|
+
defined?(Occams::Application) && Occams::Application.configure do
|
6
|
+
# Settings specified here will take precedence over those in config/application.rb.
|
7
|
+
|
8
|
+
# Code is not reloaded between requests.
|
9
|
+
config.cache_classes = true
|
10
|
+
|
11
|
+
# Eager load code on boot. This eager loads most of Rails and
|
12
|
+
# your application in memory, allowing both threaded web servers
|
13
|
+
# and those relying on copy on write to perform better.
|
14
|
+
# Rake tasks automatically ignore this option for performance.
|
15
|
+
config.eager_load = true
|
16
|
+
|
17
|
+
# Full error reports are disabled and caching is turned on.
|
18
|
+
config.consider_all_requests_local = false
|
19
|
+
config.action_controller.perform_caching = true
|
20
|
+
|
21
|
+
# Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
|
22
|
+
# or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
|
23
|
+
# config.require_master_key = true
|
24
|
+
|
25
|
+
# Disable serving static files from the `/public` folder by default since
|
26
|
+
# Apache or NGINX already handles this.
|
27
|
+
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
|
28
|
+
|
29
|
+
# Compress CSS using a preprocessor.
|
30
|
+
# config.assets.css_compressor = :sass
|
31
|
+
|
32
|
+
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
33
|
+
config.assets.compile = false
|
34
|
+
|
35
|
+
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
|
36
|
+
# config.asset_host = "http://assets.example.com"
|
37
|
+
|
38
|
+
# Specifies the header that your server uses for sending files.
|
39
|
+
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
|
40
|
+
# config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
|
41
|
+
|
42
|
+
# Store uploaded files on the local file system (see config/storage.yml for options).
|
43
|
+
config.active_storage.service = :local
|
44
|
+
|
45
|
+
# Mount Action Cable outside main process or domain.
|
46
|
+
# config.action_cable.mount_path = nil
|
47
|
+
# config.action_cable.url = "wss://example.com/cable"
|
48
|
+
# config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
|
49
|
+
|
50
|
+
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
|
51
|
+
# config.force_ssl = true
|
52
|
+
|
53
|
+
# Include generic and useful information about system operation, but avoid logging too much
|
54
|
+
# information to avoid inadvertent exposure of personally identifiable information (PII).
|
55
|
+
config.log_level = :info
|
56
|
+
|
57
|
+
# Prepend all log lines with the following tags.
|
58
|
+
config.log_tags = [:request_id]
|
59
|
+
|
60
|
+
# Use a different cache store in production.
|
61
|
+
# config.cache_store = :mem_cache_store
|
62
|
+
|
63
|
+
# Use a real queuing backend for Active Job (and separate queues per environment).
|
64
|
+
# config.active_job.queue_adapter = :resque
|
65
|
+
# config.active_job.queue_name_prefix = "occams_production"
|
66
|
+
|
67
|
+
config.action_mailer.perform_caching = false
|
68
|
+
|
69
|
+
# Ignore bad email addresses and do not raise email delivery errors.
|
70
|
+
# Set this to true and configure the email server for immediate delivery to raise delivery errors.
|
71
|
+
# config.action_mailer.raise_delivery_errors = false
|
72
|
+
|
73
|
+
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
74
|
+
# the I18n.default_locale when a translation cannot be found).
|
75
|
+
config.i18n.fallbacks = true
|
76
|
+
|
77
|
+
# Don't log any deprecations.
|
78
|
+
config.active_support.report_deprecations = false
|
79
|
+
|
80
|
+
# Use default logging formatter so that PID and timestamp are not suppressed.
|
81
|
+
config.log_formatter = Logger::Formatter.new
|
82
|
+
|
83
|
+
# Use a different logger for distributed setups.
|
84
|
+
# require "syslog/logger"
|
85
|
+
# config.logger = ActiveSupport::TaggedLogging.new(Syslog::Logger.new "app-name")
|
86
|
+
|
87
|
+
if ENV['RAILS_LOG_TO_STDOUT'].present?
|
88
|
+
logger = ActiveSupport::Logger.new($stdout)
|
89
|
+
logger.formatter = config.log_formatter
|
90
|
+
config.logger = ActiveSupport::TaggedLogging.new(logger)
|
91
|
+
end
|
92
|
+
|
93
|
+
# Do not dump schema after migrations.
|
94
|
+
config.active_record.dump_schema_after_migration = false
|
95
|
+
end
|
data/config/environments/test.rb
CHANGED
@@ -1,18 +1,22 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'active_support/core_ext/integer/time'
|
4
|
+
|
5
|
+
# The test environment is used exclusively to run your application's
|
6
|
+
# test suite. You never need to work with it otherwise. Remember that
|
7
|
+
# your test database is "scratch space" for the test suite and is wiped
|
8
|
+
# and recreated between test runs. Don't rely on the data there!
|
9
|
+
|
3
10
|
defined?(Occams::Application) && Occams::Application.configure do
|
4
11
|
# Settings specified here will take precedence over those in config/application.rb.
|
5
12
|
|
6
|
-
#
|
7
|
-
# test suite. You never need to work with it otherwise. Remember that
|
8
|
-
# your test database is "scratch space" for the test suite and is wiped
|
9
|
-
# and recreated between test runs. Don't rely on the data there!
|
13
|
+
# Turn false under Spring and add config.action_view.cache_template_loading = true.
|
10
14
|
config.cache_classes = true
|
11
15
|
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
config.eager_load =
|
16
|
+
# Eager loading loads your whole application. When running a single test locally,
|
17
|
+
# this probably isn't necessary. It's a good idea to do in a continuous integration
|
18
|
+
# system, or in some way before deploying your code.
|
19
|
+
config.eager_load = ENV['CI'].present?
|
16
20
|
|
17
21
|
# Configure public file server for tests with Cache-Control for performance.
|
18
22
|
config.public_file_server.enabled = true
|
@@ -23,6 +27,7 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
23
27
|
# Show full error reports and disable caching.
|
24
28
|
config.consider_all_requests_local = true
|
25
29
|
config.action_controller.perform_caching = false
|
30
|
+
config.cache_store = :null_store
|
26
31
|
|
27
32
|
# Raise exceptions instead of rendering exception templates.
|
28
33
|
config.action_dispatch.show_exceptions = false
|
@@ -30,8 +35,9 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
30
35
|
# Disable request forgery protection in test environment.
|
31
36
|
config.action_controller.allow_forgery_protection = false
|
32
37
|
|
33
|
-
# Store uploaded files on the local file system in a temporary directory
|
38
|
+
# Store uploaded files on the local file system in a temporary directory.
|
34
39
|
config.active_storage.service = :test
|
40
|
+
|
35
41
|
config.action_mailer.perform_caching = false
|
36
42
|
|
37
43
|
# Tell Action Mailer not to deliver emails to the real world.
|
@@ -43,8 +49,15 @@ defined?(Occams::Application) && Occams::Application.configure do
|
|
43
49
|
config.active_support.deprecation = :stderr
|
44
50
|
|
45
51
|
config.active_job.queue_adapter = :inline
|
52
|
+
# Raise exceptions for disallowed deprecations.
|
53
|
+
config.active_support.disallowed_deprecation = :raise
|
54
|
+
|
55
|
+
# Tell Active Support which deprecation messages to disallow.
|
56
|
+
config.active_support.disallowed_deprecation_warnings = []
|
57
|
+
|
58
|
+
# Raises error for missing translations.
|
59
|
+
# config.i18n.raise_on_missing_translations = true
|
46
60
|
|
47
|
-
#
|
48
|
-
#
|
49
|
-
config.secret_key_base = SecureRandom.hex(64)
|
61
|
+
# Annotate rendered view with file names.
|
62
|
+
# config.action_view.annotate_rendered_view_with_filenames = true
|
50
63
|
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Be sure to restart your server when you modify this file.
|
4
|
+
|
5
|
+
# Version of your assets, change this if you want to expire all your assets.
|
6
|
+
Rails.application.config.assets.version = '1.0'
|
7
|
+
|
8
|
+
# Add additional assets to the asset load path.
|
9
|
+
# Rails.application.config.assets.paths << Emoji.images_path
|
10
|
+
|
11
|
+
# Precompile additional assets.
|
12
|
+
# application.js, application.css, and all non-JS/CSS in the app/assets
|
13
|
+
# folder are already added.
|
14
|
+
# Rails.application.config.assets.precompile += %w( admin.js admin.css )
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Be sure to restart your server when you modify this file.
|
4
|
+
|
5
|
+
# Define an application-wide content security policy.
|
6
|
+
# See the Securing Rails Applications Guide for more information:
|
7
|
+
# https://guides.rubyonrails.org/security.html#content-security-policy-header
|
8
|
+
|
9
|
+
# Rails.application.configure do
|
10
|
+
# config.content_security_policy do |policy|
|
11
|
+
# policy.default_src :self, :https
|
12
|
+
# policy.font_src :self, :https, :data
|
13
|
+
# policy.img_src :self, :https, :data
|
14
|
+
# policy.object_src :none
|
15
|
+
# policy.script_src :self, :https
|
16
|
+
# policy.style_src :self, :https
|
17
|
+
# # Specify URI for violation reports
|
18
|
+
# # policy.report_uri "/csp-violation-report-endpoint"
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# # Generate session nonces for permitted importmap and inline scripts
|
22
|
+
# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
|
23
|
+
# config.content_security_policy_nonce_directives = %w(script-src)
|
24
|
+
#
|
25
|
+
# # Report violations without enforcing the policy.
|
26
|
+
# # config.content_security_policy_report_only = true
|
27
|
+
# end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Be sure to restart your server when you modify this file.
|
4
|
+
|
5
|
+
# Configure parameters to be filtered from the log file. Use this to limit dissemination of
|
6
|
+
# sensitive information. See the ActiveSupport::ParameterFilter documentation for supported
|
7
|
+
# notations and behaviors.
|
8
|
+
Rails.application.config.filter_parameters += %i[
|
9
|
+
passw secret token _key crypt salt certificate otp ssn
|
10
|
+
]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Be sure to restart your server when you modify this file.
|
4
|
+
|
5
|
+
# Add new inflection rules using the following format. Inflections
|
6
|
+
# are locale specific, and you may define rules for as many different
|
7
|
+
# locales as you wish. All of these examples are active by default:
|
8
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
9
|
+
# inflect.plural /^(ox)$/i, "\\1en"
|
10
|
+
# inflect.singular /^(ox)en/i, "\\1"
|
11
|
+
# inflect.irregular "person", "people"
|
12
|
+
# inflect.uncountable %w( fish sheep )
|
13
|
+
# end
|
14
|
+
|
15
|
+
# These inflection rules are supported but not enabled by default:
|
16
|
+
# ActiveSupport::Inflector.inflections(:en) do |inflect|
|
17
|
+
# inflect.acronym "RESTful"
|
18
|
+
# end
|
@@ -0,0 +1,144 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Be sure to restart your server when you modify this file.
|
4
|
+
#
|
5
|
+
# This file eases your Rails 7.0 framework defaults upgrade.
|
6
|
+
#
|
7
|
+
# Uncomment each configuration one by one to switch to the new default.
|
8
|
+
# Once your application is ready to run with all new defaults, you can remove
|
9
|
+
# this file and set the `config.load_defaults` to `7.0`.
|
10
|
+
#
|
11
|
+
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
12
|
+
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
13
|
+
|
14
|
+
# `button_to` view helper will render `<button>` element, regardless of whether
|
15
|
+
# or not the content is passed as the first argument or as a block.
|
16
|
+
# Rails.application.config.action_view.button_to_generates_button_tag = true
|
17
|
+
|
18
|
+
# `stylesheet_link_tag` view helper will not render the media attribute by default.
|
19
|
+
# Rails.application.config.action_view.apply_stylesheet_media_default = false
|
20
|
+
|
21
|
+
# Change the digest class for the key generators to `OpenSSL::Digest::SHA256`.
|
22
|
+
# Changing this default means invalidate all encrypted messages generated by
|
23
|
+
# your application and, all the encrypted cookies. Only change this after you
|
24
|
+
# rotated all the messages using the key rotator.
|
25
|
+
#
|
26
|
+
# See upgrading guide for more information on how to build a rotator.
|
27
|
+
# https://guides.rubyonrails.org/v7.0/upgrading_ruby_on_rails.html
|
28
|
+
# Rails.application.config.active_support.key_generator_hash_digest_class = OpenSSL::Digest::SHA256
|
29
|
+
|
30
|
+
# Change the digest class for ActiveSupport::Digest.
|
31
|
+
# Changing this default means that for example Etags change and
|
32
|
+
# various cache keys leading to cache invalidation.
|
33
|
+
# Rails.application.config.active_support.hash_digest_class = OpenSSL::Digest::SHA256
|
34
|
+
|
35
|
+
# Don't override ActiveSupport::TimeWithZone.name and use the default Ruby
|
36
|
+
# implementation.
|
37
|
+
# Rails.application.config.active_support.remove_deprecated_time_with_zone_name = true
|
38
|
+
|
39
|
+
# Calls `Rails.application.executor.wrap` around test cases.
|
40
|
+
# This makes test cases behave closer to an actual request or job.
|
41
|
+
# Several features that are normally disabled in test, such as Active Record query cache
|
42
|
+
# and asynchronous queries will then be enabled.
|
43
|
+
# Rails.application.config.active_support.executor_around_test_case = true
|
44
|
+
|
45
|
+
# Set both the `:open_timeout` and `:read_timeout` values for `:smtp` delivery method.
|
46
|
+
# Rails.application.config.action_mailer.smtp_timeout = 5
|
47
|
+
|
48
|
+
# The ActiveStorage video previewer will now use scene change detection to generate
|
49
|
+
# better preview images (rather than the previous default of using the first frame
|
50
|
+
# of the video).
|
51
|
+
# Rails.application.config.active_storage.video_preview_arguments =
|
52
|
+
# "-vf 'select=eq(n\\,0)+eq(key\\,1)+gt(scene\\,0.015),loop=loop=-1:size=2,trim=start_frame=1' -frames:v 1 -f image2"
|
53
|
+
|
54
|
+
# Automatically infer `inverse_of` for associations with a scope.
|
55
|
+
# Rails.application.config.active_record.automatic_scope_inversing = true
|
56
|
+
|
57
|
+
# Raise when running tests if fixtures contained foreign key violations
|
58
|
+
# Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true
|
59
|
+
|
60
|
+
# Disable partial inserts.
|
61
|
+
# This default means that all columns will be referenced in INSERT queries
|
62
|
+
# regardless of whether they have a default or not.
|
63
|
+
# Rails.application.config.active_record.partial_inserts = false
|
64
|
+
|
65
|
+
# Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`.
|
66
|
+
# Rails.application.config.action_controller.raise_on_open_redirects = true
|
67
|
+
|
68
|
+
# Change the variant processor for Active Storage.
|
69
|
+
# Changing this default means updating all places in your code that
|
70
|
+
# generate variants to use image processing macros and ruby-vips
|
71
|
+
# operations. See the upgrading guide for detail on the changes required.
|
72
|
+
# The `:mini_magick` option is not deprecated; it's fine to keep using it.
|
73
|
+
# Rails.application.config.active_storage.variant_processor = :vips
|
74
|
+
|
75
|
+
# Enable parameter wrapping for JSON.
|
76
|
+
# Previously this was set in an initializer. It's fine to keep using that initializer if you've customized it.
|
77
|
+
# To disable parameter wrapping entirely, set this config to `false`.
|
78
|
+
# Rails.application.config.action_controller.wrap_parameters_by_default = true
|
79
|
+
|
80
|
+
# Specifies whether generated namespaced UUIDs follow the RFC 4122 standard for namespace IDs provided as a
|
81
|
+
# `String` to `Digest::UUID.uuid_v3` or `Digest::UUID.uuid_v5` method calls.
|
82
|
+
#
|
83
|
+
# See https://guides.rubyonrails.org/configuring.html#config-active-support-use-rfc4122-namespaced-uuids for
|
84
|
+
# more information.
|
85
|
+
# Rails.application.config.active_support.use_rfc4122_namespaced_uuids = true
|
86
|
+
|
87
|
+
# Change the default headers to disable browsers' flawed legacy XSS protection.
|
88
|
+
# Rails.application.config.action_dispatch.default_headers = {
|
89
|
+
# "X-Frame-Options" => "SAMEORIGIN",
|
90
|
+
# "X-XSS-Protection" => "0",
|
91
|
+
# "X-Content-Type-Options" => "nosniff",
|
92
|
+
# "X-Download-Options" => "noopen",
|
93
|
+
# "X-Permitted-Cross-Domain-Policies" => "none",
|
94
|
+
# "Referrer-Policy" => "strict-origin-when-cross-origin"
|
95
|
+
# }
|
96
|
+
|
97
|
+
# ** Please read carefully, this must be configured in config/application.rb **
|
98
|
+
# Change the format of the cache entry.
|
99
|
+
# Changing this default means that all new cache entries added to the cache
|
100
|
+
# will have a different format that is not supported by Rails 6.1 applications.
|
101
|
+
# Only change this value after your application is fully deployed to Rails 7.0
|
102
|
+
# and you have no plans to rollback.
|
103
|
+
# When you're ready to change format, add this to `config/application.rb` (NOT this file):
|
104
|
+
# config.active_support.cache_format_version = 7.0
|
105
|
+
|
106
|
+
# Cookie serializer: 2 options
|
107
|
+
#
|
108
|
+
# If you're upgrading and haven't set `cookies_serializer` previously, your cookie serializer
|
109
|
+
# is `:marshal`. The default for new apps is `:json`.
|
110
|
+
#
|
111
|
+
# Rails.application.config.action_dispatch.cookies_serializer = :json
|
112
|
+
#
|
113
|
+
#
|
114
|
+
# To migrate an existing application to the `:json` serializer, use the `:hybrid` option.
|
115
|
+
#
|
116
|
+
# Rails transparently deserializes existing (Marshal-serialized) cookies on read and
|
117
|
+
# re-writes them in the JSON format.
|
118
|
+
#
|
119
|
+
# It is fine to use `:hybrid` long term; you should do that until you're confident *all* your cookies
|
120
|
+
# have been converted to JSON. To keep using `:hybrid` long term, move this config to its own
|
121
|
+
# initializer or to `config/application.rb`.
|
122
|
+
#
|
123
|
+
# Rails.application.config.action_dispatch.cookies_serializer = :hybrid
|
124
|
+
#
|
125
|
+
#
|
126
|
+
# If your cookies can't yet be serialized to JSON, keep using `:marshal` for backward-compatibility.
|
127
|
+
#
|
128
|
+
# If you have configured the serializer elsewhere, you can remove this section of the file.
|
129
|
+
#
|
130
|
+
# See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information.
|
131
|
+
|
132
|
+
# Change the return value of `ActionDispatch::Request#content_type` to the Content-Type header without modification.
|
133
|
+
# Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type = false
|
134
|
+
|
135
|
+
# Active Storage `has_many_attached` relationships will default to replacing the current collection instead of appending to it.
|
136
|
+
# Thus, to support submitting an empty collection, the `file_field` helper will render an hidden field
|
137
|
+
# `include_hidden` by default when `multiple_file_field_include_hidden` is set to `true`.
|
138
|
+
# See https://guides.rubyonrails.org/configuring.html#config-active-storage-multiple-file-field-include-hidden for more information.
|
139
|
+
# Rails.application.config.active_storage.multiple_file_field_include_hidden = true
|
140
|
+
|
141
|
+
# ** Please read carefully, this must be configured in config/application.rb (NOT this file) **
|
142
|
+
# Disables the deprecated #to_s override in some Ruby core classes
|
143
|
+
# See https://guides.rubyonrails.org/configuring.html#config-active-support-disable-to-s-conversion for more information.
|
144
|
+
# config.active_support.disable_to_s_conversion = true
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Define an application-wide HTTP permissions policy. For further
|
4
|
+
# information see https://developers.google.com/web/updates/2018/06/feature-policy
|
5
|
+
#
|
6
|
+
# Rails.application.config.permissions_policy do |f|
|
7
|
+
# f.camera :none
|
8
|
+
# f.gyroscope :none
|
9
|
+
# f.microphone :none
|
10
|
+
# f.usb :none
|
11
|
+
# f.fullscreen :self
|
12
|
+
# f.payment :self, "https://secure.example.com"
|
13
|
+
# end
|
@@ -7,12 +7,16 @@ class CreateActiveStorageTables < ActiveRecord::Migration[6.0]
|
|
7
7
|
t.string :service_name, null: false
|
8
8
|
t.text :metadata
|
9
9
|
t.bigint :byte_size, null: false
|
10
|
-
t.string :checksum, null:
|
10
|
+
t.string :checksum, null: true
|
11
11
|
t.datetime :created_at, null: false
|
12
12
|
|
13
13
|
t.index [ :key ], unique: true
|
14
14
|
end
|
15
15
|
|
16
|
+
if configured_service = ActiveStorage::Blob.service.name
|
17
|
+
ActiveStorage::Blob.unscoped.update_all(service_name: configured_service)
|
18
|
+
end
|
19
|
+
|
16
20
|
create_table :active_storage_attachments do |t|
|
17
21
|
t.string :name, null: false
|
18
22
|
t.references :record, null: false, polymorphic: true, index: false
|
@@ -23,12 +27,24 @@ class CreateActiveStorageTables < ActiveRecord::Migration[6.0]
|
|
23
27
|
t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true
|
24
28
|
end
|
25
29
|
|
26
|
-
create_table :active_storage_variant_records do |t|
|
27
|
-
t.belongs_to :blob, null: false, index: false
|
30
|
+
create_table :active_storage_variant_records, id: primary_key_type, if_not_exists: true do |t|
|
31
|
+
t.belongs_to :blob, null: false, index: false, type: blobs_primary_key_type
|
28
32
|
t.string :variation_digest, null: false
|
29
33
|
|
30
34
|
t.index %i[ blob_id variation_digest ], name: "index_active_storage_variant_records_uniqueness", unique: true
|
31
35
|
t.foreign_key :active_storage_blobs, column: :blob_id
|
32
36
|
end
|
33
37
|
end
|
38
|
+
|
39
|
+
private
|
40
|
+
def primary_key_type
|
41
|
+
config = Rails.configuration.generators
|
42
|
+
config.options[config.orm][:primary_key_type] || :primary_key
|
43
|
+
end
|
44
|
+
|
45
|
+
def blobs_primary_key_type
|
46
|
+
pkey_name = connection.primary_key(:active_storage_blobs)
|
47
|
+
pkey_column = connection.columns(:active_storage_blobs).find { |c| c.name == pkey_name }
|
48
|
+
pkey_column.bigint? ? :bigint : pkey_column.type
|
49
|
+
end
|
34
50
|
end
|
data/db/migrate/01_create_cms.rb
CHANGED
@@ -15,15 +15,14 @@
|
|
15
15
|
# and/or pass in style overrides with the 'style' parameter, as above
|
16
16
|
|
17
17
|
class Occams::Content::Tag::Audio < Occams::Content::Tag
|
18
|
-
attr_reader :path, :locals
|
18
|
+
attr_reader :path, :style, :locals
|
19
19
|
|
20
20
|
def initialize(context:, params: [], source: nil)
|
21
21
|
super
|
22
|
-
|
22
|
+
@locals = params.extract_options!
|
23
23
|
@path = params[0]
|
24
24
|
@style = ''
|
25
|
-
@style = "<style>.audioplayer {#{
|
26
|
-
@style = options['style']
|
25
|
+
@style = "<style>.audioplayer {#{@locals['style']}}</style>" if @locals['style']
|
27
26
|
|
28
27
|
return if @path.present?
|
29
28
|
|
@@ -16,13 +16,13 @@
|
|
16
16
|
# and/or pass in style overrides with the 'style' parameter, as above
|
17
17
|
|
18
18
|
class Occams::Content::Tag::Breadcrumbs < Occams::Content::Tag
|
19
|
-
attr_reader :
|
19
|
+
attr_reader :links, :style, :locals
|
20
20
|
|
21
21
|
def initialize(context:, params: [], source: nil)
|
22
22
|
super
|
23
|
-
|
23
|
+
@locals = params.extract_options!
|
24
24
|
@style = ''
|
25
|
-
@style = "<style>#breadcrumbs {#{
|
25
|
+
@style = "<style>#breadcrumbs {#{@locals['style']}}</style>" if @locals['style']
|
26
26
|
|
27
27
|
@links = '<div id="breadcrumbs">'
|
28
28
|
context.ancestors.reverse.each do |a|
|
@@ -20,15 +20,15 @@
|
|
20
20
|
# style and exclude parameters are optional
|
21
21
|
|
22
22
|
class Occams::Content::Tag::Siblings < Occams::Content::Tag
|
23
|
-
attr_reader :
|
23
|
+
attr_reader :locals, :style, :links
|
24
24
|
|
25
25
|
def initialize(context:, params: [], source: nil)
|
26
26
|
super
|
27
|
-
|
27
|
+
@locals = params.extract_options!
|
28
28
|
@style = ''
|
29
|
-
@style = "<style>#siblings {#{
|
29
|
+
@style = "<style>#siblings {#{@locals['style']}}</style>" if @locals['style']
|
30
30
|
@exclude = []
|
31
|
-
@exclude =
|
31
|
+
@exclude = @locals['exclude'].split(',') if @locals['exclude']
|
32
32
|
@links = '<div id="siblings">'
|
33
33
|
|
34
34
|
prevp = false
|
data/lib/occams/version.rb
CHANGED
data/occams.gemspec
CHANGED
@@ -28,7 +28,8 @@ Gem::Specification.new do |s|
|
|
28
28
|
s.add_runtime_dependency 'kramdown', '~> 2.4', '>= 2.4.0'
|
29
29
|
s.add_runtime_dependency 'mimemagic', '~> 0.4', '>= 0.4.3'
|
30
30
|
s.add_runtime_dependency 'mini_magick', '~> 4.12', '>= 4.12.0'
|
31
|
-
s.
|
31
|
+
s.add_runtime_dependency 'rails', '>= 6.1.0'
|
32
32
|
s.add_runtime_dependency 'rails-i18n', '>= 6.0.0'
|
33
33
|
s.add_runtime_dependency 'sassc-rails', '~> 2.1', '>= 2.1.2'
|
34
|
+
s.add_runtime_dependency 'sprockets-rails', '~> 3.4', '>= 3.4.2'
|
34
35
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: occams
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andrew vonderLuft
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-08-
|
11
|
+
date: 2023-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: active_link_to
|
@@ -218,6 +218,26 @@ dependencies:
|
|
218
218
|
- - ">="
|
219
219
|
- !ruby/object:Gem::Version
|
220
220
|
version: 2.1.2
|
221
|
+
- !ruby/object:Gem::Dependency
|
222
|
+
name: sprockets-rails
|
223
|
+
requirement: !ruby/object:Gem::Requirement
|
224
|
+
requirements:
|
225
|
+
- - "~>"
|
226
|
+
- !ruby/object:Gem::Version
|
227
|
+
version: '3.4'
|
228
|
+
- - ">="
|
229
|
+
- !ruby/object:Gem::Version
|
230
|
+
version: 3.4.2
|
231
|
+
type: :runtime
|
232
|
+
prerelease: false
|
233
|
+
version_requirements: !ruby/object:Gem::Requirement
|
234
|
+
requirements:
|
235
|
+
- - "~>"
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '3.4'
|
238
|
+
- - ">="
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
version: 3.4.2
|
221
241
|
description: Occams is a powerful Rails 6-7+ CMS Engine
|
222
242
|
email:
|
223
243
|
- wonder@hey.com
|
@@ -577,12 +597,21 @@ files:
|
|
577
597
|
- config.ru
|
578
598
|
- config/application.rb
|
579
599
|
- config/boot.rb
|
600
|
+
- config/cable.yml
|
580
601
|
- config/cms_routes.rb
|
581
602
|
- config/database.yml
|
582
603
|
- config/environment.rb
|
583
604
|
- config/environments/development.rb
|
605
|
+
- config/environments/production.rb
|
584
606
|
- config/environments/test.rb
|
607
|
+
- config/initializers/assets.rb
|
608
|
+
- config/initializers/content_security_policy.rb
|
609
|
+
- config/initializers/filter_parameter_logging.rb
|
610
|
+
- config/initializers/inflections.rb
|
611
|
+
- config/initializers/json.rb
|
612
|
+
- config/initializers/new_framework_defaults_7_0.rb
|
585
613
|
- config/initializers/occams.rb
|
614
|
+
- config/initializers/permissions_policy.rb
|
586
615
|
- config/locales/ar.yml
|
587
616
|
- config/locales/ca.yml
|
588
617
|
- config/locales/cs.yml
|