I have a Rails 6 app using webpacker for assets. I am deploying the app using capistrano.
The app words well locally and serves my css and js files but on production CSS and JS files are not applied
Here are my config files.
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, "[email protected]: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