我正在创建用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
文件夹,我认为这是有充分理由的。
那我应该把这个文件/代码放在哪里?
答案 0 :(得分:0)
建造宝石,扩展活动记录时,最好不要自己配置。宝石用户将包括您的宝石,并且可能具有自己的数据库配置。
因此,您的gem不应配置主机应用程序或连接到数据库。但是您可以在测试中做到这一点。
通常,您只需要在gem中定义Rails Engine并使用虚拟应用进行测试即可。值得阅读本指南Getting Started with Engines。它描述了如何在您的库中扩展Rails应用。
例如gem,扩展主机应用程序签出我的gem https://github.com/bolshakov/activeadmin_sortable_table