我知道我可以使用Rails.root
获取我的rails应用的位置:
> Rails.root
=> #<Pathname:/var/www/app-name/releases/20150507181426>
我正在寻找调用getistist共享文件夹的函数,在这种情况下可以在这里找到:
/var/www/app-name/shared/
我需要能够从ruby代码中获取路径。提前谢谢。
答案 0 :(得分:5)
你真的不应该知道Capistrano的共享路径是什么。在部署过程中,您希望您创建指向部署之间共享的任何目录的链接。
linked_dirs
变量定义了这个:
set :linked_dirs, %w[ example ]
如果设置,则在部署期间releases/NNN/example
将链接到shared/example
。您可以根据需要添加或更改此列表。
<强>更新强>
如果您担心在应用后续部署时删除此符号链接,那么在执行此操作之前,无论进程使用该链接是否值得将此链接扩展到完整路径。
遵循这些链接是到达正确目的地的最可靠方式。
答案 1 :(得分:2)
您可以简单地使用全局capistrano变量shared_path
(适用于capistrano v2和v3)。
它为您提供共享内容的基本路径:
puts "#{shared_path}"
=> /DEPLOY_PATH/APP_NAME/shared
可以找到可能有用的全局变量列表here,我猜大多数变量在capistrano v3中也能正常运行。
更新
请注意,大多数只能在capistrano libs {deploy.rb
或自定义阶段development.rb
,staging.rb
,production.rb
,...)或在capistrano rake任务中(例如使用on role(:app) do {...}
回调时)。