RVM和具有可执行文件的gem的问题

时间:2011-01-12 21:19:43

标签: ruby ubuntu rubygems rvm

我最近在Ubuntu上使用RVM。

似乎一切都在游动......除了一件事。我正在开发一个我的宝石,它有一个放在自己的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设置,我的宝石在那里工作正常,所以我认为这可能与Ubuntu有关吗?

2 个答案:

答案 0 :(得分:1)

使用:

rvm 1.9.2 gem install mygem

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

尝试:

rvm 1.9.2
gem install mygem

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

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

答案 1 :(得分:0)

export RUBYOPT=rubygems会有帮助吗?