I have a string in Ruby, s (say) which might have any of the standard line endings (\\n, \\r\\n, \\r). I want to convert
Since ruby 1.9 you can use String::encode with universal_newline: true to get all of your new lines into \n while keeping your encoding unchanged:
s.encode(s.encoding, universal_newline: true)
Once in a known newline state you can freely convert back to CRLF using :crlf_newline. eg: to convert a file of unknown (possibly mixed) ending to CRLF (for example), read it in binary mode, then :
s.encode(s.encoding, universal_newline: true).encode(s.encoding, crlf_newline: true)