ruby-on-rails - Rails 5在gem中有条件地需要依赖gem
问题描述
我们正在编写一个 gem,其中包含在我们的几个应用程序中使用的多个常见 gem。我们希望能够有某种配置来要求或不需要某些宝石。但是application.rb
orenviroment.rb/*rb
是在加载 gems 之后加载的。所以我们不能在那里设置配置。以下方法有效,但不是一个好主意,我想知道是否有更清洁的方法来做到这一点
垃圾箱/导轨。(在消费应用中)
#!/usr/bin/env ruby
DISABLE_TRANSPORT = true
APP_PATH = File.expand_path('../config/application', __dir__)
require_relative '../config/boot'
require 'rails/commands'
Gemfile(在消费应用中)
gem 'fruit_chain'
fruit_chain/lib/fruit_chain.rb(我们的宝石)
require analytic
require transport unless defined?(DISABLE_TRANSPORT) && DISABLE_TRANSPORT
require marketing
...
module FruitChain
end
解决方案
我遇到了同样的问题,只想将 gem 明确地包含为应用程序的责任,然后通过配置将该 gem 注入到父 gem 中,并确保它们符合相同的接口。
推荐阅读
- python - Python:以科学计数法打印数字列表
- python - 加载可投票后使用 df.loc(panda,已安装最新版本)的问题
- android - 在作为参数的函数中操作布局的问题;view.editText 不能为空
- javascript - 如何使用 E-308 作为算法将 SRM 转换为 L*a*b*?
- python - 在统计上成功的训练之后,结果并没有通过实时摄像机反映出来。我该如何解决这个问题?
- python - 类型错误:最小化()缺少 1 个必需的位置参数:'var_list'
- python - 在python中从包含min max的数组生成一个数据框
- android - Kotlin Android 扩展访问文本视图
- string - String.Split 到 DataRow 或 DataTable.Row.Add
- python - 为什么我的 for 循环覆盖变量而不是追加?