创建gem时在哪里配置ActiveRecord?

时间:2019-02-08 15:13:52

标签: ruby activerecord bundler

我正在创建用bundle gem GEMNAME构建的gem。我正在按照一些说明在宝石中使用ActiveRecord,并告诉我在app/main.rb文件中添加一些配置:

require 'active_record'
require_relative './models/movie'

def db_configuration
  db_configuration_file = File.join(File.expand_path('..', __FILE__), '..', 'db', 'config.yml')
  YAML.load(File.read(db_configuration_file))
end

ActiveRecord::Base.establish_connection(db_configuration["development"])

但是我知道gem的文件结构是不同且重要的,并且bundler并没有为我建立app文件夹,我认为这是有充分理由的。

那我应该把这个文件/代码放在哪里?

1 个答案:

答案 0 :(得分:0)

建造宝石,扩展活动记录时,最好不要自己配置。宝石用户将包括您的宝石,并且可能具有自己的数据库配置。

因此,您的gem不应配置主机应用程序或连接到数据库。但是您可以在测试中做到这一点。

通常,您只需要在gem中定义Rails Engine并使用虚拟应用进行测试即可。值得阅读本指南Getting Started with Engines。它描述了如何在您的库中扩展Rails应用。

例如gem,扩展主机应用程序签出我的gem https://github.com/bolshakov/activeadmin_sortable_table