зеркало из
https://github.com/rs-pro/activeadmin-quill_editor.git
synced 2026-08-28 15:36:17 +03:00
chore: Update Docker dev setup
Этот коммит содержится в:
1
.rspec
1
.rspec
@@ -1 +1,2 @@
|
|||||||
--require rails_helper
|
--require rails_helper
|
||||||
|
--format documentation
|
||||||
|
|||||||
20
Gemfile
20
Gemfile
@@ -2,19 +2,31 @@
|
|||||||
|
|
||||||
source 'https://rubygems.org'
|
source 'https://rubygems.org'
|
||||||
|
|
||||||
if ENV["DEVEL"] == "1"
|
if ENV['DEVEL'] == '1'
|
||||||
gem 'rails', '~> 7.1.0'
|
# for Docker dev
|
||||||
|
rails_ver = ENV.fetch('RAILS_VERSION')
|
||||||
|
gem 'rails', rails_ver
|
||||||
|
|
||||||
gem 'activeadmin', '~> 3.3'
|
gem 'activeadmin', ENV.fetch('ACTIVEADMIN_VERSION')
|
||||||
gem 'activeadmin_quill_editor', path: './'
|
gem 'activeadmin_quill_editor', path: './'
|
||||||
|
|
||||||
|
if rails_ver.start_with?('7.0')
|
||||||
|
gem 'concurrent-ruby', '1.3.4'
|
||||||
|
gem 'sqlite3', '~> 1.4'
|
||||||
|
else
|
||||||
|
gem 'sqlite3'
|
||||||
|
end
|
||||||
else
|
else
|
||||||
gemspec
|
gemspec
|
||||||
|
|
||||||
|
gem 'sqlite3'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
gem 'bigdecimal'
|
||||||
|
gem 'mutex_m'
|
||||||
gem 'puma'
|
gem 'puma'
|
||||||
gem 'sassc'
|
gem 'sassc'
|
||||||
gem 'sprockets-rails'
|
gem 'sprockets-rails'
|
||||||
gem 'sqlite3'
|
|
||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
gem 'capybara'
|
gem 'capybara'
|
||||||
|
|||||||
40
README.md
40
README.md
@@ -105,22 +105,50 @@ the editor will not destroy them, you'll need to implement a purge logic for tha
|
|||||||
|
|
||||||
Project created by [Mattia Roccoberton](http://blocknot.es), thanks also to the good guys that opened issues and pull requests from time to time.
|
Project created by [Mattia Roccoberton](http://blocknot.es), thanks also to the good guys that opened issues and pull requests from time to time.
|
||||||
|
|
||||||
A Docker dev setup is provided if you like to work with it:
|
There 3 ways to interact with this project:
|
||||||
|
|
||||||
|
1) Using Docker:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# Run rails server on the dummy app (=> http://localhost:3000 to access to ActiveAdmin):
|
# Run rails server on the dummy app (=> http://localhost:3000 to access to ActiveAdmin):
|
||||||
make up
|
make up
|
||||||
# Enter in a console of the dummy app after it has been started:
|
# Enter in a Rails console (with the dummy app started):
|
||||||
make console
|
make console
|
||||||
# Enter in a shell of the dummy app after it has been started:
|
# Enter in a shell (with the dummy app started):
|
||||||
make shell
|
make shell
|
||||||
# Run the linter on the project:
|
# Run the linter on the project (with the dummy app started):
|
||||||
make lint
|
make lint
|
||||||
# Remove container and image after stopping the app:
|
# Run the test suite (with the dummy app started):
|
||||||
|
make specs
|
||||||
|
# Remove container and image:
|
||||||
make cleanup
|
make cleanup
|
||||||
|
# To try different versions of Ruby/Rails/ActiveAdmin edit docker-compose.yml
|
||||||
|
# For more commands please check the Makefile
|
||||||
```
|
```
|
||||||
|
|
||||||
For more commands please check the [Makefile](Makefile).
|
2) Using Appraisal:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
export RAILS_ENV=development
|
||||||
|
# Install dependencies
|
||||||
|
bin/appraisal
|
||||||
|
# Run server (or any command)
|
||||||
|
bin/appraisal rails s
|
||||||
|
# Or with specific versions
|
||||||
|
bin/appraisal rails71-activeadmin rails s
|
||||||
|
```
|
||||||
|
|
||||||
|
3) With a local setup:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# Dev setup (set the required envs)
|
||||||
|
source extra/dev_setup.sh
|
||||||
|
# Install dependencies
|
||||||
|
bundle
|
||||||
|
# Run server (or any command)
|
||||||
|
bin/rails s
|
||||||
|
# To try different versions of Rails/ActiveAdmin edit extra/dev_setup.sh
|
||||||
|
```
|
||||||
|
|
||||||
## Do you like it? Star it!
|
## Do you like it? Star it!
|
||||||
|
|
||||||
|
|||||||
@@ -4,9 +4,14 @@ services:
|
|||||||
build:
|
build:
|
||||||
context: .
|
context: .
|
||||||
dockerfile: ./extra/Dockerfile
|
dockerfile: ./extra/Dockerfile
|
||||||
|
# dockerfile: ./extra/Dockerfile_alpine
|
||||||
args:
|
args:
|
||||||
RUBY_VERSION: 3.3.6
|
# Debian-based Ruby image:
|
||||||
|
RUBY_IMAGE: ruby:3.4-slim
|
||||||
UID: ${UID}
|
UID: ${UID}
|
||||||
|
environment:
|
||||||
|
ACTIVEADMIN_VERSION: ~> 3.3
|
||||||
|
RAILS_VERSION: ~> 8.0
|
||||||
user: "${UID}:${GID}"
|
user: "${UID}:${GID}"
|
||||||
ports:
|
ports:
|
||||||
- '3000:3000'
|
- '3000:3000'
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
ARG RUBY_VERSION=3
|
ARG RUBY_IMAGE=ruby:3
|
||||||
FROM ruby:${RUBY_VERSION}
|
FROM ${RUBY_IMAGE}
|
||||||
|
|
||||||
ARG UID
|
ARG UID
|
||||||
|
|
||||||
@@ -8,19 +8,14 @@ ENV LANG=C.UTF-8
|
|||||||
ENV RAILS_ENV=development
|
ENV RAILS_ENV=development
|
||||||
|
|
||||||
RUN apt-get update -qq
|
RUN apt-get update -qq
|
||||||
RUN DEBIAN_FRONTEND=noninteractive apt-get install -yqq --no-install-recommends build-essential chromium libyaml-dev
|
RUN DEBIAN_FRONTEND=noninteractive apt-get install -yqq --no-install-recommends build-essential chromium libyaml-dev nano
|
||||||
|
|
||||||
RUN gem install bundler
|
RUN gem install bundler
|
||||||
RUN echo 'gem: --no-document' > /etc/gemrc
|
RUN echo 'gem: --no-document' > /etc/gemrc
|
||||||
|
|
||||||
COPY . /app
|
|
||||||
|
|
||||||
RUN mkdir -p /home/app
|
|
||||||
RUN useradd -u ${UID} --shell /bin/bash app
|
RUN useradd -u ${UID} --shell /bin/bash app
|
||||||
|
RUN mkdir -p /home/app && chown -R app:app /home/app
|
||||||
RUN chown -R app /usr/local/bundle
|
RUN chown -R app /usr/local/bundle
|
||||||
RUN chown -R app:app /home/app && chown -R app:app /app
|
|
||||||
|
|
||||||
USER ${UID}
|
USER ${UID}
|
||||||
|
COPY . /app
|
||||||
WORKDIR /app
|
|
||||||
RUN bundle update
|
|
||||||
|
|||||||
18
extra/Dockerfile_alpine
Обычный файл
18
extra/Dockerfile_alpine
Обычный файл
@@ -0,0 +1,18 @@
|
|||||||
|
FROM ruby:3.3-alpine
|
||||||
|
|
||||||
|
ARG UID
|
||||||
|
|
||||||
|
ENV DEVEL=1
|
||||||
|
ENV LANG=C.UTF-8
|
||||||
|
ENV RAILS_ENV=development
|
||||||
|
|
||||||
|
RUN apk update && apk add --no-cache build-base chromium tzdata yaml-dev
|
||||||
|
|
||||||
|
RUN gem install bundler
|
||||||
|
RUN echo 'gem: --no-document' > /etc/gemrc
|
||||||
|
|
||||||
|
RUN adduser -u ${UID} -D app
|
||||||
|
RUN mkdir -p /home/app && chown -R app:app /home/app
|
||||||
|
RUN chown -R app /usr/local/bundle
|
||||||
|
|
||||||
|
COPY . /app
|
||||||
8
extra/dev_setup.sh
Исполняемый файл
8
extra/dev_setup.sh
Исполняемый файл
@@ -0,0 +1,8 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
export DEVEL=1
|
||||||
|
|
||||||
|
export RAILS_VERSION=7.2.2.1
|
||||||
|
export ACTIVEADMIN_VERSION=3.3.0
|
||||||
|
|
||||||
|
export RAILS_ENV=development
|
||||||
@@ -1,2 +1,8 @@
|
|||||||
|
echo "> Install dependencies"
|
||||||
|
rm -f Gemfile.lock && bundle install
|
||||||
|
|
||||||
|
echo "> Run pending migrations"
|
||||||
cd spec/dummy && bundle exec rails db:migrate
|
cd spec/dummy && bundle exec rails db:migrate
|
||||||
cd - && rm -f spec/dummy/tmp/pids/server.pid && bundle exec rails s -b 0.0.0.0
|
|
||||||
|
echo "> Start Rails server"
|
||||||
|
cd /app && rm -f spec/dummy/tmp/pids/server.pid && bundle exec rails s -b 0.0.0.0
|
||||||
|
|||||||
@@ -59,4 +59,8 @@ Rails.application.configure do
|
|||||||
# Use an evented file watcher to asynchronously detect changes in source code,
|
# Use an evented file watcher to asynchronously detect changes in source code,
|
||||||
# routes, locales, etc. This feature depends on the listen gem.
|
# routes, locales, etc. This feature depends on the listen gem.
|
||||||
# config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
# config.file_watcher = ActiveSupport::EventedFileUpdateChecker
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
config.active_support.to_time_preserves_timezone = :zone if Gem::Version.new(Rails.version) >= Gem::Version.new('8.0')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,112 +0,0 @@
|
|||||||
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
|
|
||||||
|
|
||||||
# Ensures that a master key has been made available in either ENV["RAILS_MASTER_KEY"]
|
|
||||||
# or in config/master.key. This key is used to decrypt credentials (and other encrypted files).
|
|
||||||
# config.require_master_key = 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 CSS using a preprocessor.
|
|
||||||
# config.assets.css_compressor = :sass
|
|
||||||
|
|
||||||
# Do not fallback to assets pipeline if a precompiled asset is missed.
|
|
||||||
config.assets.compile = false
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Store uploaded files on the local file system (see config/storage.yml for options).
|
|
||||||
config.active_storage.service = :local
|
|
||||||
|
|
||||||
# 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_production"
|
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
# Inserts middleware to perform automatic connection switching.
|
|
||||||
# The `database_selector` hash is used to pass options to the DatabaseSelector
|
|
||||||
# middleware. The `delay` is used to determine how long to wait after a write
|
|
||||||
# to send a subsequent read to the primary.
|
|
||||||
#
|
|
||||||
# The `database_resolver` class is used by the middleware to determine which
|
|
||||||
# database is appropriate to use based on the time delay.
|
|
||||||
#
|
|
||||||
# The `database_resolver_context` class is used by the middleware to set
|
|
||||||
# timestamps for the last write to the primary. The resolver uses the context
|
|
||||||
# class timestamps to determine how long to wait before reading from the
|
|
||||||
# replica.
|
|
||||||
#
|
|
||||||
# By default Rails will store a last write timestamp in the session. The
|
|
||||||
# DatabaseSelector middleware is designed as such you can define your own
|
|
||||||
# strategy for connection switching and pass that into the middleware through
|
|
||||||
# these configuration options.
|
|
||||||
# config.active_record.database_selector = { delay: 2.seconds }
|
|
||||||
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
|
|
||||||
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
|
|
||||||
end
|
|
||||||
@@ -46,4 +46,8 @@ Rails.application.configure do
|
|||||||
|
|
||||||
# Raises error for missing translations.
|
# Raises error for missing translations.
|
||||||
# config.action_view.raise_on_missing_translations = true
|
# config.action_view.raise_on_missing_translations = true
|
||||||
|
|
||||||
|
###
|
||||||
|
|
||||||
|
config.active_support.to_time_preserves_timezone = :zone if Gem::Version.new(Rails.version) >= Gem::Version.new('8.0')
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.1].define(version: 2018_06_07_053739) do
|
ActiveRecord::Schema[8.0].define(version: 2018_06_07_053739) do
|
||||||
create_table "active_admin_comments", force: :cascade do |t|
|
create_table "active_admin_comments", force: :cascade do |t|
|
||||||
t.string "namespace"
|
t.string "namespace"
|
||||||
t.text "body"
|
t.text "body"
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user