如何在ruby gem中保存数据?

时间:2016-11-04 10:06:14

标签: ruby-on-rails ruby persistence

我正在开发一个用于rails app的ruby gem。 gem需要使用来自Web服务的实时数据“初始化”。

但是这个初始化是一个很长的过程,我想在某处保存初始化数据。我应该把它保存在哪里?

我可以将它保存在父rails应用数据库中,但我需要创建表和迁移,这并不理想。

我正在考虑在gem文件夹中使用文本文件或redis数据库......这是一个好习惯吗?

感谢。

2 个答案:

答案 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)不允许持久写入文件。