Ruby on rails Ruby和Sinatra:这个额外的字符串来自哪里?如何消除它?

Ruby on rails Ruby和Sinatra:这个额外的字符串来自哪里?如何消除它?,ruby-on-rails,ruby,sinatra,Ruby On Rails,Ruby,Sinatra,“routes.rb”中的部分代码 在“PkiSupport.rb”中 在“下载_csr.erb”中 谢谢。最有可能的是,您的罪魁祸首代码是: text = `more #{csr_file}` 该代码派生并运行标准Unixmore程序。一些版本的more将检测它们是否从另一个程序运行,并以稍微不同的方式输出内容。这就是你在这里看到的 最快的解决办法是将该行更改为 text = `cat #{csr_file}` cat不像more那样聪明,只会给你文件的内容 这就是说,Ruby程序没有理由

“routes.rb”中的部分代码

在“PkiSupport.rb”中

在“下载_csr.erb”中


谢谢。

最有可能的是,您的罪魁祸首代码是:

text = `more #{csr_file}`
该代码派生并运行标准Unix
more
程序。一些版本的
more
将检测它们是否从另一个程序运行,并以稍微不同的方式输出内容。这就是你在这里看到的

最快的解决办法是将该行更改为

text = `cat #{csr_file}`
cat
不像
more
那样聪明,只会给你文件的内容

这就是说,Ruby程序没有理由只需要运行一个单独的程序来读取文件的内容——Ruby支持直接读取文件。因此,最好的解决办法是将该行更改为:

text = File.read(csr_file)

<>这会更快更便携。

你认为字符串的哪个部分是额外的?可能无关,但是…您使用
more{file}
的具体原因是什么?
cat{file}
不是更好吗?更好的是,
File.read(File)
?另外-为什么不在将字符串转储到网页之前尝试记录字符串以查看它们是什么,以便准确地查看它们在每个步骤中是什么?使用
read
“slurping”数据时要非常小心。试图读取比可用内存大的文件将使代码和机器崩溃。非常快,可以完全避免这个问题。它在使用“File.read”时工作,谢谢。我认为缓冲区溢出在这里不应该是一个大问题,因为它是一个标准的csr文件。
      ::::::::::::::
/etc/pki/subordinate_ca.csr
::::::::::::::
-----BEGIN CERTIFICATE REQUEST-----
MIIFATCCAukCAQAwaDETMBEGCgmSJomT8ixkARkWA2NvbTETMBEGCgmSJomT8ixk
ARkWA3h5ejEQMA4GA1UECgwHWFlaIEluYzESMBAGA1UECwwJTWFya2V0aW5nMRYw
FAYDVQQDDA0xMC4xMC4xMzAuMTU4MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIIC
CgKCAgEAruWYRn7mjZkHeD+PPLpMSBRoYnLKNvYMte9XneFDh1TItLolYhM4bmWX
gewKOO9+kNY21CoVu1jYZ3q9WitgJlS3tMHPhc6IjuY9DfQ58aeJaZHO8+ISE3Op
l6xNcaxOeHXMlVgdeX4ouyzB2ykJVhu1KtE+XTKilUu6nIrH6ETHrxelBs36Hu1q
...
text = `more #{csr_file}`
text = `cat #{csr_file}`
text = File.read(csr_file)