如何通过厨师了解文件的内容



我正在尝试使用执行资源更改 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

相关内容

  • 没有找到相关文章

最新更新