gpt4 book ai didi

ruby-on-rails - 使用 Assets 管道优化 Rails 应用程序到多台服务器的部署

转载 作者:数据小太阳 更新时间:2023-10-29 07:19:17 24 4
gpt4 key购买 nike

我正在多服务器环境中部署 Rails 应用程序。该应用程序使用 Assets 管道, Assets 由 s3 提供。如果我在我部署到的每台服务器上运行 assets:precompile,一切正常(所需的 assets/manifest.yml 在每个盒子上生成)。

问题是这让人觉得效率很低。我尝试将其中一台服务器指定为主要服务器,并且只在该机器上运行 Assets :预编译。现在的问题是其他服务器没有 assets/manifest.yml 的副本。

认为解决方案将涉及找出在所有盒子上共享生成的 assets/manifest.yml 文件的最简单方法。

其他人如何处理这种情况?

感谢您的帮助。

最佳答案

最终通过编写这个 cap 任务解决了这个问题:

task :assets_precompile, { on_no_matching_servers: :continue, only: { primary: true } } do
transaction do
on_rollback do
notification.exception_deploy
end

run "cd #{current_release} && RAILS_ENV=#{stage} rake assets:precompile"

# sync manifest.yml
download("#{current_release}/public/assets/manifest.yml", "/tmp/manifest.yml")

find_servers().each do |current_server|
run_locally "ssh app@#{current_server.host} 'mkdir -p #{current_release}/public/assets'"
run_locally "scp /tmp/manifest.yml app@#{current_server.host}:#{current_release}/public/assets/manifest.yml"
end
end
end

看起来有点笨拙,但可以完成工作。我们不想在本地进行预编译。

关于ruby-on-rails - 使用 Assets 管道优化 Rails 应用程序到多台服务器的部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391856/

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