ruby-on-rails - Caddy 不渲染 Assets

标签 ruby-on-rails ubuntu sprockets caddy caddyfile

我有一个不渲染 Assets 的 Rails 应用程序。它以前工作正常。当我添加 linked files它不仅上传了我指定的文件,还上传了预编译的 Assets 。即使在破坏所有 Assets 并重新编译后,它也无法呈现它们,即使它们存在于盒子上。

错误 enter image description here

卡迪文件

mydomain.com {
  gzip
  log stdout
  root /home/deploy/apps/rails-app/current/public
  proxy / unix:///home/deploy/apps/rails-app/shared/tmp/sockets/rails-app-puma.sock {
    except /assets # this is /public/assets directory
    except /solr
    transparent
    websocket
    policy round_robin
  }
  errors stdout
  header / {
        Strict-Transport-Security "max-age=31536000"
  }

  proxy /solr localhost:8983 {
    transparent
  }
}

deploy.rb

# frozen_string_literal: true

# config valid only for current version of Capistrano
# lock '3.13.0'

# Change these
server '...', port: 2221, roles: %i[web app db], primary: true

set :repo_url,        '...'

set :application,     '...'
set :user,            'deploy'
set :puma_threads,    [4, 16]
set :puma_workers,    0

# Don't change these unless you know what you're doing
set :pty,             true
set :use_sudo,        false
set :stage,           :production
set :deploy_via,      :remote_cache
set :deploy_to,       "/home/#{fetch(:user)}/apps/#{fetch(:application)}"
set :puma_bind,       "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
set :puma_state,      "#{shared_path}/tmp/pids/puma.state"
set :puma_pid,        "#{shared_path}/tmp/pids/puma.pid"
set :puma_access_log, "#{release_path}/log/puma.error.log"
set :puma_error_log,  "#{release_path}/log/puma.access.log"
set :ssh_options,     { forward_agent: true, user: fetch(:user), keys: %w[~/.ssh/id_rsa], auth_methods: %w(publickey) }
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true # Change to false when not using ActiveRecord
set :bundle_flags, '--no-cache'
set :rbenv_type, :user # or :system, depends on your rbenv setup
set :rbenv_ruby, '2.6.6'
set :rails_env, 'production'
set :assets_dependencies, %w(app/assets lib/assets vendor/assets Gemfile.lock config/routes.rb)

## Defaults:
set :branch,        'master'
set :log_level,     :debug
set :keep_releases, 5

## Linked Files & Directories (Default None):
set :linked_files, %w{config/database.yml config/secrets.yml}
set :linked_dirs,  %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
# set :linked_dirs,  %w{data_files}
set :linked_dirs, fetch(:linked_dirs, []).push('public/system')

namespace :puma do
  desc 'Create Directories for Puma Pids and Socket'
  task :make_dirs do
    on roles(:app) do
      execute "mkdir #{shared_path}/tmp/sockets -p"
      execute "mkdir #{shared_path}/tmp/pids -p"
    end
  end

  # before :start, :make_dirs
end

namespace :deploy do
  desc 'Make sure local git is in sync with remote.'
  task :check_revision do
    on roles(:app) do
      unless `git rev-parse HEAD` == `git rev-parse origin/master`
        puts 'WARNING: HEAD is not the same as origin/master'
        puts 'Run `git push` to sync changes.'
        exit
      end
    end
  end

  desc 'Initial Deploy'
  task :initial do
    on roles(:app) do
      before 'deploy:restart', 'puma:start'
      invoke! 'deploy'
    end
  end

  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      invoke! 'puma:restart'
    end
  end

  before :starting,     :check_revision
  after  :finishing,    :compile_assets
  after  :finishing,    :cleanup
  after  :finishing,    :restart
end

# ps aux | grep puma    # Get puma pid
# kill -s SIGUSR2 pid   # Restart puma
# kill -s SIGTERM pid   # Stop puma

最佳答案

我能够使用 fileserver 指令使它正常工作。

https://example.com {
  encode zstd gzip
  root * /home/deploy/apps/rails-app/current/public
  file_server
  tls user@email.com
  @notStatic {
     not file
  }
  reverse_proxy @notStatic unix//home/deploy/apps/rails-app/shared/tmp/sockets/rails-app-puma.sock

  header / {
    Strict-Transport-Security "max-age=31536000"
  }
}

关于ruby-on-rails - Caddy 不渲染 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61680415/

相关文章:

ruby-on-rails - Capistrano 错误消息 : Please install the pg adapter: `gem install activerecord-pg-adapter` (cannot load such file --

ruby-on-rails - 有没有办法在带有 rails 的 yaml 中引用常量?

ruby-on-rails - 创建Rails模型时如何设置默认值?

php - Ubuntu 服务器虚拟主机未正确重定向

ubuntu - 如何只加载程序需要的那些函数而不是加载整个 libc?

linux - 在哪里可以找到架构/设置源?

ruby-on-rails - Rails Assets 管道暂存 : correct fingerprint but 404ing

javascript - EOF 错误 javascript_include_tag Rails 4

ruby - 如何让 Assets 编译成自己的文件并编译到 application.js 文件中?

ruby-on-rails - Rails 3.1 : The public directory no longer serves js assets. 如何在页面加载后加载额外的js文件?