以下代码存储在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
时都会询问将要装载哪个租户。
谢谢!
答案 0 :(得分:3)
我遇到了类似的问题。如果您使用的是Apartment Gem。在rails控制台中,您可以通过先连接到DB然后使用schema_search_path
e.g.
c = Company.connection
c.schema_search_path = "tenant1"
要检查租户是否已切换,请使用ActiveRecord::Base.connection.schema_search_path
=> “\” tenant1 \ “”
公司只是我数据库中的一个表格。
答案 1 :(得分:1)
我可以获得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
答案 2 :(得分:1)
这是一个简单的代码(pry
版本),可以在launch
或console
上使用
`Apartment::Tenant.switch!` during `bin/rails console` using `pry`
答案 3 :(得分:0)
这是因为Spring发生的,默认情况下它仅为开发环境配置。只需从Gemfile中删除它,它应该按预期工作。