在Unix/Linux系统上,chmod
函数支持“符号模式”,这意味着您可以执行基本上具有权限的比特算术运算。 chmod u+x ...
是为用户添加可执行权限的符号形式。 Ruby的FileUtils
中的chmod
函数仅支持绝对位掩码作为权限,即只能执行FileUtils.chmod(0777, ...)
,但FileUtils.chmod('u+x', ...)
不起作用。在没有明确调用系统命令的情况下在Ruby中复制chmod的符号模式
我得到的一种方法是直接调用system
命令:system("chmod u+x ...")
,但我更愿意尽可能将代码保留在Ruby域中,而无需在任何地方产生shell。或者,我可以遍历File
对象,File.stat
这些对象,获取它们现有的位掩码并单独修改它们,但符号模式将支持文件glob,它更加简洁并且不易出错。
有谁知道是否有办法以更优雅的方式做到这一点?
我使用Ruby 1.8.7,所以我想这功能没有提供给我呢。 –
是否有任何特定的东西阻止您更新?使用RVM或rbenv,安装其他Ruby版本并切换到每个应用程序基础上是相当麻烦的。 –
我们目前的生产系统停留在Ubuntu Lucid上,它仍然在1.8(实际上甚至是最新版本,Oneiric,在Ruby 1.8上),Debian包装在手动升级Ruby时效果不佳。我曾考虑推动迁移到基于RVM的管理系统,但我们还没有。 –