进入控制台后如何select特定租户?
How select specific tenant after enter on console?
存储在 config/initializers/console.rb
中的以下代码仅在我第一次执行 rails console
CLI 时有效。退出再进入时,不显示选择信息,但加载选择的预览租户。
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
输入时询问要加载的租户。
谢谢!
发生这种情况是因为 Spring,默认情况下它仅为开发环境配置。只需将它从您的 Gemfile 中删除,它就会按您预期的那样工作。
我遇到了类似的问题。如果您使用的是公寓 Gem。在您的 rails 控制台中,您可以通过首先连接到数据库然后使用 schema_search_path
在租户之间切换
e.g.
c = Company.connection
c.schema_search_path = "tenant1"
要检查租户是否已切换,请使用 ActiveRecord::Base.connection.schema_search_path
=> "\"tenant1\""
公司只是我数据库中的一个table。
我能得到 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
这是一个简单的代码(pry
版本),可在 launch
或 console
时使用
存储在 config/initializers/console.rb
中的以下代码仅在我第一次执行 rails console
CLI 时有效。退出再进入时,不显示选择信息,但加载选择的预览租户。
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
输入时询问要加载的租户。
谢谢!
发生这种情况是因为 Spring,默认情况下它仅为开发环境配置。只需将它从您的 Gemfile 中删除,它就会按您预期的那样工作。
我遇到了类似的问题。如果您使用的是公寓 Gem。在您的 rails 控制台中,您可以通过首先连接到数据库然后使用 schema_search_path
e.g.
c = Company.connection
c.schema_search_path = "tenant1"
要检查租户是否已切换,请使用 ActiveRecord::Base.connection.schema_search_path
=> "\"tenant1\""
公司只是我数据库中的一个table。
我能得到 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
这是一个简单的代码(pry
版本),可在 launch
或 console