当我将它添加到我的Gemfile时:
gem 'savon', '~> 2.0'
并运行bundle install
。并尝试启动rails console
我收到此错误:
app/models/user.rb:6:in `include': wrong argument type Class (expected Module) (TypeError)
from app/models/user.rb:6:in `<class:User>'
from app/models/user.rb:3:in `<top (required)>'
删除gem会消除问题,我真的不知道如何从这里解决问题。有什么建议吗?
更新(ruby版本输出):
ruby 2.0.0p481 (2014-05-08 revision 45883) [x86_64-darwin13.2.0]
更新II (相关型号位):
class User < ActiveRecord::Base
include InstanceMethodsOnActivation
include GoingPostal
include UUID
include Wizard
include PublicActivity::Common
第3行是类定义,第6行是UUID。这是uuid:
module UUID
extend ActiveSupport::Concern
def uuid
HASHIDS.encrypt(id)
end
def to_param
uuid
end
module ClassMethods
def find_by_uuid(uuid)
self.find_by_id(HASHIDS.decrypt(uuid)) unless uuid.nil?
end
def find_by_uuid!(uuid)
self.find_by_id!(HASHIDS.decrypt(uuid)) unless uuid.nil?
end
end
end
答案 0 :(得分:1)
savon gem的一个依赖是uuid gem,它提供UUID
类。
在开发模式中,应用程序代码仅按需加载,这意味着永远不会加载您的uuid文件,而UUID
是gem中的类。
在制作中,根据文件的位置以及您的急切负载设置,rails可能会尝试在应用启动时加载您的文件,但是您会因为创建一个同名的类而收到错误作为一个模块
最简单的方法是重命名模块 - 要么完全选择不同的名称,要么命名它。