如何使这个方法在日志文件中输出黄线,可以从我的Rails应用程序中的任何地方(模型,控制器,视图)访问?
def my_log(text, file = "", line = "")
text.to_s.chomp.gsub!(/%/, "%%")
Rails.logger.debug(sprintf("\033[32m#{file}#{line}\033[0m\033[1m\033[33m#{text}\033[0m"))
end
答案 0 :(得分:8)
您可以在Kernel
(不推荐)中定义它:
module Kernel
def my_log(..)
..
end
end
...如果真的希望它可以在任何地方使用。
或者,在lib/util.rb
:
module Util
def self.my_log(..)
..
end
end
...并确保require 'util'
中的config/application.rb
,然后您可以在任何地方拨打电话:
Util.my_log(..)
答案 1 :(得分:7)
为什么不创建初始化程序并将此方法写入rails模块?
# config/initializers.rb
module Rails
def self.log_with_colour(message, level = :debug)
text.to_s.chomp.gsub!(/%/, "%%")
logger.send(level, sprintf("\033[32m#{__FILE__}#{__LINE__}\033[0m\033[1m\033[33m#{message}\033[0m"))
end
end
然后,您可以在代码中拨打Rails.log_with_colour("hello")
或Rails.log_with_colour("Hello again", :info)
答案 2 :(得分:3)
我在config/initializers/app_methods.rb
中放了这样的东西。它们不需要在类或模块中作用域。感觉有点hacky但我从来没有遇到任何问题。
答案 3 :(得分:2)
将其添加为Object
中的实例和类方法class Object
def self.my_log(...)
...
end
def my_log(...)
Object.my_log(...)
end
end