0

我在使用展开器时遇到问题。我已经安装了 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 patchlevel 357)。我还在我的 Windows 开发盒上安装了 ruby​​ 并得到了相同的错误,并且 ruby​​ 版本是 1.9.3,所以它似乎与我正在使用的 Ruby 版本无关。

有人有想法么?

首先十分感谢!

乔恩

4

1 回答 1

0

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

facets通过在需要之前使用捆绑器和硬编码 gem 到特定版本来本地修复并不难unroller(因此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.rbbundler/setup在其中运行脚本:

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

更新:或者如果您不想处理捆绑器,请先尝试一下,它也可以工作:

require 'rubygems'
gem 'facets', '2.8.4'
require 'unroller'
...
于 2012-07-09T12:21:34.157 回答