扩展 IRB 主要方法
Extend IRB main methods
我的应用程序中有一个目录结构。出于开发目的(并且可能超出开发目的),我目前有一个 class X
,它具有 class 方法 pwd
、cd
和 ls
。当我在我的应用程序中输入 irb
时,有没有办法使这些方法可用,例如:
2.1.5 :0 > pwd
/current_dir/
目前我在做:
2.1.5 :0 > X.pwd
/current_dir/
简直就是不方便。
我可以简单地向现有 class 添加一些内容的解决方案将是完美的,例如:
class X < Irb::main
def self.pwd
#stuff
end
end
现在我不太喜欢 hirb
,但如果有适用于 hirb
或 irb
的解决方案,我会试一试!感谢您的帮助!
在 Rails 中,当 Rails 应用程序通过 IRB 启动时,您可以有条件地将方法混合到控制台中。
这是使用 application.rb
文件中的 console
配置块完成的。
module MyApp
class Application < Rails::Application
# ...
console do
# define the methods here
end
end
end
对于你的情况,有几种可能。您可以简单地将方法委托给您的库。
module MyApp
class Application < Rails::Application
console do
# delegate pwd to X
def pwd
X.pwd
end
end
end
end
或者如果 X 是一个模块,您可以包含它
module MyApp
class Application < Rails::Application
console do
Rails::ConsoleMethods.send :include, X
end
end
end
我的应用程序中有一个目录结构。出于开发目的(并且可能超出开发目的),我目前有一个 class X
,它具有 class 方法 pwd
、cd
和 ls
。当我在我的应用程序中输入 irb
时,有没有办法使这些方法可用,例如:
2.1.5 :0 > pwd
/current_dir/
目前我在做:
2.1.5 :0 > X.pwd
/current_dir/
简直就是不方便。
我可以简单地向现有 class 添加一些内容的解决方案将是完美的,例如:
class X < Irb::main
def self.pwd
#stuff
end
end
现在我不太喜欢 hirb
,但如果有适用于 hirb
或 irb
的解决方案,我会试一试!感谢您的帮助!
在 Rails 中,当 Rails 应用程序通过 IRB 启动时,您可以有条件地将方法混合到控制台中。
这是使用 application.rb
文件中的 console
配置块完成的。
module MyApp
class Application < Rails::Application
# ...
console do
# define the methods here
end
end
end
对于你的情况,有几种可能。您可以简单地将方法委托给您的库。
module MyApp
class Application < Rails::Application
console do
# delegate pwd to X
def pwd
X.pwd
end
end
end
end
或者如果 X 是一个模块,您可以包含它
module MyApp
class Application < Rails::Application
console do
Rails::ConsoleMethods.send :include, X
end
end
end