Не удается сохранить файл в Ruby - PullRequest
0 голосов
/ 06 января 2012

Привет У меня есть простая форма, которая позволяет пользователю вводить имя, его пол и пароль. Я использую Digest :: MD5.hexdigest для шифрования ввода. Когда у меня есть зашифрованный ввод, например, d1c261ede46c1c66b7e873564291ebdc, я хочу иметь возможность добавить это в файл, который я уже создал. Однако все, что я пробовал, просто не работает. Может кто-нибудь, пожалуйста, помогите и спасибо заранее. Вот что у меня есть:

input = STDIN.read( ENV["CONTENT_LENGHT"] )
puts "Content-type: text/html \n\n"

require 'digest/md5'
digest = Digest::MD5.hexdigest(input)

f = File.open("register.txt", "a")
    f.write(digest)
f.close

Я тоже попробовал это без удачи:

File.open("register.txt", "a") do |f|
    f.puts(digest)
end

1 Ответ

1 голос
/ 06 января 2012

Если код дословно, то, я думаю, у вас есть опечатка в первой строке: вы имели в виду CONTENT_LENGHT или это опечатка? ENV [] вернет строку, если переменная установлена, что расстроит STDIN#read. Я получаю TypeError: can't convert String into Integer. Если предположить опечатку, то ENV[] возвращает nil, что говорит STDIN#read читать до EOF, что, как мне кажется, с консоли означает Control-Z. Это может быть причиной проблемы.

Я предлагаю вам провести расследование, изменив свой сценарий следующим образом:

read_length = ENV["CONTENT_LENGTH"].to_i # assumed typo fixed, convert to integer
puts "read length = #{read_length}"
input = STDIN.read( read_length )
puts "input = #{input}"
puts "Content-type: text/html \n\n" # this seems to serve no purpose

require 'digest/md5'
digest = Digest::MD5.hexdigest(input)
puts "digest = #{digest}"

# prefer this version: it's more idiomatically "Rubyish"
File.open("register.txt", "a") do |f|
  puts "file opened"
  f.puts(digest)
end

file_content = File.read("register.txt")
puts "done, file content = #{file_content}"

Это работает на моей машине со следующим выводом (когда CONTENT_LENGTH установлен в 12):

read length = 12
abcdefghijkl
input = abcdefghijkl
Content-type: text/html

digest = 9fc9d606912030dca86582ed62595cf7
file opened
done, file content = 6cfbc6ae37c91b4faf7310fbc2b7d5e8
e271dc47fa80ddc9e6590042ad9ed2b7
b0fb8772912c4ac0f13525409c2b224e
9fc9d606912030dca86582ed62595cf7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...