3

下面的代码config/initializers/console.rb仅在我第一次执行rails consoleCLI 时存储。再次退出进入时,不显示选择信息,但加载了选择的预览租户。

if defined?(Rails::Console) || $PROGRAM_NAME.include?('spring')
  tenants = Apartment.tenant_names.sort
  default = tenants.first

  puts "Available tenants: #{tenants.join(', ')}"

  print "Select tenant (#{default}): "
  tenant = gets.strip

  Apartment::Tenant.switch! tenants.include?(tenant) ? tenant : default
end

我希望每次进入时rails console询问将加载哪些租户。

谢谢!

4

4 回答 4

4

我遇到了类似的问题。如果您使用的是公寓宝石。在您的 Rails 控制台中,您可以通过首先连接到数据库然后使用schema_search_path

e.g.
c = Company.connection
c.schema_search_path = "tenant1"

检查租户是否已切换使用ActiveRecord::Base.connection.schema_search_path

=> "\"租户1\""

公司只是我数据库中的一张表。

于 2018-05-29T10:56:42.300 回答
4

我可以获得 Apartment::Tenant.switch 的唯一方法!在 Rails 控制台中工作是通过在项目的根目录中创建以下 .irbrc 文件:

IRB.conf[:IRB_RC] = Proc.new do
  tenants = Apartment.tenant_names.sort
  puts "Available tenants: #{tenants.join(', ')}"

  print "Select tenant: "
  tenant = gets.strip

  unless tenant.empty?
    if tenants.include?(tenant)
      Apartment::Tenant.switch!(tenant)
    else
      puts "Tenant not found in list '#{tenant}'"
    end
  end
  puts "Tenant set to '#{Apartment::Tenant.current}'"
end
于 2018-08-22T12:42:46.860 回答
1

这是一个简单的代码(pry版本),可launchconsole

`Apartment::Tenant.switch!` 在`bin/rails 控制台`期间使用`pry`

于 2018-11-11T18:07:25.777 回答
0

这是因为 Spring,默认情况下它只为开发环境配置。只需将其从您的 Gemfile 中删除,它就会按预期工作。

于 2017-12-03T05:09:14.683 回答