将Ruby代码转换为字符串

将Ruby代码转换为字符串,ruby,syntax-highlighting,Ruby,Syntax Highlighting,我正在重构一些我没有编写的代码,我发现一行代码如下所示(长得多,我在本例中只使用了一点): 为了增加可读性,我将其重构为 do_something = "rubyw -e \" require 'win32ole' @autoit=WIN32OLE.new('AutoItX3.Control')" system do_something 然后我想做一些修改,但是因为我正在处理的代码是字符串,所以我丢失了语法高亮显示、括号匹配以及所有这些好东西 有没有一种简单的方法可以在字符

我正在重构一些我没有编写的代码,我发现一行代码如下所示(长得多,我在本例中只使用了一点):

为了增加可读性,我将其重构为

do_something =
  "rubyw -e \"
    require 'win32ole'
    @autoit=WIN32OLE.new('AutoItX3.Control')"
system do_something
然后我想做一些修改,但是因为我正在处理的代码是字符串,所以我丢失了语法高亮显示、括号匹配以及所有这些好东西

有没有一种简单的方法可以在字符串之外编写一些代码,然后将其转换为字符串

我在网上搜索过stackoverflow,但找不到答案


有关更多信息,请查看原始代码(Watir::FileField#set,第445行)和my fork(第447-459行)。

好的,您可以将代码放入外部文件并加载该文件

或者,如果我没记错的话,Ruby文件可能包含
数据
部分:

# Sample ruby file:

puts DATA.readline()

__END__
foo bar

这应该打印“
foo bar
”。您可以将代码放在数据段中。如果运气好,编辑器仍然会为
数据段提供语法突出显示。

您可以使用以下语法:

do_something = <<SOMETHING
  rubyw -e 
  require 'win32ole'
  @autoit=WIN32OLE.new('AutoItX3.Control')
SOMETHING

Ruby2ruby听起来有点像你要问的


只是我的问题,还是你的例子有问题?>puts DATA NAME错误:未初始化常量数据来源(irb):1它对我有效…没有错误。不过我已经更新了源代码,以创建正确的输出。它被称为“heredocument”,或“herdeoc”()vim将herdeocs高亮显示为字符串。另外,如果您想要一个不带转义引号的多行字符串,%{}是一种更为鲁比的方法
do_something = <<SOMETHING
  rubyw -e 
  require 'win32ole'
  @autoit=WIN32OLE.new('AutoItX3.Control')
SOMETHING