【问题标题】:Problems with ruby 'unroller' gemruby 'unroller' gem 的问题
【发布时间】:2012-07-08 10:05:38
【问题描述】:

我在使用展开器时遇到问题。我已经安装了 gem 并编写了这个简单的程序来帮助专注于我遇到的问题:

#!/usr/bin/ruby

require 'rubygems'
require 'unroller'

Unroller::trace

def foo(p1, p2)
  puts p1
  puts p2
end

foo("param1", "param2")

运行程序产生:

/Library/Ruby/Gems/1.8/gems/facets-2.9.3/lib/core/facets/filetest/separator_pattern.rb:5: warning: already initialized constant SEPARATOR_PATTERN
/Library/Ruby/Gems/1.8/gems/facets-2.9.3/lib/core/facets/string/bracket.rb:3: warning: already initialized constant BRA2KET
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- facets/methodspace (LoadError)
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in `require'
from /Library/Ruby/Gems/1.8/gems/unroller-1.0.0/lib/unroller.rb:4
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:60:in `gem_original_require'
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:60:in `require'
from ./ut:4

我的 ruby​​ 版本是 ruby​​ 1.8.7(2011-12-28 补丁级别 357)。我还在我的 Windows 开发盒上安装了 ruby​​,并得到了同样的错误,并且 ruby​​ 版本是 1.9.3,所以它似乎与我正在使用的 Ruby 版本无关。

有人有什么想法吗?

提前非常感谢!

乔恩

【问题讨论】:

  • 您查看过unroller 的已知错误吗?有人举报吗?

标签: ruby rubygems gem trace require


【解决方案1】:

这是unroller gem 的错误,在此处描述:https://github.com/TylerRick/unroller/issues/1unroller 自动需要最新版本的 facets gem,而 2.9 版打破了它。 (顺便说一句,在加载依赖项时,gem 永远不应该使用 '>=',这就是为什么 '~>' 的原因。)

在需要 unroller 之前,通过使用捆绑程序和硬编码 facets gem 到特定版本在本地进行修补并不难(因此加载特定的 facets 版本而不是最新的 2.9)。

创建Gemfile:

source 'http://rubygems.org'

gem 'facets', '2.8.4' 
gem 'termios' # you're gonna need this gem too, for some reason
gem 'unroller'

运行bundle install,然后通过bundle exec ruby test.rb 运行脚本或在其中要求bundler/setup

require 'rubygems'
require 'bundler/setup'
require 'unroller'
...

更新: 或者如果您不想处理 bundler,请先试试这个,它也可以工作:

require 'rubygems'
gem 'facets', '2.8.4'
require 'unroller'
...

【讨论】:

  • 我试过了:require 'rubygems' gem 'facets', '2.8.4' require 'unroller' 但这也没有用。相反,我卸载了 facets-2.9.3,然后安装了 facets-2.8.4。这导致: /Library/Ruby/Site/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- termios (LoadError) 所以我安装了 termios 并且工作正常。在发帖之前,我到处搜索寻求一些帮助,但从未找到github.com/TylerRick/unroller/issues/1。非常感谢您的帮助!
  • 是的,我在回答中链接到了那个问题单:)。那么最好使用bundler。
  • 对于 unroller 的作者来说似乎是一个简单的解决方法。提出问题,为什么没有解决这个问题?
  • 我的想法完全正确。特别是因为构面的最后一个工作版本真的很旧。 rubygems.org/gems/facets/versions
  • 也许我们可以修复它?我将其发布到 github.com/TylerRick/unroller/issues/1。
猜你喜欢
  • 1970-01-01
  • 2013-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-11
  • 2011-08-02
相关资源
最近更新 更多