如何在 rails 控制台中存储 "macros"?
How to store "macros" in rails console?
我有一个使用公寓 gem 的多租户 rails 应用程序。当我使用 rails 控制台时,我不断调用 Apartment::Tenant.switch 在公寓之间导航。我想在某个地方创建一个配置文件,在那里我可以将这个调用缩写为更短的类型。我将如何着手这样做,以便当我使用 rails console
启动控制台时可以使用这个较短的调用?我在想象
swtich = Apartment::Tenant.switch
然后每当我调用 switch 时它就会调用原始函数。
是一种更好的方法,我不推荐这样做。将其放入初始化程序或 application.rb
或类似的。
module Kernel
def switch
Apartment::Tenant.switch
end
end
将允许您在控制台中简单地调用 switch
。不过,您可能会破坏其他一些东西,您应该采取措施确保只能通过控制台访问它。
嗯。实际上不是宏,但我们 dynamic_method 定义正确。
所以您可以在 rails 控制台中执行此操作:
define_method :bar do
Apartment::Tenant.switch
end
然后您可以调用 bar
方法作为您方法的简称。
为了将它添加到 initializers
我已经在初始化文件夹中创建了一个文件说 bar.rb
。
那我做到了,如果不理想的话:
class Object
def bar
Apartment::Tenant.switch
end
end
重启控制台并调用 bar
我不太喜欢全局变量,但您可以将它放在 initalizers
文件中:
$switch = (Class.new do
def [](tenant, &block)
Apartment::Tenant.switch(tenant, &block)
end
end).new
然后像这样使用它:
$switch['tenant_name'] do
....
end
我有一个使用公寓 gem 的多租户 rails 应用程序。当我使用 rails 控制台时,我不断调用 Apartment::Tenant.switch 在公寓之间导航。我想在某个地方创建一个配置文件,在那里我可以将这个调用缩写为更短的类型。我将如何着手这样做,以便当我使用 rails console
启动控制台时可以使用这个较短的调用?我在想象
swtich = Apartment::Tenant.switch
然后每当我调用 switch 时它就会调用原始函数。
是一种更好的方法,我不推荐这样做。将其放入初始化程序或 application.rb
或类似的。
module Kernel
def switch
Apartment::Tenant.switch
end
end
将允许您在控制台中简单地调用 switch
。不过,您可能会破坏其他一些东西,您应该采取措施确保只能通过控制台访问它。
嗯。实际上不是宏,但我们 dynamic_method 定义正确。
所以您可以在 rails 控制台中执行此操作:
define_method :bar do
Apartment::Tenant.switch
end
然后您可以调用 bar
方法作为您方法的简称。
为了将它添加到 initializers
我已经在初始化文件夹中创建了一个文件说 bar.rb
。
那我做到了,如果不理想的话:
class Object
def bar
Apartment::Tenant.switch
end
end
重启控制台并调用 bar
我不太喜欢全局变量,但您可以将它放在 initalizers
文件中:
$switch = (Class.new do
def [](tenant, &block)
Apartment::Tenant.switch(tenant, &block)
end
end).new
然后像这样使用它:
$switch['tenant_name'] do
....
end