我正在尝试编写一个LWRP,其中基于条件它将从助手库调用方法。我在让提供者读取外部方法时遇到语法问题。
供应商很直接
# providers/provider.rb require_relative '../libraries/acx_shared' include Acx action :create do Chef::Log.debug('{jefflibrary->lwrp->user} - start') if @new_resource.shared == true Acx::User::Shared.true_shared() else Acx::User::Shared.false_shared() end if @new_resource.sudo == true Chef::Log.error('I HAVE THE POWER') else Chef::Log.error('my power is weak and feeble') end if @new_resource.password == true Chef::Log.error('the secret password is 12345') else Chef::Log.error('I will never tell you the secret to the airlock') end Chef::Log.debug('{jefflibrary->lwrp->user} - end') end
以及helper库
#libraries/acx_shared.rb module Acx module User module Shared def true_shared #puts blah Chef::Log.error('I am pulling this from a library reference') end def false_shared Chef::Log.error('I am not very good at sharing') end end end end
但每当我尝试运行它时,不管设置了什么资源属性,我都会得到
NoMethodError ------------- undefined method `false_shared' for Acx::User::Shared:Module
我显然在写助手库的留档中遗漏了一些东西,但我不确定是什么。试着移动一些东西,但开始没有想法。
尝试删除include Acx
可能发生的情况是,因为您正在这样做,它实际上在Acx内部寻找另一个模块名Acx。因此,从对*共享方法的调用中删除include或Acx::。您也不能在尝试时直接从模块中调用实例变量。您需要有一个包含模块的类,然后在该类的对象上调用该方法<或者,您可以将这些方法升级为类方法(self)你可以直接给他们打电话。
类似于:
# providers/provider.rb
require_relative '../libraries/acx_shared'
action :create do
Chef::Log.debug('{jefflibrary->lwrp->user} - start')
acx = Class.new.exted(Acx::User::Shared)
if @new_resource.shared == true
acx.true_shared()
else
acx.false_shared()
end
if @new_resource.sudo == true
Chef::Log.error('I HAVE THE POWER')
else
Chef::Log.error('my power is weak and feeble')
end
if @new_resource.password == true
Chef::Log.error('the secret password is 12345')
else
Chef::Log.error('I will never tell you the secret to the airlock')
end
Chef::Log.debug('{jefflibrary->lwrp->user} - end')
end
或
#libraries/acx_shared.rb
module Acx
module User
module Shared
def self.true_shared
#puts blah
Chef::Log.error('I am pulling this from a library reference')
end
def self.false_shared
Chef::Log.error('I am not very good at sharing')
end
end
end
end
我的食谱没有编译,抛出了错误uninitialized constant Chef::Recipe::AWS。chef\u gem aws sdk安装良好,但在aws运行时仍无法编译。调用config(access\u key\u id:“key”,secret\u access\u key:“pass”)。
问题内容: 我有以前具有大量方法的类,因此我将此方法的工作细分为“辅助”方法。 这些辅助方法声明为强制执行封装- 但是我想对大型公共方法进行单元测试。是否也可以对辅助方法进行单元测试,好象其中的一个失败,而调用它的公共方法也会失败,这样我们就可以确定为什么失败了? 另外,为了使用模拟对象测试这些对象,我需要将其可见性从私有更改为受保护,这是否可取? 问题答案: 一种方法是省略测试并将其放在同一程序
英文原文: http://emberjs.com/guides/templates/writing-helpers/ 有时,你想在程序里多次使用同一段 HTML 代码。这种情况下,你就可以自定义一个任何 Handlebars 模板都能调用的助手方法。 比如,你频繁地用一个拥有 class(译注:这个class为css中的class,非JavaScript中的类) 的 <span>来包裹特定的值。你
问题内容: 我遇到一个问题,即我创建的ASP.NET MVC html帮助器方法在每次调用时都不会“重新生成”。 helper方法的目的是创建要在angularjs框架中使用的Javascript对象。例如,这是一个使用helper方法的代码片段(从html页面的script标签内调用): Model是具有各种属性的类的实例,但我只希望将FirstName,LastName,ID和Role序列化为
本文向大家介绍易语言API助手使用方法,包括了易语言API助手使用方法的使用技巧和注意事项,需要的朋友参考一下 易语言API助手它的唯一功能就是方便查询API函数命令,能够自动在程序中加入指定dll命令声明的向导程序。 1、先了解一下API,Application Programming Interface,应用程序编程接口,编程人员通过这个接口,可以调用系统某些软件或者硬件的功能! 2、易语言的
我已经遵循了在PHP Laravel 5中创建自定义助手函数的最佳实践是什么? 这个问题的两个答案帮助我在laravel 5.1中创建自定义静态类。因为它是一个静态类。提前谢谢你。