gpt4 book ai didi

ruby-on-rails - 动态站点地图的 Capistrano 3 配方

转载 作者:行者123 更新时间:2023-12-02 04:54:50 24 4
gpt4 key购买 nike

我正在尝试“翻译”要部署的 Capistrano 配方 dynamic_sitemaps与 Capistrano 3 一起工作。

自述文件中建议的片段如下所示:

after "deploy:update_code", "sitemaps:create_symlink"

namespace :sitemaps do
task :create_symlink, roles: :app do
run "mkdir -p #{shared_path}/sitemaps"
run "rm -rf #{release_path}/public/sitemaps"
run "ln -s #{shared_path}/sitemaps #{release_path}/public/sitemaps"
end
end

但这不适用于 Capistrano 3。我将此代码粘贴到 config/deploy.rb 中,我得到的第一个错误是:不知道如何构建任务 'sitemaps:create_symlink'`。

我在某处读到,在 Capistrano 3 中,必须在调用之前定义命名空间,所以我颠倒了 block 的顺序,定义了 namespace首先并拥有 after最后打电话。我得到了 NoMethodError: undefined method `map' for :roles:Symbol`。

所以我将命名空间 block 重写为:
namespace :sitemaps do
task :create_symlink do
on roles(:web) do
run "mkdir -p #{shared_path}/sitemaps"
run "rm -rf #{release_path}/public/sitemaps"
run "ln -s #{shared_path}/sitemaps #{release_path}/public/sitemaps"
end
end
end

现在我越来越不知道如何构建任务'deploy:update_code',我不知所措。

最佳答案

虽然我无法准确解决上面发布的问题,但解决方案实际上非常简单。如果使用 Capistrano 3,只需添加 public/sitemaps给您的:linked_dirs设置如下:
set :linked_dirs, %w{bin log tmp vendor/bundle public/system public/sitemaps}
这将在 #{release_path}/public/sitemaps 之间创建一个符号链接(symbolic link)。和 #{shared_path}/public/sitemap如果需要,创建后者。

关于ruby-on-rails - 动态站点地图的 Capistrano 3 配方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23907993/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com