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

标签 ruby ubuntu rubygems rvm

我最近决定在 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 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 来为我们提供该功能。

关于ruby - RVM 和具有可执行文件的 gem 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4674186/

相关文章:

ruby - 如何使用 Nokogiri 只选择叶节点?

ruby - 如何使用 Ruby 获取 https 请求的 peer_cert?

node.js - mongodb 服务在说 serverStatus 非常慢后崩溃

python-3.x -/usr/bin/python3 和/bin/python3 有什么区别

ruby-on-rails - 分离的 gem 上的rake gems:refresh_specs错误

ruby-on-rails - 如何访问 ruby​​ 对象内数组内的哈希?

ruby-on-rails - Ruby Geocoder 如何设置最小.near距离

ruby-on-rails - 获取 Rails 中相关模型的列表

ruby-on-rails - 木材 : Command 'lumber' not found

即使需要 gem,Ruby 'uninitialized constant' 错误