다음 테스트 코드가 있습니다.
require "thor"
module Snap
class CLI < Thor
desc 'login', 'Login Credentials'
def login(user,pass)
@username = user
@password = pass
say @password
end
desc 'block', 'Block user'
def block(input)
say @username
end
end
end
명령 줄에 Snap login abc xyz를 입력하면 xyz로 출력을 얻습니다. 하지만 Snap block a를 입력하면. 내가 얻는 출력은 공백입니다. 즉 : 사용자 이름이나 암호에 아무것도 저장되지 않습니다.
이것이 왜이며 어떻게 해결할 수 있습니까?
문제는 프로그램이 두 번의 명령 호출 사이에 종료된다는 것입니다. 따라서 모든 상태가 손실되고 결과적으로 사용자 이름이 손실됩니다.
명령의 여러 호출에서 변수를 유지하려면 파일에 저장해야합니다. 예를 들어 사용자의 홈 디렉토리에 숨겨진 파일을 yaml 형식으로 저장할 수 있습니다.
주의 : 이렇게하면 구성 파일에 일반 텍스트로 암호가 저장됩니다!
require 'thor'
require 'yaml'
module Snap
class CLI < Thor
def initialize(*args)
super
read_config
end
desc 'login', 'Login Credentials'
def login(user, pass)
@username = user
@password = pass
say @password
write_config
end
desc 'block', 'Block user'
def block(input)
say @username
end
private
CONFIG_FILE = '~/.myprogram.conf'
def write_config
config = {}
config['username'] = @username
config['password'] = @password
File.open(CONFIG_FILE, 'w') do |f|
f.write config.to_yaml
end
end
def read_config
config = YAML.load_file(CONFIG_FILE)
@username = config['username']
@password = config['password']
end
end
end
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다