【问题标题】:How to force external gems to be loaded from vendor folder如何强制从供应商文件夹加载外部 gem
【发布时间】:2012-04-04 00:55:23
【问题描述】:

我正在打包一个外部依赖项很少的 gem(例如“liquid”、“fastercsv”等),这里唯一的要求是安装 gem 的用户不能访问网络(一些代理限制)。我将我的 gem 放在“vendor/bundle/jruby/1.9”文件夹中,只是想知道如何强制用户使用这些 gem,而不是从 http://rubygems.org 下载它们?

谢谢!

【问题讨论】:

    标签: ruby gem jruby


    【解决方案1】:

    如果您真的想这样做,您可以编辑 gem 的 Gemfile 并将这些 gem 作为依赖项删除。

    这意味着当用户安装您的 gem 时,他不会下载任何其他 gem。

    在你的 gem 中,你需要使用你的每个内部 gem。

    如果您想确保获得自己的内部 gem,而不是用户系统上预先存在的 gem,您可以使用加载路径:保存它,用您自己的覆盖它,加载您的 gem,然后恢复加载路径。

    【讨论】:

    • 谢谢乔尔帕克亨德森。我应该在我的 Gemfile 中包含“gemspec”,还是应该清除它?另外,我应该需要像 require 'vendor/bundle.../liquid' 这样的内部 gem 而不是 require 'liquid'?
    • 好问题,我不知道;我个人会尝试没有。对于您的第二个问题,我将首先尝试更改加载路径,目标是让您的 gem 文件能够像往常一样要求:要求“液体”。
    • 啊,好吧,在 prj_name.rb 文件中执行类似 $:.unshift File.dirname('vendor') 的操作?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-30
    • 2014-11-16
    • 2017-02-22
    • 1970-01-01
    • 2017-12-04
    • 2017-03-01
    • 1970-01-01
    相关资源
    最近更新 更多