ruby-on-rails - Rails 可安装引擎 : how to bundle in each app that uses it?

标签 ruby-on-rails ruby rubygems bundler rails-engines

我有一个私有(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/

相关文章:

ruby-on-rails - 尝试验证日期

ruby - 从物化路径构建树

ruby-on-rails - 跑rails 3.2.13但是还没安装呢?

javascript - rails teaspoon 在引擎中测试未加载 *_spec.js

ruby-on-rails - 在 Solaris 10 上部署 Ruby on Rails 应用程序

ruby-on-rails - Nginx + 乘客 + Rails 服务器错误

ruby-on-rails - 使用带有载波 gem 的多个 S3 存储桶

ruby-on-rails - 在公共(public)事件中担任投票人

mysql - 无法安装 gem install mysql2 Ruby WINx64

mysql - 让 mysql gem 在 rvm 上与 ruby​​-1.9.3 一起使用