我有两个使用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
的不同版本。
答案 0 :(得分:0)
可能值得尝试使你的第二个Gemfile(没有互联网访问的那个)使用路径引用宝石。
即
gem some_gem, path: "/home/you/some_path/some_gem"
有关详细信息,请参阅this question。
如果您没有互联网访问但可以通过文件传输,那么也可能需要为新版本的bundler / RubyGems传输源代码。
答案 1 :(得分:0)
从同事那里得到了一些帮助,要点是我做错了。
如果您希望传输gems
并查看与bundler
保持一致的效果,请执行此操作。
bundle install <gem>
bundle package
tar -czf ./transport.tar.gz ./Gemfile ./Gemfile.lock ./vendor
在下一台机器上:
tar -xzf ./transport.tar.gz
bundle exec <command>