从ruby获取capistrano共享路径的路径

时间:2015-05-07 23:22:15

标签: ruby ruby-on-rails-4 capistrano capistrano3

我知道我可以使用Rails.root获取我的rails应用的位置:

> Rails.root
 => #<Pathname:/var/www/app-name/releases/20150507181426>

我正在寻找调用getistist共享文件夹的函数,在这种情况下可以在这里找到:

/var/www/app-name/shared/

我需要能够从ruby代码中获取路径。提前谢谢。

2 个答案:

答案 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.rbstaging.rbproduction.rb,...)或在capistrano rake任务中(例如使用on role(:app) do {...}回调时)。