【发布时间】:2016-12-09 05:35:39
【问题描述】:
我有一个标准系统,用于对各种数据集执行计算。很棒的是我可以将这些计算作为 Proc 传递给 perform 方法。这是我想要完成的:
class Calculator
include Sidekiq::Worker
def perform rails_model , rails_model_id
obj = Kernel.const_get( rails_model ).find( rails_model_id )
yield( obj )
end
end
Calculator.perform_asyc( "User" , 123 , { |u| u.do_something } )
这种事情是可能的还是不好的做法?我知道直接发送对象是不好的做法,所以我假设发送块也是一个坏主意?
【问题讨论】:
-
我不确定你是否可以这样做,但不要使用内核模块,你为什么不:
rails_model.constantize.find(rails_model_id)我希望传递一个块不应该是一个问题到 Sidekiq。 -
Sidekiq 在单独的机器上以单独的进程运行代码。传递块会有问题。
标签: ruby-on-rails ruby sidekiq