我可以在 rails 服务中 运行 Kiba 工作吗?
can I run Kiba job inside rails service?
Iam 运行 来自控制器内部调用的 rails 服务的 kiba 作业。
这是当前代码。
class KibaRunner
attr_reader :job,:logger
def initialize(job)
@job = job
@logger = Rails.logger
end
def run
logger.info "Running job"
Kiba.run(kiba_job)
true
rescue => ex
logger.warn ex
false
end
def kiba_job
Kiba.parse do
source job.source.class_name, job.source.config
destination job.destination.class_name, job.destination.config
end
end
end
这是我得到的
NoMethodError: undefined method `job' for #<Kiba::Context:0x00555bcd400e38>
Kiba 作者在这里!快速回答 - 稍长的堆栈跟踪和更多的行和错误编号会有所帮助,但我怀疑这是因为 Kiba.parse
评估系统无法访问顶级 class 方法。
我建议您将 job
作为方法参数传递,以确保它在 parse
调用中可见:
def kiba_job(job)
Kiba.parse do
source job.source.class_name, job.source.config
destination job.destination.class_name, job.destination.config
end
end
然后更新您的服务调用以使用此:
kiba_job(job)
为清楚起见,我还建议您将 job
重命名为 job_config
。
请注意,如果您的作业需要一些时间,最好从后台作业服务 运行 它而不是直接在控制器调用中 运行ning。您可以查看 this page 以获取有关如何处理此问题的一些建议。
希望这对您有所帮助,如果解决了问题请告诉我!
Iam 运行 来自控制器内部调用的 rails 服务的 kiba 作业。 这是当前代码。
class KibaRunner
attr_reader :job,:logger
def initialize(job)
@job = job
@logger = Rails.logger
end
def run
logger.info "Running job"
Kiba.run(kiba_job)
true
rescue => ex
logger.warn ex
false
end
def kiba_job
Kiba.parse do
source job.source.class_name, job.source.config
destination job.destination.class_name, job.destination.config
end
end
end
这是我得到的
NoMethodError: undefined method `job' for #<Kiba::Context:0x00555bcd400e38>
Kiba 作者在这里!快速回答 - 稍长的堆栈跟踪和更多的行和错误编号会有所帮助,但我怀疑这是因为 Kiba.parse
评估系统无法访问顶级 class 方法。
我建议您将 job
作为方法参数传递,以确保它在 parse
调用中可见:
def kiba_job(job)
Kiba.parse do
source job.source.class_name, job.source.config
destination job.destination.class_name, job.destination.config
end
end
然后更新您的服务调用以使用此:
kiba_job(job)
为清楚起见,我还建议您将 job
重命名为 job_config
。
请注意,如果您的作业需要一些时间,最好从后台作业服务 运行 它而不是直接在控制器调用中 运行ning。您可以查看 this page 以获取有关如何处理此问题的一些建议。
希望这对您有所帮助,如果解决了问题请告诉我!