【问题标题】:Problem with RVM and gem that has an executable具有可执行文件的 RVM 和 gem 的问题
【发布时间】:2011-01-12 21:19:43
【问题描述】:

我最近尝试在 Ubuntu 上使用 RVM。

一切似乎都很顺利……除了一件事。我正在开发我的一个 gem,它有一个放在自己的 bin/ 目录中的脚本,所有的 gemspec 和东西都是由 Jeweler 生成的。

bin/mygem 文件包含以下代码:-

#!/usr/bin/env ruby
begin
  require 'mygem'
rescue LoadError
  require 'rubygems'
  require 'mygem'
end
app = MyGem::Application.new
app.run

这在 Ruby 的系统版本上运行良好。

现在...最近我已经转移到 RVM 以更好地管理我的 ruby​​ 版本,但现在我的 gem 似乎无法正常工作。

首先我这样做:-

rvm 1.9.2

然后我这样做:-

rvm 1.9.2 gem install mygem

安装良好,除了...当我尝试为 mygem 运行命令时

mygem

我只是得到以下异常:-

daniel@daniel-VirtualBox:~$ mygem 
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load -- mygem (LoadError)
    from <internal:lib/rubygems/custom_require>:29:in `require'
    from /home/daniel/.rvm/gems/ruby-1.9.2-p136/gems/mygem-0.1.4/bin/mygem:2:in `<top (required)>'
    from /home/daniel/.rvm/gems/ruby-1.9.2-p136/bin/mygem:19:in `load'
    from /home/daniel/.rvm/gems/ruby-1.9.2-p136/bin/mygem:19:in `<main>'mygem

注意:我在 MAC OSX 上有一个类似的 RVM 设置,我的 gem 在那里工作正常,所以我认为这可能与 Ubuntu 有关?

【问题讨论】:

  • 检查 rvm info 并确保所有 PATH、Ruby 和 Gem 信息都通过了健全性检查。

标签: ruby ubuntu rubygems rvm


【解决方案1】:

使用:

rvm 1.9.2 gem install mygem

与我在 RVM 中安装 gem 的方式不同。

试试:

rvm 1.9.2
gem install mygem

您可能还想尝试执行gem pristine mygem,它会告诉 Gems 删除可执行文件并为当前的 Ruby 重新编译它。

另一个想法:您之前是否使用过 Ruby 1.8+,而刚刚更改为 Ruby 1.9+?在 Ruby 1.9 中,require 在加载与调用代码相关的模块时(例如,在子目录中)的行为有所不同,因为 '.'已从搜索路径中删除。添加了require_relative 以赋予我们这种能力。

【讨论】:

  • 我认为使用这些命令的语义没有太大区别——两者都可以正常工作。但是,您对 require_relative 的建议很有效,我已经设法重新配置我的应用程序以使用它,现在它似乎在 ubuntu 上运行得更好,谢谢!
【解决方案2】:

export RUBYOPT=rubygems 有帮助吗?

【讨论】:

  • 很遗憾,恐怕没有什么不同
猜你喜欢
  • 2011-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-24
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多