如何在ruby gem中保存数据?
我正在开发一个用于rails应用程序的ruby gem。 gem需要使用来自Web服务的实时数据“初始化”。
但是这个初始化是一个漫长的过程,我想在某处保存初始化数据。 我应该在哪里保存?
我可以将它保存在父rails应用程序数据库中,但我需要创建表和迁移,这并不理想。
我正在考虑在gem文件夹中使用文本文件或redis数据库……这是一个好习惯吗?
谢谢。
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
我认为,期望用户生成并运行迁移作为gem的设置的一部分是完全正确的。
实际上这很常见:查看众所周知的gems,例如devise(需要在users表上的某些列)或paper_trail(需要数据库中的表来存储版本)
另一方面,您的替代方案并不总是可行的。 您不能指望用户配置redis数据库(我的大多数应用程序根本不使用redis),而某些环境(例如Heroku)不允许持久写入文件。