我正在开发一个开源的Rails 4项目,该项目使用PDF Tool Kit(“ pdf-forms” gem)基于存储在应用程序数据库中的信息自动填充PDF表单。PDFtk需要安装二进制文件,而实例化的PDFtk模型需要二进制文件的路径。该路径必须是动态的,因此它可以在Heroku,Mac OS X和Windows上运行。我可以使用“哪个”命令在* nix机器上找到路径。但是,Windows不使用“哪个”,而是使用“哪里”。
有没有一种方法可以检测平台是否响应命令,如果响应,然后执行命令?
我最好的尝试是使用RbConfig检测平台(请参见下文)。但是,某些Windows平台(例如Cygwin)会响应* nix命令。作为Mac用户,我对Windows的每个平台都不熟悉。
def pdftk
# Use path stored in Heroku env vars or else get path to local binaries
@pdftk ||= PdfForms.new(ENV['PDFTK_PATH'] || local_path)
end
def local_path
os = RbConfig::CONFIG['arch']
if /mswin/ =~ os
path = `where pdftk` # Get pdftk filepath, Windows equiv of *nix 'which' command
else
path = `which pdftk` # Get pdftk filepath on POSIX systems
end
path
end
stdlib mkmf模块具有一个鲜为人知的辅助函数,find_executable()可以为您提供所需的功能
require 'mkmf'
path = find_executable('cli-command')
我尚未在Windows上亲自对其进行过测试,但我认为它应该可以工作... http://ruby-doc.org/stdlib-2.3.0/libdoc/mkmf/rdoc/MakeMakefile.html#method-i- find_executable
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句