我正在使用 jekyll 构建一个博客,并使用 gh-pages 将其托管在 github 上。我的项目的根可以在下面看到:
??? LICENSE
??? README.md
??? _config.yml
??? _img
? ??? 2016-09-09\ 14.48.20.png
? ??? 2016-09-09\ 15.25.09.png
.
.
.
??? _posts
? ??? 2016-09-08-seven-weeks-before-applying-to-devops-job.markdown
? ??? 2016-09-09-an-hour-with-ansible.md
.
.
.
??? _site
? ??? 2016
? ? ??? 09
? ? ??? 08
? ? ? ??? seven-weeks-before-applying-to-devops-job.html
? ? ??? 09
? ? ??? an-hour-with-ansible.html
? ??? LICENSE
? ??? README.md
? ??? about
? ? ??? index.html
? ??? css
? …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 minitest 访问控制器内的实例变量。
例如:
microposts_controller.rb:
def destroy
p "*"*40
p @cats = 42
end
Run Code Online (Sandbox Code Playgroud)
@cats我将如何测试with inside with minitest的值microposts_controller_test.rb?
我知道我可以delete从浏览器提交请求并检查我的服务器日志并找到:
"****************************************"
42
Run Code Online (Sandbox Code Playgroud)
我在另一个答案中读到,我可以访问assigns包含所有实例变量的哈希,但它不起作用。我也尝试过查看该controller物体的内部。如下图所示:
microposts_controller.rb:
test "@cats should exist in destroy method" do
delete micropost_path(@micropost)
p controller.instance_variables
p assigns[:cats]
end
Run Code Online (Sandbox Code Playgroud)
输出:
[:@_action_has_layout, :@_routes, :@_request, :@_response, :@_lookup_context, :@_action_name, :@_response_body, :@marked_for_same_origin_verification, :@_config, :@_url_options]0:04
nil
Run Code Online (Sandbox Code Playgroud)
我期望看到对象@cats内部的实例变量controller。我也期待看到42输出。
我在这里缺少什么?
给出以下代码:
require 'pry-byebug'
10.times.with_index do |i|
binding.pry
puts i
end
Run Code Online (Sandbox Code Playgroud)
我想i == 5在里面"循环直到破裂" pry-byebug.从运行它help break看起来你可以通过"断点#"或"行#"识别断点.它似乎也可以使用条件,但是我没有让它工作:
试图在#行上设置断点:
$ ruby foo.rb
From: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ line 5 :
1: require 'pry-byebug'
2:
3: 10.times.with_index do |i|
4: binding.pry
=> 5: puts i
6: end
[1] pry(main)> break foo.rb:5 if i == 5
Breakpoint 1: /Users/max/Dropbox/work/tmp/pry_debug/foo.rb @ 5 (Enabled) Condition: i == 5
2:
3: 10.times.with_index do |i|
4: binding.pry
=> 5: puts i
6: end
[2] pry(main)> continue …Run Code Online (Sandbox Code Playgroud) 我正在阅读另一个问题,其答案提到使用Module#const_get实例方法在模块中查找类.例如:
module M
class C
end
end
p M.const_get 'C'
#=> M::C
Run Code Online (Sandbox Code Playgroud)
我很好奇这个const_get方法所以我用过ri并发现:
ri Module#const_get
...
This method will recursively look up constant names if a namespaced
class name is provided. For example:
module Foo; class Bar; end end
Object.const_get 'Foo::Bar'
...
Run Code Online (Sandbox Code Playgroud)
这似乎Object::const_get是一种单身方法.在我们的上下文中使用它:
module M
class C
end
end
p Object.const_get 'M::C'
#=> M::C
Run Code Online (Sandbox Code Playgroud)
但是没有关于该单例方法的文档记录:
ri Object::const_get
Nothing known about Object::const_get
ri Object.const_get
Nothing known about Object.const_get
Run Code Online (Sandbox Code Playgroud)
这让我感到困惑,因为我知道一个 …
chop 切断最后一个字符并返回剩余的字符串:
irb(main):011:0> "hello world".chop
=> "hello worl"
Run Code Online (Sandbox Code Playgroud)
slice 可以用来切断第一个字符
irb(main):013:0> str = "hello world"
=> "hello world"
irb(main):014:0> str.slice!(0)
=> "h"
irb(main):015:0> str
=> "ello world"
Run Code Online (Sandbox Code Playgroud)
是否有一个Ruby方法切断第一个字符,但然后返回字符串的其余部分?看起来就像
irb(main):011:0> "hello world".some_method
=> "ello world"
Run Code Online (Sandbox Code Playgroud) 我正在尝试在ruby程序中使用artii制作的ascii艺术字符串.可以使用cli按预期生成字符串:
然而,当我尝试将其保存为一个字符串,或者puts,p或者print它,它不工作.我想这可能是因为斜线需要逃脱,我试图做,但它看起来我也没有正确的.我如何从cli上的工作字符串转到ruby程序中的工作字符串,该字符串将字符串打印到stdout?

