我有一个工作的 Vagrant 实例,现在尝试将“应用程序”食谱与 Chef/Vagrant 一起使用,以便能够从 git 部署并收到以下错误消息:
FATAL: NoMethodError: undefined method `path' for
Chef::Resource::Application
自然,“路径”是“应用”配方中不可或缺的一部分。如果我将其注释掉,则会为下一个属性显示相同的消息。
我已确保 metadata.rb 包含以下行:
depends 'application'
我还重新加载了 vagrant 实例以确保所有更改都能传播并运行“berks update”。我应该朝哪个方向寻找这个错误的原因?
Vagrantfile 非常标准,主要包括:
config.vm.provision :chef_solo do |chef|
chef.json = {
:mysql => {
:server_root_password => 'rootpass',
:server_debian_password => 'debpass',
:server_repl_password => 'replpass'
},
:postgresql => {
:password => {
:postgres => "rootpass"
}
},
}
chef.run_list = [
"recipe[iw-app::default]",
"recipe[iw-app::db]",
"recipe[iw-app::deploy]"
]
end
虽然部署配方包含
user "#{node[:ii][:user]}" do
system true
end
application node[:ii][:app_name] do
path node[:ii][:deploy_to]
owner node[:ii][:user]
group node[:ii][:group]
repository node[:ii][:repo][:url]
revision node[:ii][:repo][:branch]
deploy_key node[:ii][:repo][:deploy_key]
packages ["git"]
end
metadata.rb 只是:
depends 'apt'
depends 'python'
depends 'application'
depends 'application_python'
depends 'postgresql'