gpt4 book ai didi

Ruby: 'bundle exec' 为所有 shell 命令抛出错误

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:20 25 4
gpt4 key购买 nike

在我的项目中,我有一个 Gem,它的 bin 文件夹中包含一个 shell 脚本,我们将脚本称为 do_something.sh。

do_something.sh 实际上是使用 Jruby 命令执行一个 ruby​​ 脚本,这个脚本叫做 ruby​​_script.rb。

我正在尝试使用以下方法从我的项目中调用 do_something.sh:

bundle exec do_something.sh

它不断为脚本中的所有 shell 命令抛出错误。我删除了脚本的所有内容,只添加了一行“echo 'Hello'”,它仍然抛出以下错误

NoMethodError: undefined method <code>echo' for main:Object
/usr/local/rvm/gems/ruby-2.1.1@projectName/gems/gemName/bin/do_something.sh:10:in</code>'
/usr/local/rvm/gems/ruby-2.1.1@projectName/bin/do_something.sh:23:in <code>load'
/usr/local/rvm/gems/ruby-2.1.1@projectName/bin/do_something.sh:23:in</code>'

编辑#1所有文件都有执行权限。

我还尝试将 ruby​​_script.rb 放在文件是可执行文件的 bin 目录中(根据 gemspec 文件中的规则)并尝试调用

bundle exec ruby_script.rb

我收到错误消息“bundler: command not found: ruby​​_script.rb”

bundle exec ruby ruby_script.rb

我收到错误“ruby:没有这样的文件或目录 -- ruby​​_script.rb (LoadError)”

为什么会出现此错误,我该如何解决?我希望能够运行 do_something.sh 或 ruby​​_script.rb。现在,无法识别 ruby​​_script.rb 并且 do_something.sh 无法识别命令。

最佳答案

好的,终于在两天后,我能够让它发挥作用。

bundle install 安装我的 GEM 并默认为“bin”目录中的 sh 文件创建一个 ruby​​ 包装器。因此,当我使用 bundle exec 调用我的脚本时,首先调用 ruby​​ 包装器,然后它使用 ruby​​“加载”函数调用我的脚本。这个加载函数需要一个 ruby​​ 文件,这就是为什么我在文件中的所有 shell 脚本都抛出错误,因为它们应该是 ruby​​。

解决方法是在“捆绑安装”之前使用以下命令安装我的 gem:

gem install --no-wrapper my-gem

显然这个命令禁用了创建 ruby​​ 包装器,我终于能够使用 bundle execute do_something.sh 调用脚本

关于Ruby: 'bundle exec' 为所有 shell 命令抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39073183/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com