我编写了一个ruby服务,我想在内部打包并分发到特定的环境(标准化的linux主机)。在挖掘了一些创建分发的最佳方法之后,我在这里遇到了很多博客和答案,建议bundler
和gem
打包以及许多二进制分发选项(例如traveling-ruby
),但对于将部署到已知环境的相对简单的服务来说,这些似乎都有点过分。我想创建一个不需要在部署时解析依赖关系的发行版(例如,bundle install --deployment
不是我想要的方法。)
所以考虑到这一点,是否有一个可用的框架,ruby应用程序通常会使用它来创建一个包含所有依赖项的可再发行组件包?我目前正在分两步执行此操作,并想知道是否有一种“更好”的红宝石方式 - 这种方式与gem build ...
一致,创建了包含依赖性的存档?
# Assuming `bundle install` was run on developer workstation and there's a `Gemfile.lock`
$ bundle install --deployment
$ tar zcf ../my-app.tar.gz ./
现在可以分发 my-app.tar.gz
,如果我有一个可执行文件来运行它,我可以在提取后从目录中使用bundle exec bin/run
。这是一个好方法吗?
我见过一个名为crate
的宝石可能会起作用......