我正在使用Vitor Baptista的chef-ckan食谱为Vagrant设置CKAN安装。
一切正常,但我找不到让CKAN从我的主机操作系统加载源代码的方法(在本例中是OSX中的克隆目录)。
目前,主机操作系统中的CKAN代码(repo代码)与Vagrant共享为 / vagrant 。问题是CKAN虚拟环境正在从〜/ pyenv / src / ckan读取源代码,但不包括我们的提交。
我们如何链接两个目录?
更新1:
看起来vm.shared_folder不会起作用,因为它将主机文件夹映射到vm文件夹。我也在查看cookbook / ckan / recipes并找到了SOURCE_DIR常量,但没有解决问题。
USER = node[:user]
HOME = "/home/#{USER}"
ENV['VIRTUAL_ENV'] = "#{HOME}/pyenv"
ENV['PATH'] = "#{ENV['VIRTUAL_ENV']}/bin:#{ENV['PATH']}"
SOURCE_DIR = "#{ENV['VIRTUAL_ENV']}/src/ckan"
更新2:
刚刚在配方https://github.com/vitorbaptista/chef-ckan/blob/master/cookbooks/ckan/recipes/default.rb#L29中找到了这一行,也许我们可以链接到vm.shared_folder,以便CKAN安装从我们的主机操作系统读取源代码。
仍然无法正常工作。只是想知道vagrant reload
是否还不够,我应该做vagrant destroy; vagrant up
答案 0 :(得分:2)
(我刚把它添加到chef-ckan的存储库中,所以更容易更新它。这里我只是解释修复。)
问题是我使用pip install --editable
来克隆CKAN的存储库并安装它。要做你想做的事,你需要将这两个步骤分开。
在# Install CKAN Package
步骤之前,添加:
git SOURCE_DIR do
user USER
group USER
repository "git://github.com/okfn/ckan.git"
reference "master"
enable_submodules true
end
然后将安装编辑为:
python_pip SOURCE_DIR do
...
end
然后你可以随意改变SOURCE_DIR(即/vagrant/ckan
),它应该有效。它不能是尚未创建其父级的子目录。例如,如果SOURCE_DIR是“/ vagrant / src / ckan”,则必须存在“/ vagrant / src”。
默认情况下,git chef的配方会在克隆的存储库运行时更新它。如果您想更改它,请查看http://docs.opscode.com/resource_git.html上的文档。
干杯!
答案 1 :(得分:1)
我终于得到了它,通过与VM共享我的CKAN fork directoy(在这种情况下,由于Vagrantfile位于chef-ckan子模块内,因此是父对象):
config.vm.share_folder "ckan", "/vagrant", ".."
参考:https://github.com/wilhelmbot/chef-ckan/commit/3cacc6969e8e257862cbc13f32a4d9f271850f27
并更改CKAN配方以使用共享文件夹作为SOURCE DIRECTORY(正如Vitor指出的那样)https://github.com/wilhelmbot/chef-ckan/commit/cc338f6946efc3968c3b8bded6df00010e9e4732
注意:
我无法使git引用属性起作用,这就是为什么我没有使用Vitor提出的完整解决方案。
我得到了STDOUT: STDERR: fatal: Could not parse object 'e0648dbf...'