我有以下厨师食谱:
deploy "/home/prj" do
repo "https://path_to_repo"
user node.project_owner
group node.project_owner
symlink_before_migrate({})
end
如何访问提供商的发布路径?在我的情况下将是:/ home / prj / releases / 20120506125222 /。
答案 0 :(得分:2)
这取决于您要访问发布路径的位置。 “内部”资源,即回调,很容易使用类似的东西
deploy "/home/prj" do
before_migrate do
gemfile = File.read("#{release_path}/Gemfile")
end
end
在资源之外,您没有可用的release_path变量。但是,您可以使用指向当前部署版本的current
符号链接,即最后一个版本:
current_path = "home/prj/current"
release_path = File.readlink(current_path)
大多数情况下,您可以直接在current_path
中查看内容,而无需诉诸解析符号链接目标。
那就是说,你通常不想直接在那里做事。相反,我们鼓励您在共享目录中生成其他文件(即/home/prk/shared
),并让chef在部署期间将这些文件符号链接到该版本中。这正是symlink_before_migrate
的用途。这样,您不需要亲自了解发布路径,但可以让厨师为您处理。