คุณจะต้องจัดเก็บชื่อผู้ใช้ไว้ในไฟล์บนระบบไฟล์ในเครื่อง Ruby มีหลายวิธีในการทำเช่นนี้ และเราจะสำรวจวิธีหนึ่งในคำตอบนี้: ไฟล์ YAML
ไฟล์ YAML เป็นไฟล์จัดเก็บข้อมูลที่มีโครงสร้างซึ่งสามารถจัดเก็บข้อมูลต่างๆ ได้ทุกประเภท และเป็นสถานที่ที่ดีในการจัดเก็บข้อมูลการกำหนดค่า ที่จริงแล้ว ไฟล์คอนฟิกูเรชัน YAML คือส่วนสำคัญของโปรเจ็กต์ Ruby ที่ใหญ่ที่สุดที่มีอยู่ YAML เป็นจุดเริ่มต้นที่ดีในการรองรับความต้องการในการกำหนดค่าในอนาคต นอกเหนือจากความต้องการในปัจจุบัน ซึ่งเป็นวิธีที่ดีเยี่ยมในการวางแผนการพัฒนาคุณลักษณะ
แล้วมันทำงานยังไง? มาดูความต้องการของคุณโดยใช้การกำหนดค่า YAML กัน:
require 'yaml'
config_filename = "config.yml"
config = {}
name = nil
if file_exists(config_filename)
begin
config = YAML.load_file(config_filename)
name = config["name"]
rescue ArgumentError => e
puts "Unable to parse the YAML config file."
puts "Would you like to proceed?"
proceed = gets.chomp
# Allow the user to type things like "N", "n", "No", "nay", "nyet", etc to abort
if proceed.length > 0 && proceed[0].upcase == "N"
abort "User chose not to proceed. Aborting!"
end
end
end
if name.nil? || (name.strip.length == 0)
print "Enter your name (you will only need to do this once): "
name = gets.chomp
# Store the name in the config (in memory)
config["name"] = name
# Convert config hash to a YAML config string
yaml_string = config.to_yaml
# Save the YAML config string to the config file
File.open(config_filename, "w") do |out|
YAML.dump(config, out)
end
end
แทนที่จะแสดงให้คุณเห็นขั้นต่ำเปล่าๆ เพื่อตอบสนองความต้องการของคุณ โค้ดนี้รวมการจัดการข้อผิดพลาดเล็กน้อยและการตรวจสอบความปลอดภัยง่ายๆ ในไฟล์กำหนดค่า มันอาจจะแข็งแกร่งเพียงพอให้คุณใช้งานได้ทันที
บิตแรกเพียงต้องการไลบรารีมาตรฐาน YAML สิ่งนี้ทำให้ฟังก์ชัน YAML ทำงานในโปรแกรมของคุณ หากคุณมีไฟล์ตัวโหลดหรือกลไกทั่วไปอื่นๆ เช่นนั้น เพียงวาง require 'yaml'
ไว้ตรงนั้น
หลังจากนั้น เราจะเริ่มต้นตัวแปรบางตัวที่ใช้ในกระบวนการนี้ คุณควรทราบว่า config_filename
ไม่มีข้อมูลเส้นทาง ดังนั้นจึงสามารถอ่านได้จากไดเร็กทอรีปัจจุบัน คุณอาจต้องการจัดเก็บไฟล์กำหนดค่าไว้ในตำแหน่งทั่วไป เช่น ใน ~/.my-program-name/config.yml
หรือ C:\Documents and Settings\MyUserName\Application Data\MyProgramName\
ซึ่งสามารถทำได้ค่อนข้างง่ายและยังมีความช่วยเหลืออีกมากมาย เช่น ตำแหน่งที่จะใส่ไฟล์การกำหนดค่าผู้ใช้ใน Windows และ ตำแหน่งของ ini /config ไฟล์ใน linux/unix
ต่อไป เราจะตรวจสอบว่ามีไฟล์อยู่จริงหรือไม่ และหากเป็นเช่นนั้น เราจะพยายามอ่านเนื้อหา YAML จากไฟล์นั้น เมธอด YAML.load_file()
จัดการงานหนักทั้งหมดที่นี่ ดังนั้นคุณเพียงแค่ต้องถามแฮชการกำหนดค่าที่ส่งคืนมาสำหรับคีย์ที่คุณสนใจ ซึ่งในกรณีนี้คือคีย์ "name"
หากเกิดข้อผิดพลาดขณะอ่านไฟล์ YAML แสดงว่าไฟล์อาจเสียหาย ดังนั้นเราจึงพยายามจัดการกับสิ่งนั้น ไฟล์ YAML แก้ไขได้ง่ายด้วยมือ แต่เมื่อทำเช่นนั้น อาจทำให้เกิดข้อผิดพลาดที่ทำให้การโหลดไฟล์ YAML ล้มเหลวได้อย่างง่ายดาย รหัสการจัดการข้อผิดพลาดที่นี่จะทำให้ผู้ใช้สามารถยกเลิกโปรแกรมและกลับไปแก้ไขไฟล์ YAML ได้ เพื่อไม่ให้ถูกเขียนทับ
หลังจากนั้น เราพยายามดูว่าเรามีชื่อที่ถูกต้องจากการกำหนดค่า YAML หรือไม่ และหากไม่ใช่ เราจะดำเนินการต่อและยอมรับจากผู้ใช้ เมื่อพวกเขาป้อนชื่อแล้ว เราจะเพิ่มมันลงในแฮชการกำหนดค่า แปลงแฮชเป็นสตริงที่จัดรูปแบบ YAML จากนั้นเขียนสตริงนั้นลงในไฟล์กำหนดค่า
และนั่นคือทั้งหมดที่ต้องใช้ อะไรก็ได้ที่คุณสามารถเก็บไว้ใน Ruby hash คุณก็เก็บเป็นไฟล์ YAML ได้ นั่นเป็นพลังอย่างมากในการจัดเก็บข้อมูลการกำหนดค่า และหากคุณจำเป็นต้องเพิ่มตัวเลือกการกำหนดค่าเพิ่มเติมในภายหลัง คุณจะมีคอนเทนเนอร์อเนกประสงค์ที่คุณสามารถใช้เพื่อวัตถุประสงค์นั้นได้อย่างแน่นอน
หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับ YAML คุณสามารถหาข้อมูลดีๆ ได้ที่นี่:
แม้ว่าบทความเหล่านี้จะเก่าไปบ้าง แต่ก็ยังมีความเกี่ยวข้องมากและเป็นจุดเริ่มต้นในการอ่านเพิ่มเติม สนุก!
person
Michael Gaskill
schedule
07.05.2016