保存和更新用户/首选项的Ruby命令行程序
我正在构建一个应用程序,它接受stdin来保存用户及其首选项。我应该将stdin写入文本文件并将用户输入保存在那里吗 命令行.rb保存和更新用户/首选项的Ruby命令行程序,ruby,file,parsing,command-line,stdin,Ruby,File,Parsing,Command Line,Stdin,我正在构建一个应用程序,它接受stdin来保存用户及其首选项。我应该将stdin写入文本文件并将用户输入保存在那里吗 命令行.rb class CommandLine def initialize(filename) @file = File.open(filename, 'w') end def add_user(input) @file = File.open('new_accounts.txt', 'r+') @file.wri
class CommandLine
def initialize(filename)
@file = File.open(filename, 'w')
end
def add_user(input)
@file = File.open('new_accounts.txt', 'r+')
@file.write(input)
puts input
end
def run
puts "Welcome to the Command Line Client!"
command = ''
while command != 'quit'
printf "enter command: "
input = gets.chomp
parts = input.split
command = parts[0]
case command
when 'quit' then puts 'Goodbye!'
when '-a' then add_user(parts[1..-1].join(" "))
else
puts 'Invalid command #{command}, please try again.'
end
end
end
end
a = CommandLine.new('new_accounts.txt')
a.run
假设我希望用户在命令行中输入“-a tommy like apples”,我希望它输出:
tommy likes apples
同一用户tommy也可以输入“-tommy喜欢橘子”,然后更新他以前的偏好:
tommy likes oranges
感谢您的帮助/指导,谢谢 如果您正在做一些简单的事情,我认为使用文本文件没有问题。备选方案很多,没有更多的细节,我恐怕不能提出一个好的建议
def add_user(input)
File.open('new_accounts.txt', 'w') {|file|
file.write(input)
}
puts input
end
仅供参考:这将使您的文本文件得以更新。:-)
编辑:更改了“添加用户”方法。您也在寻找读取文件的示例吗?您可以将信息保存到文本文件中,但数据的存储方式很重要。不要将其保存在CSV或每个用户的一行中。相反,使用Ruby的YAML或JSON类以更通用的格式编写数据,这种格式易于解析和重用。实际上,我会使用某种数据库,这样就可以创建/读取/更新/删除用户信息,而无需每次完全读取或覆盖用户文件。以SQLite为起点。为什么在方法中使用
@
实例变量?为什么不使用File.open
和一个块,这是惯用的Ruby,因此文件会自动关闭?当文件时,为什么要使用r+
权限写入文件。写入或文件。最好使用w
模式打开?如果同一用户的信息不止一次出现会发生什么?我只是在OP的代码中添加了一些内容。我会更新。好的一点,不止一次,我应该在回答之前和OP核实更多。我会尝试使用Sequel;这个问题要求简单,因此我认为对于这个命令行应用程序来说,使用DB可能有点过头了。谢谢大家的支持,我会在提问时更新问题的。