执行bundle exec rake db:migrate
/usr/lib/ruby/gems/1.8/gems/ancestry-2.1.0/lib/ancestry/instance_methods.rb:77: syntax error, unexpected ':', expecting ')'
self.class.where(id: (ancestor_ids + ancestor_ids_...
^
/usr/lib/ruby/gems/1.8/gems/ancestry-2.1.0/lib/ancestry/instance_methods.rb:77: syntax error, unexpected ')', expecting kEND
..._ids + ancestor_ids_was).uniq).each do |ancestor|
instance_methods中的实际代码是
def touch_ancestors_callback
# Skip this if callbacks are disabled
unless ancestry_callbacks_disabled?
# Only touch if the option is enabled
if self.ancestry_base_class.touch_ancestors
# Touch each of the old *and* new ancestors
self.class.where(id: (ancestor_ids + ancestor_ids_was).uniq).each do |ancestor|
ancestor.without_ancestry_callbacks do
ancestor.touch
end
end
end
end
end
我将代码与。进行了比较 https://github.com/stefankroes/ancestry/blob/master/lib/ancestry/instance_methods.rb#L97 我不明白为什么我会收到这个错误。请帮帮我。
提前谢谢。
答案 0 :(得分:1)
这个gem使用Ruby 1.9引入的散列的新语法。但是你使用Ruby 1.8运行这段代码并不理解这种语法。
您有两种选择:
查找并使用旧版本的Gem,使用" old"句法。如果甚至存在一个版本取决于宝石的年龄。或
升级到较新的Ruby版本。
我建议升级Ruby,因为1.8已经过时多年而且不再获得安全更新(阅读:https://www.ruby-lang.org/en/news/2013/12/17/maintenance-of-1-8-7-and-1-9-2/)