具有 gem 依赖性的自包含 Rails 插件?

发布于 2024-11-25 03:40:28 字数 475 浏览 0 评论 0原文

我正在创建一个 Rails 插件(是的,我需要一个插件,而不是 gem)。

这个插件有几个 gem 依赖项。我的第一个想法是在插件目录根目录下的 Gemfile 中列出依赖项。

从 install.rb 中,我执行了以下操作:

`bundle install`

然后从 init.rb 中,我执行了以下操作:

require 'rubygems'
require 'bundler/setup'
Bundler.require

但捆绑器并不一定是这些依赖项。

不想必须在根 Gemfile 中列出 gem 依赖项。

有没有什么方法可以将这些 gem 包含在插件中并使其正常工作,而最终用户无需更改自己的 Gemfile?如果有其他机制可以引入 Rails 插件的 gem 依赖项,我并不反对完全放弃 Bundler?

I am creating a Rails plugin (yes, I need a plugin, not a gem).

This plugin has several gem dependencies. My first thought was to list the dependencies in a Gemfile at the root of the plugin directory.

From the install.rb, I did the following :

`bundle install`

And then from init.rb, I did the following :

require 'rubygems'
require 'bundler/setup'
Bundler.require

But bundler is not definitely these dependencies.

I do not want to have to list the gem dependencies in the root Gemfile.

Is there any way to include these gems within the plugin and just have it work without the end user having to alter their own Gemfile? I'm not opposed to ditching Bundler all together if there were some other mechanism for pulling in gem dependencies for Rails plugins?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别念他 2024-12-02 03:40:28

它不需要您的宝石,因为宝石环境(宝石集,无论什么)已经由应用程序设置。

无法将插件的 gem 环境与应用程序的 gem 环境隔离,原因很简单,插件在应用程序内部运行。

因此,该插件在应用程序的 gem 环境中运行。

如果应用程序的 gem env 由 Bundler 管理,则您的依赖项必须在应用程序的 Gemfile 中定义。否则,无论您的插件内部需要什么,它们在 Bundler 隔离的 gem 环境中都将不可用。

这就是为什么以 gems 的形式发布插件更实用的原因之一。

It doesn't require your gems because the gem environment (gem set, whatever) is already set up by the app.

It's not possible to isolate the plugin's gem env from the app's gem env for the simple reason that the plugin runs inside the app.

Thus, the plugin runs in the app's gem env.

If the app's gem env is managed by Bundler, then your dependencies must be defined in the app's Gemfile. Otherwise they won't be available inside the gem env isolated by Bundler, no matter what you would require from inside your plugin.

This is one of the reasons why it's more practical to release plugins as gems.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文