问题标签 [ruby-block]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails-4 - 需要 rest-client 到 Chef 中的模块
我需要将 res-client 包含到我的模块中才能使用 RestClient::Resource。
我在 Chef 配方(ruby_block 资源)中使用模块中的方法。
当我的 ruby_block 资源尝试在模块中运行该方法时,它会输出此错误:
错误:无法加载此类文件--rest-client
以下是我位于库文件夹中的模块:
以下是调用模块中函数的资源:
这只是我食谱中的几个食谱之一。此配方在目标节点几乎准备好并且“捆绑安装”已在目标节点上运行后运行。
我还在目标节点中安装了rest-client。我在 ruby_block 资源之前尝试了以下每个资源:
我的问题是如何包含“rest-client”并在厨师食谱中使用它?
mysql - Chef ruby_block ShellOut mysql 结果标准输出永远为空
有下一个案例:
期望 test4 将结果作为 test3 返回
我想也许mysql不会将结果返回到stdout,然后在哪里以及如何获得结果
PS我知道我可以用来做这些事情的ruby gem mysql2,但老实说没有时间实现这样的事情只是为了得到一个简单的SQL结果,我也尝试过没有--silent和--skip的运行命令-column-names 标志,这也无济于事。
chef-infra - Chef set node attribute value from a regex matching
I am trying to set node attribute with sub string from a file, but I am not able to achieve that successfully.
Content of #{ENV['TEMP']}\fullname.txt is
And I want to assign only "King Arthur" to node attribute node.default[user_name]
This is the ruby_block I am trying
Nothing gets assigned to this node attribute.
ruby - 模块或类中的 Ruby 块
Ruby 中的块可以写在类或模块中吗?根据文档,可以从使用 yield 的方法调用块......即它也应该可以从类中的方法调用。但是对于以下代码,因为我收到以下错误:
$ ruby course1.rb Traceback(最近一次调用最后一次):2:来自 course1.rb:1:in
<main>' 1: from lesson1.rb:2:in
' course1.rb:9:in<class:Sample>': undefined method
say_hi' for M1::Sample:Class (NoMethodError)
文件名:lesson1.rb
ruby - ruby_block 厨师资源中无法逃脱美元符号
我正在编写一个运行 sql 命令的厨师食谱。
但是当我检查日志时,它并没有运行 SQL 命令。它运行,
似乎它正在尝试输入 $DATABASE 的值。我试过使用反斜杠来转义 $. 我用过双美元符号。我尝试将 SQL 放入变量中,但它仍然没有运行正确的 SQL。有没有不同的方法来逃避美元符号?
编辑:使用双反斜杠或三重反斜杠失败,
ruby - `block_given?` 是否呈现 `&block` 参数可选?
我对以下内容感到满意:
所以我学会了将块(和过程)与yield
关键字分开。
但是,我遇到了以下代码:
当我在 irb 中执行此代码时,参数&block
似乎无关紧要:
并执行以下操作:
&block
由 in 呈现为可选block_given?
:
ruby - Ruby:如何使变量在块内的方法内可见?
下面的代码给了我
NameError: undefined local variable or method `dir'
extract_snapshots方法。
该代码旨在从视频中提取快照,将它们存储在创建的临时目录中,将快照发送到服务并在之后删除目录。
我认为,该dir变量应该在extract_snapshots和send_snapshots中可见,因为它处于同一级别。但这不在这些方法的范围内。是否可以在不执行以下操作的情况下使dir变量可见:
?
ruby-on-rails - Ruby 块作为用于在 public_send 中喷溅的数组元素
我正在尝试使用元编程来构建一个通用方法,其中它使用method
s 来array
操作send
对象splat
,以下是工作片段:
到目前为止它工作得很好,直到我们决定添加另一个数据类型并且它需要调用方法 on array
,例如
现在我被卡住了,因为它是一个障碍。从技术上讲,以下代码工作正常:
但是将其添加block
到数组中会引发错误
我知道我可以创建一个proc
并用 amp 调用它,&
但我希望你明白它正在失去一致性,我需要一些可以与splat
操作员一起使用的东西,如使用定义的那样#define_method
我现在没有想法,请帮助。
ruby-on-rails - Rails helper_method 可以像在相应视图中调用它一样使用 yield 吗?
我有以下手风琴生成器,当直接包含在视图中时可以正常工作:
现在我想通过以下方式实现更干净的实现:
- 移动
collapser
到匹配的控制器 - 做
generic_collapser(name, parent)
一个- 在代码库的其他部分可以更广泛地访问它
- 这个特定的折叠器可以实现为调用
generic_collapeser(name, 'accordion_id')
但是我坚持第一步,因为我无法正确处理上下文更改。首先,tag
不再可访问,但简单地分配tag = view_context.tag
似乎可以完成这项工作。但是,我没有找到转置yield
语句的方法。我尝试了以下
- 保持
tag.div(class: 'uncode_text_column') { yield }
- 利用
tag.div(class: 'uncode_text_column') { view_contex{yield} }
tag.div(class: 'uncode_text_column') { view_contex(&block) }
一起使用def collapser(name, &block)
但没有人给出预期的结果。
对好的资源的提示以更好地理解view_context
和yield
块管理也将受到欢迎,尤其是带有练习的教程。
ruby - 为什么将块参数传递给 ruby 中的函数?
我不清楚为什么在调用函数时需要传递块参数。为什么不直接作为函数参数传入,块参数会发生什么,它们是如何传递和使用的?