我在使用展开器时遇到问题。我已经安装了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版本无关。
有人有什么想法吗?
非常感谢!
乔恩
答案 0 :(得分:0)
这是unroller
gem的错误,在此处描述:https://github.com/TylerRick/unroller/issues/1。 unroller
自动需要最新版本的facets
gem,版本2.9会破坏它。 (在加载依赖项时,BTW gems绝不应该使用'> =',这就是'〜>'的原因。)
在要求facets
之前使用捆绑器并将unroller
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'
...
更新:或者如果您不想处理捆绑包,请先尝试一下,它也可以运行:
require 'rubygems'
gem 'facets', '2.8.4'
require 'unroller'
...