我正在开发一个用于rails app的ruby gem。 gem需要使用来自Web服务的实时数据“初始化”。
但是这个初始化是一个很长的过程,我想在某处保存初始化数据。我应该把它保存在哪里?
我可以将它保存在父rails应用数据库中,但我需要创建表和迁移,这并不理想。
我正在考虑在gem文件夹中使用文本文件或redis数据库......这是一个好习惯吗?
感谢。
答案 0 :(得分:1)
ActiveSupport
有几个Cache
个类。例如,您可以使用默认的Rails.cache
:
Rails.cache.write('my-gem-initialization-data', 'foo bar baz')
如果您需要更多灵活性,可以提供初始化程序,例如:
# config/initializers/my_gem.rb
MyGem.configure do |config|
config.cache = Rails.cache
config.cache_key = 'my-gem-initialization-data'
end
答案 1 :(得分:0)
我认为,期望用户生成并运行迁移作为gem的设置的一部分是完全正确的。
实际上这很常见:看看众所周知的宝石,比如设计(需要用户表上的某些列)或paper_trail(需要数据库中的表来存储版本)
另一方面,您的替代方案并不总是可行的。您不能指望用户配置redis数据库(我的大多数应用程序根本不使用redis),而某些环境(例如Heroku)不允许持久写入文件。