我将JRuby嵌入到Java中,因为我需要使用Java字符串作为参数来调用一些Ruby方法。问题是,我像这样调用这些方法:
String text = ""; // this can span over multiple lines, and will contain ruby code
Ruby ruby = Ruby.newInstance();
RubyRuntimeAdapter adapter = JavaEmbedUtils.newRuntimeAdapter();
String rubyCode = "require \"myscript\"
首先,我对Ruby还是个新手,尽管我有很强的Java背景(在这里是无能为力的:)。我创建了我的第一个Rails应用程序,并且我正在使用FactoryGirl。我遇到了一些奇怪的事情(对我来说),我不明白为什么它会这样。
在工厂中使用sprintf (参见最后一个测试)会引发以下错误:
Failures:
1) Test raises an ArgumentError
Failure/Error: sprintf('Product %05d', n)
ArgumentError:
wrong number of arguments (3 fo
在控制台中:
class Logger
end
l = Logger.new
抛出错误:ArgumentError: wrong number of arguments (0 for 1) from /home/zzz/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/logger.rb:268:in 'initialize'
为什么要在/home/zzz/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/logger.rb中使用记录器
作者试图展示attr_writer方法的简化实现。
#!/usr/bin/env ruby
def make_me_a_setter(thename)
eval <<-SETTERDONE # <----- Here
def #{thename}(myarg)
@#{thename} = myarg
end
SETTERDONE
end
class Example
make_me_a_setter :symboll
make_me_a_setter "stringg"
我试图在文本编辑器上将ruby源代码编写为字符串(作为真正Ruby代码的一部分),并为Ruby代码突出显示语法,但希望Ruby语法高亮显示处理字符串中的代码。使用双引号或单引号、百分比表示法、此文文档都会使文本编辑器认识到它是一个字符串,因此整个代码块以单一颜色作为字符串进行着色。
<<_
class Foo
def bar
# blah blah
end
end
_
是否有办法让编辑器上的Ruby语法突出显示忽略字符串的边框,从而将其内容突出显示为Ruby代码?
编辑
Stefan注意到Atom、崇高文本和RubyMine的一个很棒的特性
如果在内部ruby块中抛出异常,我感兴趣的是同时从外部块和内部块中分离出来。代码可能如下所示:
catch "ExitBlock" do
foo.each_with_index do |el, idx|
bar = ... // do more stuff,
bar.each_with_index do |el1, idx1|
if some_bad_stuff
throw "ExitBlock"
end
end
end
尝试在Ruby中格式化多行字符串
heredoc和%q{ }有一个问题,它们包含用于格式化代码的空格。
s = %q{Foo
Bar
Baz}
puts s
错误地输出以下内容:
Foo
Bar
Baz
下面的代码行得通,但对于\字符来说有点难看。
s = "Foo\n" \
" Bar\n" \
" Baz"
puts s
以下代码在python中有效:
s = ("Foo\n"
" Bar\n"
在ruby on rails中,是否可以将多个救援语句合并为一个。
begin
//do something
rescue ArgumentError => e
e.message
rescue NameError => e
e.message
rescue StandardError => e
e.message
end
组合成类似下面的内容
rescue ArgumentError, NameError, StandardError => e
e.message