我希望能够编辑YAML
文件并在 Rails 4 应用中重新加载。现在我正在通过YAML
加载initializer
文件,我知道这只会加载文件一次,更改后需要重新启动。
如何通过Rails中的YAML
文件完成i18n YAML
重新加载/刷新?
答案 0 :(得分:2)
您可以尝试检查文件更改时间,例如:
module MyFileReader
def self.my_yaml_contents
if @my_yaml_file_ctime != File.ctime(file_name)
@my_yaml_contents = YAML.load(File.open(file_name))
@my_yaml_file_ctime = File.ctime(file_name)
end
@my_yaml_contents
end
end
MyFileReader.my_yaml_contents
方法仅在启动时加载和解析文件,并在此期间更改并提供已解析的数据,
请参阅http://www.ruby-doc.org/core-2.0.0/File.html#method-c-ctime
答案 1 :(得分:2)
加载文件时,我假设您将其分配给某个变量或常量。如果您没有分配它,那么每次都会执行加载。
而不是:
CONTENT = Yaml.load_file('your_file.yml')
创建一个简单的类或函数:
module YourFileReader
def self.load
Yaml.load_file('your_file.yml')
end
end
并使用定义的方法读取应用中的文件
YourFileReader.load
甚至更简单,使用
Yaml.load_file('your_file.yml')
直接在您需要阅读文件的应用中。
答案 2 :(得分:0)
而不是require
使用load
来加载文件。
require
只会加载一次文件。但load
会在调用时加载。
在此处详细了解http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/