为捆绑项目投标并发送到另一个系统

时间:2016-06-03 22:56:25

标签: ruby bundler

我有两个使用ruby编写的命令行界面的系统。一个系统使用的旧版本与我们编写的脚本不兼容。我们想使用bundler在我们自己的系统上下载2.0的所有依赖项,然后将bundle迁移到具有旧版本的系统,以便我们可以使用{{1}那里也是。

我们无法在另一个系统上运行2.0,因为它不对互联网开放。

所以这个想法在我的系统上:

bundle install

...写bundle init ...

Gemfile

bundle install

...将tar -czf cli2.0.tar.gz ./Gemfile ./Gemfile.lock ./.bundle ./bundle移至另一个系统......

在系统B上:

cli2.0.tar.gz

tar -zxf cli2.0.tar.gz

但是在这一点上我们得到一个错误,指出bundle exec cli2.0 version找不到任何宝石,即使它们就在bundler下面!

看起来他们安装了./bundle/ruby/2.3.0/ruby的不同版本。

2 个答案:

答案 0 :(得分:0)

可能值得尝试使你的第二个Gemfile(没有互联网访问的那个)使用路径引用宝石。

gem some_gem, path: "/home/you/some_path/some_gem"

有关详细信息,请参阅this question

如果您没有互联网访问但可以通过文件传输,那么也可能需要为新版本的bundler / RubyGems传输源代码。

答案 1 :(得分:0)

从同事那里得到了一些帮助,要点是我做错了。

如果您希望传输gems并查看与bundler保持一致的效果,请执行此操作。

  1. bundle install <gem>
  2. bundle package
    • 这会创建已下载的gems的缓存以供传输。
  3. tar -czf ./transport.tar.gz ./Gemfile ./Gemfile.lock ./vendor
  4. 在下一台机器上:

    1. tar -xzf ./transport.tar.gz
    2. bundle exec <command>