在 Rails 环境中或没有 Rails 环境中构建 gem 的惯例是什么?
例如,我刚刚创建了hide_heroku gem,它本质上是一个 Rack 中间件。然后我添加了一个 Railtie 类,以便它可以在 Rails 环境中自动加载执行,但现在如果我转身尝试将它包含在 Nesta 应用程序中,我会得到一个错误,它无法加载 rails ...
在这个答案中https://stackoverflow.com/a/2072169/165673 @SimoneCarletti 暗示了这种情况:
如果您将插件打包为 Gem,您可以在非 Rails 项目中重用它,并使用 init.rb 文件提供特定于 Rails 的初始化。非 Rails 应用程序将简单地忽略它。
但这是一个旧答案,我不确定他在说什么。最好的方法是什么?
hide_heroku.rb:
require "rack/hide_heroku"
require "hide_heroku/railtie"
module HideHeroku
end
hide_heroku/railtie.rb:
require "rails"
module HideHeroku
class Railtie < ::Rails::Railtie
config.before_configuration do
Rails.application.config.middleware.use Rack::HideHeroku
end
end
end