错误的参数类型String(期望的数组)

时间:2012-04-14 08:01:14

标签: ruby sinatra jekyll jekyll-extensions

我正在尝试在我的新Macbook上使用Octopress(Jekyll上的博客引擎),当我运行bundle exec jekyll --server时出现此错误:

(缩短路径)

/path/to/markdown.rb:118:in `to_html': wrong argument type String (expected Array) (TypeError)
from /path/to/markdown.rb:118:in `convert'
...

(完整路径)

/usr/local/rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/converters/markdown.rb:118:in `to_html': wrong argument type String (expected Array) (TypeError)
from /usr/local/rvm/gems/ruby-1.9.2-p290/gems/jekyll-0.11.0/lib/jekyll/converters/markdown.rb:118:in `convert'
...

看看第118行,我看到了:

RDiscount.new(content, *@rdiscount_extensions).to_html

如果我用“hello”之类的字符串替换此行,服务器就可以正常启动了。但是,如果我用RDiscount.new("hello").to_html之类的东西替换它,我会得到同样的错误。但是,启动irb并运行RDiscount.new("hello").to_html可以正常工作。

任何想法有什么不对?我能够在我拥有的另一台计算机上启动服务器,但我不知道如何弄清楚这两台计算机正在做什么之间的区别(某个库的某个版本不同?)。

3 个答案:

答案 0 :(得分:3)

只是一个想法,但你有没有尝试更新你的gemset? jekyll的最新版本是0.11.2,它默认使用maruku而不是RDiscount。

https://github.com/mojombo/jekyll/wiki/Install

答案 1 :(得分:1)

我要做的第一件事是检查所有版本。 ruby -v,gem -v,gem list -d sinatra,gem list -d octopress。等等,寻找差异。

答案 2 :(得分:0)

我也遇到了这个错误。我通过创建一个新的RVM gemset并重新运行bundle install来解决它。

另见https://github.com/rtomayko/rdiscount/issues/66

$ rvm gemset create gaga
'gaga' gemset created (/Users/chaffee/.rvm/gems/ruby-1.9.3-p125@gaga).
$ rvm use @gaga
Using /Users/chaffee/.rvm/gems/ruby-1.9.3-p125 with gemset gaga
$ bundle install
...
Installing rdiscount (1.6.8) with native extensions 
...
$ irb
>> require 'rdiscount'
=> true
>> RDiscount.new("hello").to_html
=> "<p>hello</p>\n"