从 ruby 获取 Capistrano 共享路径的路径
Get path to capistrano shared path from ruby
我知道我可以通过 Rails.root
获取我的 rails 应用程序的位置:
> Rails.root
=> #<Pathname:/var/www/app-name/releases/20150507181426>
我正在寻找调用以获取 capistrano 的共享文件夹的函数,在本例中可在此处找到:
/var/www/app-name/shared/
我需要能够从 ruby 代码中获取路径。提前致谢。
你真的不需要知道 Capistrano 的共享路径是什么。在部署过程中,您应该为部署之间共享的任何目录创建 link。
linked_dirs
变量定义如下:
set :linked_dirs, %w[ example ]
如果设置,在部署期间 releases/NNN/example
将被 link 编辑为 shared/example
。您可以根据需要添加或更改此列表。
更新:
如果您担心此 symlink 在应用后续部署时被删除,则值得在执行之前通过任何使用它的进程将此 link 扩展到完整路径。
遵循这些 link 是到达正确目的地的最可靠方法。
您可以简单地使用全局 capistrano 变量 shared_path
(适用于 capistrano v2 和 v3)。
它为您提供共享内容的基本路径:
puts "#{shared_path}"
=> /DEPLOY_PATH/APP_NAME/shared
可以找到可能有用的全局变量列表 here,我想它们中的大多数在 capistrano v3 中也能很好地工作。
更新
请注意,其中大部分仅在 capistrano 库下可用(deploy.rb
或自定义阶段:development.rb
、staging.rb
、production.rb
、... ) 或在 capistrano rake 任务中(例如使用 on role(:app) do {...}
回调时)。
我知道我可以通过 Rails.root
获取我的 rails 应用程序的位置:
> Rails.root
=> #<Pathname:/var/www/app-name/releases/20150507181426>
我正在寻找调用以获取 capistrano 的共享文件夹的函数,在本例中可在此处找到:
/var/www/app-name/shared/
我需要能够从 ruby 代码中获取路径。提前致谢。
你真的不需要知道 Capistrano 的共享路径是什么。在部署过程中,您应该为部署之间共享的任何目录创建 link。
linked_dirs
变量定义如下:
set :linked_dirs, %w[ example ]
如果设置,在部署期间 releases/NNN/example
将被 link 编辑为 shared/example
。您可以根据需要添加或更改此列表。
更新:
如果您担心此 symlink 在应用后续部署时被删除,则值得在执行之前通过任何使用它的进程将此 link 扩展到完整路径。
遵循这些 link 是到达正确目的地的最可靠方法。
您可以简单地使用全局 capistrano 变量 shared_path
(适用于 capistrano v2 和 v3)。
它为您提供共享内容的基本路径:
puts "#{shared_path}"
=> /DEPLOY_PATH/APP_NAME/shared
可以找到可能有用的全局变量列表 here,我想它们中的大多数在 capistrano v3 中也能很好地工作。
更新
请注意,其中大部分仅在 capistrano 库下可用(deploy.rb
或自定义阶段:development.rb
、staging.rb
、production.rb
、... ) 或在 capistrano rake 任务中(例如使用 on role(:app) do {...}
回调时)。