gpt4 book ai didi

ruby - ruby 命令行开关 -rubygems & -r 不兼容吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:06:01 25 4
gpt4 key购买 nike

我最近将一个 ruby​​ 库转换为一个 gem,这似乎破坏了命令行的可用性

作为图书馆工作得很好

  $ ruby -r foobar -e 'p FooBar.question' # => "answer"

作为一个 gem,irb 知道如何从命令行开关中请求一个 gem

  $ irb -rubygems -r foobar
irb(main):001:0> FooBar.question # => "answer"

但对于 ruby​​ 本身来说同样失败了:

  $ ruby -rubygems -r foobar -e 'p FooBar.question'
ruby: no such file to load -- foobar (LoadError)

我现在必须这样做吗,这看起来很难看:

  ruby -rubygems -e 'require "foobar"; p FooBar.question' # => "answer"

或者有没有办法让这两个开关起作用?

注意:我知道 gem 可以为每个有用的方法添加一个 bin/program,但我不想不必要地污染命令行命名空间

最佳答案

-rubygems 其实和-r ubygems 是一样的

据我所知,它不会干扰您的搜索路径,但我认为它也不会向您的 -r 搜索路径添加任何内容。我能够做这样的事情:

ruby -rubygems -r /usr/lib/ruby/gems/myhelpfulclass-0.0.1/lib/MyHelpfulClass -e "puts MyHelpfulClass"

MyHelpfulClass.rb 存在于上面指定的 lib 目录中。

这很糟糕,但它至少证明了您可以拥有多个 -r equire 指令。

作为稍微不那么丑陋的解决方法,您可以将其他项目添加到 ruby​​ 库搜索路径(在 *nix 中以冒号分隔,在 Windows 中以分号分隔)。

export RUBYLIB=/usr/lib/ruby/gems/1.8/gems/myhelpfulclass-0.0.1/lib
ruby -rubygems -r MyHelpfulClass -e "puts MyHelpfulClass"

如果不想弄乱环境变量,可以自己在加载路径中加点东西:

ruby -I /usr/lib/ruby/gems/1.8/gems/myhelpfulclass-0.0.1/lib \
-rubygems -r MyHelpfulClass -e "puts MyHelpfulClass"

关于ruby - ruby 命令行开关 -rubygems & -r 不兼容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/124035/

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