我有一些函数可以在名为string_class.rb
的文件中修补字符串类,该文件当前放在config\initializers\string_class.rb
中。代码如下所示:
class String
def capitalize_first_char
self.sub(/^(.)/) { $1.capitalize }
end
def capitalize_each_sentence
self.gsub(/([a-z])((?:[^.?!]|\.(?=[a-z]))*)/i) { $1.upcase + $2.rstrip }
end
end
经过相当多的研究后,如果这个课程应该存在于初始化或 lib 文件夹中,我就会陷入困境。
答案 0 :(得分:1)
在Rails应用程序中生活这种东西并不是一个好地方,因为在构建Rails应用程序的正常过程中,这不是你应该做的事情。几乎每个样式指南中的修补核心类都是expressly advised against。
config/initializers
可能是错误的地方。通常这是为您的应用程序设置依赖关系,并且大多数人都不会考虑将代码混合到核心类中的奇怪方法lib
可能是一个更好的地方,但默认情况下不会自动重新加载Gemfile
?如果值得修补String
,可能值得提炼成宝石并彻底记录。我个人会回避这个问题并简单介绍帮助方法。您可以通过在app/controllers/application_controller.rb
中定义辅助方法,在所有控制器上使用辅助方法。然后,您可以使用helper_method
函数将方法用于您的视图:
class ApplicationController < ActionController::Base
helper_method :capitalize_first_char, :capitalize_each_sentence
#...
protected
def capitalize_first_char(str)
str.sub(/^(.)/) { $1.capitalize }
end
def capitalize_each_sentence(str)
str.gsub(/([a-z])((?:[^.?!]|\.(?=[a-z]))*)/i) { $1.upcase + $2.rstrip }
end
end