ruby-on-rails - 如何从 rubygem 命令行工具调用 shell 文件
问题描述
我有一个需要运行 shell 脚本的命令。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)
解决方案
用于__dir__
获取 Ruby 文件的目录。从文档:
返回调用此方法的文件目录的规范化绝对路径。这意味着路径中的符号链接已解决。如果
__FILE__
为 nil,则返回 nil。返回值等于File.dirname(File.realpath(__FILE__))
因此,在您的示例中,您可能会执行以下操作:
script = File.join(__dir__, '..', 'create.sh')
exit_code = system("sh #{script")
您还可以使用以下命令设置 cwd(当前工作目录)system
:
system("create.sh", chdir: __dir__)
或者:
Dir.chdir(__dir__) { system('create.sh') }
推荐阅读
- pycharm - 如何在 pop os 中删除 pychram
- python - 展开数据集中的值
- c# - 从数据库中获取字符串并将其放入变量中,该变量包含 2 个额外的 \\
- powershell - Powershell,csv匹配一行和一列修改另一列
- c# - 在以下情况下使用指令和 SQLite 有什么问题?我得到了 ObjectDisposedException,但就在这里?
- python - 将数据框/系列拆分为每个可能的块
- postgresql - 根据存在性从不同的表中动态选择字段
- c# - 在重复操作上应用模式
- python - 在打印语句中使用已经随机选择的数字
- node.js - 为什么这反应js文件上传器不起作用?