Написание Unix разрывов строк в Windows с помощью JRuby - PullRequest
4 голосов
/ 09 ноября 2011

Я пишу сценарий Ruby для создания сценария оболочки Unix, но я не могу заставить JRuby писать разрывы строк Unix в Windows.

Я написал файл test.rb, который содержит:

File.open("test.sh", 'w') do |f|
  f.write("#!/bin/sh\n")
  f.write("echo hello\n")
end

Когда я выполняю его с помощью команды java -jar jruby-complete-1.6.5.jar test.rb, сгенерированный файл содержит \r\n разрывы строк вместо \n разрывы строк.

Как заставить JRuby написать текстовый файл с символами новой строки Unix?

1 Ответ

9 голосов
/ 09 ноября 2011

Мне удалось это исправить, добавив "b" к параметрам File.open

File.open("test.sh", 'wb') do |f|
  f.write("#!/bin/sh\n")
  f.write("echo hello\n")
end

Документация для IO класса говорит об этом следующее:

Mode |  Meaning
-----+--------------------------------------------------------
 "b" |  Binary file mode (may appear with
     |  any of the key letters listed above).
     |  Suppresses EOL <-> CRLF conversion on Windows. And
     |  sets external encoding to ASCII-8BIT unless explicitly
     |  specified.
-----+--------------------------------------------------------
...