我可以在 FileUtils.mkdir_p、Ruby、WIndows 中使用目录环境变量吗?
Can I use directory environment variables in FileUtils.mkdir_p, Ruby, WIndows?
我想制作一个简单的函数,允许我将错误日志输出到项目目录之外的某个文件中。我不希望这些随机错误日志包含在存储库的项目文件中,因此与其冒险 'forgetting' 删除它们,我宁愿将它们写在其他地方。
我想通过在目录路径中包含 %username% 通配符来使代码可用于不同的帐户。但是,FileUtils.dir_p
函数创建目录 C:/Users/%username%/
而不是预期的
def log_to_file(params)
time = Time.now.strftime('%Y-%m-%d_%H.%M.%S')
dir = "C:/Users/%username%/Documents/RailsDevLogs/#{time.to_s}.txt"
#this doesn't work
#dir = "C:/Users/majinbuu/Documents/RailsDevLogs/#{time.to_s}.txt"
#this works
begin
FileUtils.mkdir_p('C:/Users/%username%/Documents/RailsDevLogs/')
unless File.exist?('C:/Users/%username%/Documents/RailsDevLogs/')
logs = File.open(dir,'a+')
logs.write(params)
logs.close()
rescue => e
puts "dir error => #{e}"
end
end
所以我的问题是,我可以在 Ruby 文件字符串中使用通配符([编辑] 抱歉,环境变量)吗?如果可以,我该如何使用他们?
使用下面的代码获取当前用户的主目录:
home_dir = ENV["HOME"]
那么你可以这样做:
FileUtils.mkdir_p("#{home_dir}/app_name/logs")
更好的方法是允许用户通过在代码中提供配置选项来指定日志目录。最简单的选择是让用户定义一个环境变量,比如 MY_APP_LOG_DIR,然后执行:
log_dir = ENV["MY_APP_LOG_DIR"
FileUtils.mkdir_p("#{log_dir}")
在Ruby中,典型的约定是使用YAML
文件来指定配置。您可以阅读有关它们的信息。
我想制作一个简单的函数,允许我将错误日志输出到项目目录之外的某个文件中。我不希望这些随机错误日志包含在存储库的项目文件中,因此与其冒险 'forgetting' 删除它们,我宁愿将它们写在其他地方。
我想通过在目录路径中包含 %username% 通配符来使代码可用于不同的帐户。但是,FileUtils.dir_p
函数创建目录 C:/Users/%username%/
而不是预期的
def log_to_file(params)
time = Time.now.strftime('%Y-%m-%d_%H.%M.%S')
dir = "C:/Users/%username%/Documents/RailsDevLogs/#{time.to_s}.txt"
#this doesn't work
#dir = "C:/Users/majinbuu/Documents/RailsDevLogs/#{time.to_s}.txt"
#this works
begin
FileUtils.mkdir_p('C:/Users/%username%/Documents/RailsDevLogs/')
unless File.exist?('C:/Users/%username%/Documents/RailsDevLogs/')
logs = File.open(dir,'a+')
logs.write(params)
logs.close()
rescue => e
puts "dir error => #{e}"
end
end
所以我的问题是,我可以在 Ruby 文件字符串中使用通配符([编辑] 抱歉,环境变量)吗?如果可以,我该如何使用他们?
使用下面的代码获取当前用户的主目录:
home_dir = ENV["HOME"]
那么你可以这样做:
FileUtils.mkdir_p("#{home_dir}/app_name/logs")
更好的方法是允许用户通过在代码中提供配置选项来指定日志目录。最简单的选择是让用户定义一个环境变量,比如 MY_APP_LOG_DIR,然后执行:
log_dir = ENV["MY_APP_LOG_DIR"
FileUtils.mkdir_p("#{log_dir}")
在Ruby中,典型的约定是使用YAML
文件来指定配置。您可以阅读有关它们的信息。