我有一个私有(private) Rails 可挂载引擎(在私有(private)仓库中),我的几个项目都在使用它。
它包含在他们的 Gemfile 中的本地路径中。
有没有办法在部署期间将引擎打包到每个应用程序的存储库中?(可能通过/vendor/cache 或其他方式)。
即所以我不需要执行我目前必须执行的这两个步骤:
- 将引擎放在应用程序必须引用的服务器上自己的文件夹中(使用该相对路径)。
- 更新引擎后,我可以选择哪个应用程序获取引擎的最新更新。 (现在,当我在存储库中提交引擎更新并在生产服务器上更新它时,所有使用的应用程序都会获得更新)。
来自rails documentation , 我可以将引擎 gem 添加为 gem 'blorgh', path: "vendor/engines/blorgh"
但是我如何将引擎代码放在中心位置并挑选哪个应用程序获取更新?
最佳答案
我会在 Github 上创建一个私有(private)仓库,并在每个应用程序的 Gemfile
中通过 :git
引用它,并使用 :tag
, :branch
或 :ref
为您挑选工作。
# in app1 Gemfile.rb
gem 'blorgh', :git => 'git@github.com:jacob/blorgh', :tag => 'v1.1'
# in app2 Gemfile.rb
gem 'blorgh', :git => 'git@github.com:jacob/blorgh', :ref => '4aded'
希望对您有所帮助。
关于ruby-on-rails - Rails 可安装引擎 : how to bundle in each app that uses it?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23505094/