【发布时间】:2012-02-10 09:09:13
【问题描述】:
为了为 Omniauth 生成模拟,我将此方法添加到 config/environments/development.rb
def provides_mocks_for(*providers)
providers.each do |provider|
class_eval %Q{
OmniAuth.config.add_mock(provider, {
:uid => '123456',
:provider => provider,
:nickname => 'nickname',
:info => {
'email' => "#{provider}@webs.com",
'name' => 'full_name_' + provider
}
})
}
end
end
然后我在同一个文件中调用:
provides_mocks_for :facebook, :twitter, :github, :meetup
但我明白了:
3.1.3/lib/active_support/core_ext/kernel/singleton_class.rb:11:in `class_eval': can't create instance of singleton class (TypeError)
【问题讨论】:
-
我不是 ruby 元编程方面的专家,但也许你想要
instance_eval? -
你为什么要使用
*_eval?只需在没有 eval 的情况下调用您的方法。您当前的代码甚至看起来像这样。 -
@Sergio 我得到
instance_eval: can't convert Symbol into String (TypeError) -
@HolgerJust 你摇滚!您可以将此添加为答案以便我接受吗?
标签: ruby-on-rails ruby instance-eval class-eval