【问题标题】:Chef application_java cookbook - uninitialized constant Chef::DSLChef application_java 食谱 - 未初始化的常量 Chef::DSL
【发布时间】:2014-05-14 05:42:14
【问题描述】:

我对 application_java 食谱有疑问。我在 application_java 食谱中添加了配方,以将我的 .war 存档部署到 Tomcat。看起来是这样的:

case node['platform']
when 'debian', 'ubuntu'
  include_recipe 'apt'
end
include_recipe 'java' # Need described below

application 'ensembleAPI' do
  path         "/var/lib/tomcat7/webapps/ensembleRestApi.war"
  owner "root"
  group "root"
  mode "0777"
  repository   'ensembleRestApi.war'
scm_provider Chef::Provider::File::Deploy

java_webapp
tomcat
end

我认为这没问题。但是,当我使用 vagrant up 运行所有进程时,它会以以下错误结束

NameError
---------
uninitialized constant Chef::DSL
Cookbook Trace:
---------------
  /tmp/vagrant-chef-1/chef-solo-1/cookbooks/application_java/providers/java_webapp.rb:20:in `class_from_file'

我的主厨版本是 11.10.2。

【问题讨论】:

  • 请格式化您的代码

标签: vagrant chef-infra chef-recipe chef-solo


【解决方案1】:

您需要使用 Chef 11+。错误:

NameError
---------
uninitialized constant Chef::DSL

来自这个line in the cookbook...

include Chef::DSL::IncludeRecipe

Chef::DSL 类在早期版本的 Chef 中不存在。如果您使用的是 Vagrant,听起来您可能使用的是在旧版本中预装了 Chef 的 Vagrant 盒子。我建议查看 Chef 的“Bento”项目,该项目具有较新的未安装 Chef 的基本框,您可以将其与“vagrant-omnibus”插件一起使用,以通过 Chef 的综合包获取您想要使用的 Chef 版本。

【讨论】:

    猜你喜欢
    • 2015-04-14
    • 2014-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-02-25
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 2017-11-22
    相关资源
    最近更新 更多