1

我有以下厨师食谱:

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/ 。

4

1 回答 1

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)中生成其他文件,并在部署期间让厨师将这些文件符号链接到版本中。这正是symlink_before_migrate它的用途。这样,您实际上不需要自己知道发布路径,而是可以让厨师为您处理。

于 2012-05-08T11:26:01.600 回答