我想做这样的事情:
some_method.should_raise <any kind of exception, I don't care>
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
some_method.should_raise exception
Run Code Online (Sandbox Code Playgroud)
......不起作用.
我们最近在工作中决定采用红宝石风格指南.其中一条规则是任何行都不应超过80个字符.由于这是一个Rails项目,我们经常会有一些更长的字符串 - 即" 用户X想要向您发送有关Thing Y的消息 ",这并不总是符合80个字符的样式限制.
我知道有三种方法可以让长字符串跨越多行:
然而,所有这些情况最终都需要更多的计算周期,这看起来很愚蠢.字符串连接显然,但是HEREDOC,%Q我必须通过类似的方式删除换行符.gsub(/\n$/, '').
有没有纯语法方法来做到这一点,这相当于只需要将整个字符串放在一行上?显然,目标是不要花费任何额外的周期,因为我希望我的代码更具可读性.(是的,我意识到你必须做出很多权衡......但是对于字符串长度来说,这看起来很愚蠢.)
更新:反斜杠不是我想要的,因为你会丢失缩进,这实际上会影响样式/可读性.
例:
if foo
string = "this is a \
string that spans lines"
end
Run Code Online (Sandbox Code Playgroud)
我发现上面有点难以阅读.
编辑:我在下面添加了一个答案; 三年后,我们现在有了波浪形的heredoc.
我希望得到一个迭代Ruby Hash的特定输出.
这是我想迭代的哈希:
hash = {
1 => ['a', 'b'],
2 => ['c'],
3 => ['d', 'e', 'f', 'g'],
4 => ['h']
}
Run Code Online (Sandbox Code Playgroud)
这是我想得到的输出:
1-----
a
b
2-----
c
3-----
d
e
f
g
4-----
h
Run Code Online (Sandbox Code Playgroud)
在Ruby中,如何使用Hash获得这样的输出?
我能够传递如下参数:
desc "Testing args"
task: :hello, :user, :message do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #{args[:user]}. #{:message}"
end
Run Code Online (Sandbox Code Playgroud)
我还能够为Rails应用程序加载当前环境
desc "Testing environment"
task: :hello => :environment do
puts "Hello #{User.first.name}."
end
Run Code Online (Sandbox Code Playgroud)
我想做的是能够拥有变量和环境
desc "Testing environment and variables"
task: :hello => :environment, :message do |t, args|
args.with_defaults(:message => "Thanks for logging on")
puts "Hello #{User.first.name}. #{:message}"
end
Run Code Online (Sandbox Code Playgroud)
但这不是一个有效的任务调用.有谁知道我怎么能做到这一点?
我有一个看起来像这样的哈希:
params = { :irrelevant => "A String",
:choice1 => "Oh look, another one",
:choice2 => "Even more strings",
:choice3 => "But wait",
:irrelevant2 => "The last string" }
Run Code Online (Sandbox Code Playgroud)
我想要一种简单的方法来拒绝所有不是选择+ int的键.它可以是choice1,或者choice1到choice10.它有所不同.
如何仅使用单词选择和后面的一个或多个数字来单独输出键?
奖金:
将哈希值转换为带有制表符(\ t)作为分隔符的字符串.我这样做了,但需要几行代码.通常,大师级的Rubician可以在一个左右的行中完成.
我尝试使用,gem install pg但它似乎没有用.
gem install pg 给出了这个错误
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing pg:
ERROR: Failed to build gem native extension.
C:/Ruby/bin/ruby.exe extconf.rb
checking for pg_config... no
No pg_config... trying anyway. If building fails, please try again with
--with-pg-config=/path/to/pg_config
checking for libpq-fe.h... no
Can't find the 'libpq-fe.h header
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. …Run Code Online (Sandbox Code Playgroud) 是否有单行函数调用退出程序并显示消息?我在Perl中知道它很简单:
die("Message goes here")
Run Code Online (Sandbox Code Playgroud)
我厌倦了打字:
puts "Message goes here"
exit
Run Code Online (Sandbox Code Playgroud) 是否有内置的方法将Ruby中的整数转换为十六进制等效?
与之相反的是String#to_i:
"0A".to_i(16) #=>10
Run Code Online (Sandbox Code Playgroud)
或许像:
"0A".hex #=>10
Run Code Online (Sandbox Code Playgroud)
我知道如何自己动手,但使用内置的Ruby函数效率可能更高.
我需要知道Rails中过滤器中的当前路由.我该怎么知道它是什么?
我正在做REST资源,并且看不到命名路由.
你见过像这样声明的函数吗?
def foo a, **b
...
end
Run Code Online (Sandbox Code Playgroud)
我知道单个*是splat运算符.什么**意思?