我正在尝试使用执行资源更改 gem 源,但我只需要这样做一次。
remove_rubygems = 'gem sources -r http://rubygems.org/'
execute 'change sources to our gem server' do
command "#{remove_rubygems} && gem sources -a http://mygemserver"
creates "~/.gemrc"
end
所有这一切都是因为当我多次执行此资源时,.gemrc 文件看起来像它。
vagrant@leibniz-app:~$ gem source
*** CURRENT SOURCES ***
http://mygemserver/
http://mygemserver/
http://mygemserver/
http://mygemserver/
...
然后,我想要 mygemserver 在 .gemrc 文件中一次。
我该怎么做?
有没有办法在执行我的资源之前知道 .gemrc 的内容。?
不要在路径中使用~/
;这就是为什么当文件已经存在时,creates
行无法阻止execute
资源运行的原因。
execute 'change sources to our gem server' do
command "#{remove_rubygems} && gem sources -a http://mygemserver"
creates "/root/.gemrc"
end
或者,如果要检查文件是否包含特定行:
execute 'change sources to our gem server' do
command "#{remove_rubygems} && gem sources -a http://mygemserver"
not_if "grep -F -q -e http://mygemserver/ ~/.gemrc" # this uses a shell, so the
# tilde should work here.
end