Ruby 1.9 Array.to_s si comporta diversamente?

Ho scritto una piccola applicazione rapida che prende un file di codice di base con alcune parole chiave, un file di sostituzioni per le parole chiave e genera un nuovo file con le parole chiave sostituite.

Quando stavo usando Ruby 1.8, le mie uscite sarebbero andate bene. Ora, quando si utilizza Ruby 1.9, il mio codice sostituito ha i caratteri di nuova riga al suo posto invece dei feed di riga.

Ad esempio, vedo qualcosa di simile:

["\r\nDim RunningNormal_1 As Boolean", "\r\nDim RunningNormal_2 As Boolean", "\r\nDim RunningNormal_3 As Boolean"] 

invece di:

 Dim RunningNormal_1 As Boolean Dim RunningNormal_2 As Boolean Dim RunningNormal_3 As Boolean 

io uso un hash di replacements {“KEYWORD” => [“1”, “2”, “3”]} e una matrice delle linee sostituite.

io uso questo blocco per finire la sostituzione:

 resultingLibs.each do |x| libraryString.sub!(/((.*?))/im) do |match| x.each do |individual| individual.to_s end end end #for each resulting group of the repeatable pattern, # #Write out the resulting libs to a combined string 

La mia impressione è che sto stampando la matrice invece delle stringhe all’interno dell’array. Qualsiasi suggerimento su una correzione. Quando eseguo il debug e stampo la mia stringa sostituita usando puts, l’output sembra corretto. Quando uso il metodo to_s (che è il modo in cui la mia app scrive l’output nel file di output), il mio output sembra sbagliato.

Una soluzione sarebbe carina, ma quello che voglio veramente sapere è cosa è cambiato tra Ruby 1.8 e 1.9 che causa questo comportamento. Il metodo to_s è cambiato in qualche modo in Ruby 1.9?

* Sono inesperto in Ruby

Sì, stai chiamando to_s su una serie di stringhe. In 1.8 equivale a chiamare il join , nel 1.9 equivale a chiamare inspect .

Per ottenere il comportamento desiderato sia in 1.8 che in 1.9, chiama join invece di to_s .

Per favore guarda qui , sotto Array

 Array#to_s is equivalent to Array#inspect [1,2,3,4].to_s # => "[1, 2, 3, 4]" instead of RUBY_VERSION # => "1.8.5" [1,2,3,4].to_s # => "1234"