gpt4 book ai didi

ruby - 如何让 Aruba 使用不同的 ENV ["HOME"]?

转载 作者:数据小太阳 更新时间:2023-10-29 08:50:13 24 4
gpt4 key购买 nike

来自 the docs :

Per default Aruba will create a directory tmp/aruba where it performs its file operations.

但是,我的应用程序使用 ENV["HOME"] 来创建和读取文件 (~/.foorc),所以我需要 Aruba 使用假的 环境[“家”]

我是否需要在某些支持文件中设置它,或者是否有办法告诉 Aruba 其 tmp/aruba 用于 ENV["HOME"] 中的文件>?

这是我正在测试的代码的摘录(显然,我正在更高级别上使用 Cucumber/Aruba 对此进行测试,但 ENV["HOME"] 的使用在这里很重要。):

def initialize config_path = ""
if config_path.empty?
@config_path = File.join ENV["HOME"], ".todotxt.cfg"
else
@config_path = config_path
end

if file_exists?
super @config_path
validate
end
end

def file_exists?
File.exists? @config_path
end

#....
ask_to_create unless @config.file_exists?
#...

规范:

Scenario: todotxt
Given an empty installation
When I run `todotxt`
Then it should pass with:
"""
Should I create a sample config file? [Y/n]
"""

最佳答案

研究 Aruba 本身的实现,我可以制作非常相似的东西:

文件 features/support/aruba.rb 由 Cucumber 自动加载并实现 Around Hook :

# Temporarily enforce an isolated, fake, homedir.
around do |scenario, block|
@__aruba_original_home = ENV["HOME"]
ENV["HOME"] = File.expand_path(File.join("tmp", "aruba"))
block.call
ENV["HOME"] = @__aruba_original_home
end

从现在开始,tmp/aruba 目录用作 $HOME。

请注意,在 aruba 中,这个临时路径是可配置的,上面的代码没有考虑到这一点。当 tmp 路径配置在别处时它会中断。

关于ruby - 如何让 Aruba 使用不同的 ENV ["HOME"]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14478406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com