我想在下面的代码中使用输入path:
path
File.exists?(File.expand_path(path))
我可以在path中使用环境变量吗?语法应该是什么?
zsbz8rwp1#
您可以使用标准的Ruby字符串插值(尽管有点罗嗦)
path = "log/#{ENV['RAILS_ENV']}.log" # or whatever # >> "log/development.log"
mzaanser2#
要扩展环境变量,您应该自己执行:
def expand_env(str) str.gsub(/\$([a-zA-Z_][a-zA-Z0-9_]*)|\${\g<1>}|%\g<1>%/) { ENV[$1] } end expand_env("${SHELL}:%USER%:$PAGER") # => "/bin/bash:amadan:less"
(both支持Windows风格和Unix风格,但只支持基本的替换,而不是bash所能做的任何疯狂的事情)。
6rvt4ljy3#
对于可移植性,最好使用File::join和ENV哈希:
File::join
ENV
File.exists?( File.join(ENV['MY_VAR'],'bin') )
dzhpxtsq4#
Rubocop建议对@Amadan的答案进行以下改进:
def expand_env(str) str.gsub(/\$([a-zA-Z_][a-zA-Z0-9_]*)|\${\g<1>}|%\g<1>%/) do ENV.fetch(Regexp.last_match(1), nil) end end
4条答案
按热度按时间zsbz8rwp1#
您可以使用标准的Ruby字符串插值(尽管有点罗嗦)
mzaanser2#
要扩展环境变量,您应该自己执行:
(both支持Windows风格和Unix风格,但只支持基本的替换,而不是bash所能做的任何疯狂的事情)。
6rvt4ljy3#
对于可移植性,最好使用
File::join
和ENV
哈希:dzhpxtsq4#
Rubocop建议对@Amadan的答案进行以下改进: