我为Rails应用程序添加了Ruby的Array
类的一些方法。放置它们的最佳位置在哪里?
现在我将它们放在config / environment.rb中。
答案 0 :(得分:7)
config / environment.rb实际上不是最好的地方,因为如果尝试扩展在环境中执行时尚未解析的类,可能会遇到严重的加载排序问题。
最好将文件放入config / initializers。任何放置在那里的脚本都将在加载rails运行时后执行。
您可以做的是创建一个文件lib / my_extensions.rb
module MyExtensions
end
然后在lib / my_extensions / array.rb中:
module MyExtensions::Array
def join_with_commas
join(", ")
end
end
和config / initializers / load_my_extensions.rb
class Array
include MyExtensions::Array
end
每次在开发模式下调用请求时,都会自动重新加载MyExtensions :: Array。这比每次更改代码时重启应用程序都要好。
答案 1 :(得分:1)
添加一个包含所有扩展名的lib/
目录可能会更清晰。然后在config / environment.rb中添加一行加载文件:
require File.join(RAILS_ROOT, 'lib', 'array.rb')