我需要指向一个可执行路径,我尝试在IRB中使用它:
%x( which wkhtmltopdf )
#"/home/james/.rbenv/versions/2.2.2/bin/wkhtmltopdf\n"
但是当我在命令行输入命令时,我得到:
% which wkhtmltopdf
#/usr/local/bin/wkhtmltopdf
我想这是两个问题:
1)为什么ruby给出了不同的答案?
2)有没有办法在ruby中获得命令行答案?
答案 0 :(得分:2)
在ruby环境中,您正在Bundler的上下文中执行,它有效地覆盖路径作为从rbenv继承的登录变量。
看起来您之前已经运行过gem install wkhtmltopdf-binary
。这将覆盖您在路径上使用的所有系统安装。
查看Login Shell Blogpost了解详情。
如果您启动了一个新shell,它可能不会继承rbenv环境:
%x(bash -l which wkhtmltopdf)
或者,您可以获取路径上的所有实例,然后过滤掉结果,使其不包含rbenv。 (确切的代码未经测试)
all_binaries = %x(which -a wkhtmltopdf).split
original_binary = ""
all_binaries.each do |bin|
if not s.contains? "rbenv"
original_binary = bin
# Will break on the first instance which isn't within the rbenv.
break
end
end
答案 1 :(得分:0)
我成功解决了2)
`which wkhtmltopdf`
#"/usr/local/bin/wkhtmltopdf\n"