如何使用 database.yml 为每个环境定义 json 文件
Posted
技术标签:
【中文标题】如何使用 database.yml 为每个环境定义 json 文件【英文标题】:How to use database.yml define json file for each environment 【发布时间】:2021-11-17 01:08:34 【问题描述】:我在 Rails 中处理 json 文件格式。 我喜欢在 config/databse.yml (或更好的地方)中使用环境来定义要在应用程序中使用的 json 文件。 但不知道,找不到任何样品。 请帮忙。
帮助器中的现有代码如下
def get_table(foo)
get_data = if [:production, :sandbox].include?(Rails.env)
File.read("support/product.json")
else
File.read("support/sample.json")
end
JSON.parse(get_data)
end
【问题讨论】:
这个问题毫无意义。这个 JSON 文件应该做什么? 这是真正的应用程序。 JSON 文件是应用程序在每个环境中运行的数据源,就像其他应用程序的数据库一样。 这不是在 Rails 中真正完成的事情,因此您将不得不推出自己的解决方案。但坦率地说,我只会将你拥有的任何数据导入数据库一次,而不是在这上面浪费时间。 【参考方案1】:如果我理解正确,那么您是在尝试根据当前环境加载 JSON 文件吗?我不确定 JSON 文件是否真的是您正在寻找的那种数据存储......但这是一个不同的问题。
在您的情况下,我会使用环境变量来设置在应用程序执行期间要使用的文件名。
将助手更改为:
def get_table
database_content_from_file = File.read(ENV['database_file'])
JSON.parse(get_data)
end
您现在可以在每种不同类型的环境中设置环境变量“database_file”。这可以通过设置系统范围的变量或使用像 https://github.com/laserlemon/figaro 这样的 gem(我强烈建议您使用)来完成。
这样,您可以在开发环境中将 ENV['database_file'] 设置为 'support/sample.json' 并将其设置为 'support/product.json' 在生产中。
我希望这能回答您的问题。如果不是,请以更容易理解的方式重新表述您的问题。
【讨论】:
是的,它有效....以上是关于如何使用 database.yml 为每个环境定义 json 文件的主要内容,如果未能解决你的问题,请参考以下文章
如何在database.yml文件中设置rails环境变量?
Docker + Rails + MySQL =忽略database.yml中的环境变量
这个 database.yml 文件中的 &,<<, * 是啥意思?