gpt4 book ai didi

ruby - Chef - Chef::Resource::Application 中的 NoMethodError

转载 作者:太空宇宙 更新时间:2023-11-03 16:31:41 27 4
gpt4 key购买 nike

我有一个工作的 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'

最佳答案

我遇到了一个非常相似的问题。在我的例子中,解决它的方法是删除我在抛出异常的 block 中使用的不正确的变量。

例如下面是抛出:

ark "apachesolr-drupal" do
url node['solri']['drupal']['url']
version node['solr']['drupal']['version']
path "/tmp"
action :put
end

与...

NoMethodError
-------------
No resource or method named `ark' for `Chef::Recipe "drupal"'

node['solri']['drupal']['url'] 未设置以下工作:

ark "apachesolr-drupal" do
url node['solr']['drupal']['url']
version node['solr']['drupal']['version']
path "/tmp"
action :put
end

关于ruby - Chef - Chef::Resource::Application 中的 NoMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817368/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com