Home Articles

如何在bundler(非源代码)中包含.gem文件

Asked
Viewed 1274 times
1

我有一个rails应用程序依赖于我正在同时开发的库 .

当我部署应用程序时,由于各种原因,我无法在bundler中使用:git =>''选项加载gem . 理想情况下,我想要做的是以下内容

Gemfile

gem 'system-api', :gem => 'vendor/system-api-1.0.0.gem'

我想预先构建gem并将其包含在项目中并将其检入git .

有没有办法用bundler甚至不使用bundler来做到这一点?

[UPDATE 1]

我试过“gem'ystem-api','1.0.0',:path =>'vendor /'”并且捆绑包说它安装正确,但是gem没有显示在'gem list'中,也没有rails项目有参考 . 它显示为'bundle show'命令 .

4 Answers

  • 0

    看起来Bundler有一个 :path 选项 . 它'll run relative to the project'的Gemfile位置 . 路径仅指定文件夹,而不是实际的gem名称:

    gem 'system-api', :path => "vendor"
    

    有关详细信息,请参阅bundler's Gemfile docs .

  • 0

    如果你将X.gem文件放入./vendor/cache,它可能会工作

    如果您运行“bundle package”,那么bundler将放置内置的.gem文件 . 所以,如果你自己把它放在那里,捆绑商会在那里找到它吗?也许 . 但是我不确定在./vendor/cache中包含一些宝石的想法和其他没有,不完全确定Bundler是否支持,因为我认为“捆绑包”坚持将所有的em放在那里 .

    http://gembundler.com/bundle_package.html http://gembundler.com/man/bundle-package.1.html

    如果不是将预先构建的X.gem检入您的仓库,您可以检查源代码中的X gem的SOURCE,并且源包含X.gemspec文件,然后您可以使用:path选项 . 但我想你已经发现:path选项希望指向源代码,而不是* .gem包 . 如果您只是解压缩* .gem,那么可能会生成一个目录,您可以使用bundler gem:path with . (A * .gem产品只是一个zipfile ......我想 . )

    这不是一个明确的答案,但可能会有一些想法 .

  • 0

    我会说这是正常的 gem list 不显示你的宝石 . 您通过bundler安装它,并且在运行 gem list 时不调用bundler . 相反,请查看 bundler exec gem list .

    顺便说一句,在使用Bundler时,你应该在运行的任何命令行之前使用 bundler exec (除了 rails server ,它有自己的方式启动和运行Bundler):bundle-exec man page

  • 0

    我做了以下工作:

    gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg'
    

    并且 ../libv8/pkg 文件夹仅包含二进制打包的gem libv8-3.11.8.3mytest-x86_64-linux.gem .

    希望这可以帮助 .

Related