Мы пишем драгоценный камень, который включает в себя несколько общих драгоценных камней, используемых в паре наших приложений. Мы хотим иметь какую-то конфигурацию, требующую или не требующую определенных драгоценных камней. Но application.rb
или enviroment.rb/*rb
загружаются после загрузки драгоценных камней. Так что мы не можем установить там конфиг. Следующий способ работает, но это не очень хорошая идея, и мне было интересно, есть ли более чистый способ сделать это.
ящик/рельсы. (В потребляющем приложении)
#!/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