Создать случайную строку и сохранить в файл - PullRequest
1 голос
/ 03 ноября 2011

Я застрял, делая такую ​​простую программу на Ruby, которая генерирует случайную строку длиной 63 символа и затем сохраняет ее в текстовом файле.На данный момент мой код:

def Password_Generator(length=63)
  chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a
  password = ''
  length.time { |i| password << chars[rand(chars.length)] }
  aFile = File.new("Generated-Password.txt", "w+")
  aFile.write(password)
  aFile.close
end

Ответы [ 2 ]

4 голосов
/ 03 ноября 2011

Прежде всего, Password_Generator - это неправильное имя метода в Ruby, поскольку константы используются для имен классов.Также разработчики Ruby предпочитают snake_case, а не camelCase.Для вашего реального вопроса (это Ruby 1.9):

def generate_password(length=63)
  chars = [*?a..?z, *?A..?Z, *0..9]
  (1..length).map{ chars.sample }.join
end

Я бы, вероятно, сделал фактическую запись в файл другим методом, разделив проблемы и все такое.

0 голосов
/ 03 ноября 2011
require 'securerandom'
def generate_password(length=63)
  # urlsafe_base64 uses lowercase, uppercase, 1-9 and _-. 
  # The latter are removed from the generated string.
  SecureRandom.urlsafe_base64(length).delete('_-')[0, length]
end

File.open('pwd.txt', 'w'){|f| f.puts generate_password}
...