首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为多租户应用程序rails运行自定义rake任务

为多租户应用程序rails运行自定义rake任务
EN

Stack Overflow用户
提问于 2019-03-14 01:28:14
回答 1查看 439关注 0票数 1

我有一个自定义的rake任务

代码语言:javascript
复制
namespace :abc do

  desc "seeds abc to a database" do

    task seed_abc: :environment do

      Tenant.find_each do |tenant|

        puts "Running task for tenant#{tenant.name}"
        Dir[File.join(Rails.root, 'db', 'seeds', '*.rb')].sort.each do |filename|

        p "Seeding #{filename}"
        load(filename) if File.exist?(filename)
      end
    end
  end
end

当我运行rake任务时,它只在默认租户中设定了种子,但在设定种子时,我可以看到

Running task for tenant abc "Seeding /path...../path/filename.rb" "Seeding /path...../path/filename.rb" Running task for tenant xyz "Seeding /path...../path/filename.rb" "Seeding /path...../path/filename.rb" Running task for tenant 123 "Seeding /path...../path/filename.rb" "Seeding /path...../path/filename.rb"

但是当我签入控制台时,它只为默认租户设定了种子,我如何为所有tenannts设定种子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-22 03:48:46

我知道这是几个月前的事了,但我想我会对未来的人有所帮助。

对于公寓,为了确保租户在区块之后切换回公共状态,更清晰的方法是执行以下操作:

代码语言:javascript
复制
Apartment::Tenant.switch(tenant.name) do
  #Your code in this block.
end

确保它切换回来是很重要的,因为如果不这样做,您最终可能会在错误的租户上运行代码。

如果您按照上面的建议进行操作,那么租户将保持选中状态,直到您再次切换它。如果下一次切换失败,它将停留在当前租户上,并在错误的DB上执行代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55147943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档