2012-05-08 73 views
1

我有以下厨师食谱:厨师独奏:部署:访问release_path

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

回答

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的用途。这样,你不需要真正知道自己的发布路径,但可以让厨师为你处理。