banner = "
_____ _ _ _ _
| __ \ | | | \ | | | |
| |__) | _| |__ _ _ | \| | ___ | |_ ___
| _ / | | | '_ \| | | | | . ` |/ _ \| __/ _ \
| | \ \ |_| | |_) | |_| | | |\ | (_) | |_ __/ …Run Code Online (Sandbox Code Playgroud) 我有以下Node.js代码和输出:
var help = `Usage: foo [options]
v<interpolate here>
Options:
-h, --help Show some help
`
process.stdout.write(help)
var packageDotJson = require('./package.json');
process.stdout.write(packageDotJson.version + "\n")
// Usage: foo [options]
//
// v<interpolate here>
//
// Options:
// -h, --help Show some help
// 1.2.0
Run Code Online (Sandbox Code Playgroud)
如何在heredoc中插值v<interpolate here>?我的目标是替换<interpolate here>为1.2.0。
我也更喜欢使用一个弯曲的heredoc。例如,现在我必须写:
if (true) {
var help = `foo bar baz
cats and dogs
`
}
Run Code Online (Sandbox Code Playgroud)
但我宁愿这样写:
if (true) {
var help = `foo bar baz
cats …Run Code Online (Sandbox Code Playgroud) 我观看了一个教程,其中作者使用IF语句和ARRAYFORMULA函数将标题行添加到数据列.链接被提供给文档; 但是,有关如何使用的示例ARRAYFORMULA请参阅此答案.
下面是一个例子:
我可以C通过将以下公式放入以下列来填充列C1:
=ARRAYFORMULA(if(row(A:A) = 1, "spent", B:B - A:A))
Run Code Online (Sandbox Code Playgroud)
我对语法感到困惑.我理解X:X引用整个X列,但我不明白它是如何用于检查我们是否A1在一个上下文中的单元格,然后用于在另一个上下文中应用质量公式.
我读到另一个答案,它展示了如何使用-F标志设置字段分隔符:
awk -F 'INFORMATION DATA ' '{print $2}' t
Run Code Online (Sandbox Code Playgroud)
现在我很好奇如何使用正则表达式作为字段分隔符。我的尝试如下所示:
$ echo "1 2 foo\n2 3 bar\n42 2 baz"
1 2 foo
2 3 bar
42 2 baz
$ echo "1 2 foo\n2 3 bar\n42 2 baz" | awk -F '\d+ \d+ ' '{ print $2 }'
# 3 blank lines
Run Code Online (Sandbox Code Playgroud)
我期望得到以下输出:
foo
bar
baz
Run Code Online (Sandbox Code Playgroud)
这是因为我的正则表达式\d+ \d+匹配“前两个数字由空格分隔,后跟空格”。但我正在打印第二条记录。如红宝石所示: