Ruby写入文件异常

时间:2014-08-04 16:14:45

标签: ruby

我在使用Ruby脚本时遇到了一些麻烦,我写这篇文章是为了解压缩档案然后制作文件。

script.rb:66: syntax error, unexpected unary+, expecting '}'
...images/pages/"+ filename.to_s +".jpg', alt=''"
@fileList.each do |filename|

    File.open('templates/layouts/_partials/page-' + filename.to_s + '.jade', 'w') { |file|
        file.puts ".c-page\n"
        file.puts "  img(src='images/pages/"+ filename.to_s +".jpg', alt=''"
    }
end

如果我这样做:

File.open('templates/layouts/_partials/page-' + filename.to_s + '.jade', 'w') { |file|
                file.puts ".c-page\n"
                file.puts "  img(src='images/pages/"
                file.puts filename.to_s 
                file.puts ".jpg', alt=''"
            }

我没有得到我想要的结果,因为它每次都会打印一条新行。

2 个答案:

答案 0 :(得分:1)

试试这个

@fileList.each do |filename|

  File.open("templates/layouts/_partials/page-#{filename.to_s}.jade", 'w') do |file|
    file.puts ".c-page"
    file.puts "  img(src='images/pages/#{filename.to_s}.jpg', alt=''"
  end
end

puts添加了一个新的行字符,因此我认为不需要第一个字符串,字符串插值比使用+符号附加效果更好。我尝试并坚持的另一个注意事项是对单行使用{}语法,对多行块使用do..end。它使它更清晰,更容易阅读。

答案 1 :(得分:1)

字符串和加号之间需要空格:

pry(main)> "  img(src='images/pages/"+ filename.to_s +".jpg', alt=''"
SyntaxError: unexpected unary+, expecting end-of-input
"  img(src='images/pages/"+ filename.to_s +".jpg', alt=''"

这有效:

pry(main)> "  img(src='images/pages/" + filename.to_s + ".jpg', alt=''"
=> "  img(src='images/pages/whatever.jpg', alt=''"

或者只是使用字符串插值,正如engineermnky在评论中所建议的那样。

"string"+被视为在字符串对象上运行一元运算符+。