Данные генерируются следующим образом:
def checkConfigurationsFile
if File.exist?("./prefs/settings.conf") == true
configFile = File.read("./prefs/settings.conf")
options = JSON.parse(configFile)
configData = {:multithreading => options['multithreading'],
:systemCores => options['systemCores']}
mainmenu()
elsif File.exist?("./prefs/settings.conf") == false
configData = {:multithreading => false,
:systemCores => 1}
configFile = File.open("./prefs/settings.conf","w")
configFile.write(JSON.pretty_generate(configData))
configFile.close
checkConfigurationsFile()
else
puts "Something went terribly wrong!"
end
end
Это меню настроек:
def openPreferences
puts <<-PREFERENCES
####################################################
#| |#
#| Preferences |#
#| ------------------ |#
#| 1. Using Multithreading? (Currently #{configData[multithreading]}) |#
#| 2. Adjust Multithreading (Currently #{configData[systemCores]} are used)|#
#| |#
####################################################
PREFERENCES
print "Enter a number to change settings: "
choice = gets.i
if blablabla
...
Если пользователь решает изменить свои конфигурации, он должен уметь это делать. Но похоже, что я не смог использовать данные, сгенерированные в методе checkConfigurationsFile
, потому что они являются частными (и нет смысла передавать их через аргументы по всей программе).
Выдает это сообщение об ошибке:
Traceback (most recent call last):
3: from dbaser.rb:214:in `<main>'
2: from dbaser.rb:10:in `checkConfigurationsFile'
1: from dbaser.rb:54:in `mainmenu'
dbaser.rb:205:in `openPreferences': undefined local variable or method `configData' for main:Object (NameError)