如何从rubygem命令行工具调用shell文件

时间:2019-07-01 11:18:38

标签: ruby-on-rails ruby shell command-line rubygems

我有一个需要运行shell脚本的命令。外壳文件位于gem根文件夹中。当我执行完整路径时,一切正常,但无法获取根路径。

project_creator.rb开始运行脚本

我用来测试

system("sh /Users/user_name/folder/gem-project/lib/gem/create.sh" + param)

尝试过:

system("sh ../lib/gem/create.sh" + param)

enter image description here

1 个答案:

答案 0 :(得分:1)

使用__dir__获取Ruby文件的目录。来自docs

  

返回文件目录的规范化绝对路径   从中调用此方法。这意味着路径中的符号链接是   解决。如果__FILE__为nil,则返回nil。返回值等于   到File.dirname(File.realpath(__FILE__))

因此,在您的示例中,您可能会执行以下操作:

script = File.join(__dir__, '..', 'create.sh')
exit_code = system("sh #{script")

您还可以使用system设置cwd(当前工作目录):

system("create.sh", chdir: __dir__)

或者:

Dir.chdir(__dir__) { system('create.sh') }