如何解决Rails 6 Capistrano 部署到生产不提供 css 和 js 文件
我有一个使用 webpacker 作为资源的 Rails 6 应用程序。我正在使用 capistrano
部署应用程序。
该应用程序在本地运行良好,可提供我的 css 和 js 文件,但在生产环境中未应用 CSS 和 JS 文件
这是我的配置文件。
config/deploy.rb
# config valid for current version and patch releases of Capistrano
lock "~> 3.16.0"
require 'capistrano-db-tasks'
set :application,"my_app"
set :repo_url,"git@gitlab.com:myname/myapp.git"
set :use_sudo,false
set :rvm_map_bins,%w{gem rake ruby rails bundle puma pumactl sidekiq sidekiqctl}
# if you want to remove the local dump file after loading
set :db_local_clean,false
# Default branch is :master
ask :branch,`git rev-parse --abbrev-ref HEAD`.chomp
set :use_sudo,false
set :bundle_binsstubs,nil
# Default deploy_to directory is /var/www/my_app_name
set :app_path,"#{deploy_to}/current"
# Default value for :format is :airbrussh.
# set :format,:airbrussh
# You can configure the Airbrussh format using :format_options.
# These are the defaults.
# set :format_options,command_output: true,log_file: "log/capistrano.log",color: :auto,truncate: :auto
# Default value for :pty is false
set :pty,false
# Default value for :linked_files is []
append :linked_files,'config/database.yml','config/secrets.yml','config/application.yml','config/sidekiq.yml'
# Default value for linked_dirs is []
append :linked_dirs,'log','tmp/pids','tmp/cache','tmp/sockets','public/system','public/uploads'
# Default value for default_env is {}
# set :default_env,{ path: "/opt/ruby/bin:$PATH" }
# Default value for keep_releases is 5
# set :keep_releases,5
## Capistrano DB Tasks
# if you want to remove the local dump file after loading
# set :db_local_clean,true
# if you want to remove the dump file from the server after downloading
# set :db_remote_clean,true
# if you are highly paranoid and want to prevent any push operation to the server
set :disallow_pushing,false
# If you want to import assets,you can change default asset dir (default = system)
# This directory must be in your shared directory on the server
set :assets_dir,%w(public/uploads)
set :local_assets_dir,%w(public/uploads)
### Puma Configuration ###
set :nginx_use_ssl,true
set :puma_workers,2
# Only attempt migration if db/migrate changed
set :conditionally_migrate,true
after 'deploy:updated','assets:precompile'
namespace :rake do
desc 'Runs rake tasks on remote server'
task :fix_order_count => [:set_rails_env] do
within release_path do
with rails_env: fetch(:rails_env) do
execute :rake,"customer:fix_order_count"
end
end
end
end
lib/capistrano/tasks/precompile.rake
# lib/capistrano/tasks/precompile.rake
namespace :assets do
desc 'Precompile assets locally and then rsync to web servers'
task :precompile do
run_locally do
with rails_env: stage_of_env do
execute :bundle,'exec rake assets:precompile'
end
end
on roles(:web),in: :parallel do |server|
run_locally do
execute :rsync,"-a --delete ./public/packs/ #{fetch(:user)}@#{server.hostname}:#{shared_path}/public/packs/"
execute :rsync,"-a --delete ./public/assets/ #{fetch(:user)}@#{server.hostname}:#{shared_path}/public/assets/"
end
end
run_locally do
execute :rm,'-rf public/assets'
execute :rm,'-rf public/packs'
end
end
end
config/environments/production.rb
require "active_support/core_ext/integer/time"
Rails.application.configure do
# Code is not reloaded between requests.
config.cache_classes = true
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
# 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
# Fingerprint assets digest
# config.assets.digest = true
# Store uploaded files on the local file system (see config/storage.yml for options).
config.active_storage.service = :local
config.log_level = :info
# Prepend all log lines with the following tags.
config.log_tags = [ :request_id ]
config.action_mailer.perform_caching = 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
# Log disallowed deprecations.
config.active_support.disallowed_deprecation = :log
# Tell Active Support which deprecation messages to disallow.
config.active_support.disallowed_deprecation_warnings = []
# Use default logging formatter so that PID and timestamp are not suppressed.
config.log_formatter = ::Logger::Formatter.new
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。