Ruby on rails 在heroku rails中强制捆绑更新

Ruby on rails 在heroku rails中强制捆绑更新,ruby-on-rails,ruby,git,heroku,Ruby On Rails,Ruby,Git,Heroku,假设我有2个代码库/git回购项目A和gem B 项目A使用gem B 这是项目文件中的条目 gem'B',git:'https://yashdfjwehrlhkhklbRrKwgNq:x-代币-auth@bitbucket.org/pwa abcde/B.git',分支:“dev/B-api” 今天我对gemb做了一些修改,并将它推到git上 但是projecta从未获得此更新,因为它已经在使用gem的旧版本 我的主要项目(A)是在heroku主持的 现在我的疑问是,我如何才能强迫heroku

假设我有2个代码库/git回购<代码>项目A和gem B

项目A使用gem B

这是项目文件中的条目

gem'B',git:'https://yashdfjwehrlhkhklbRrKwgNq:x-代币-auth@bitbucket.org/pwa abcde/B.git',分支:“dev/B-api”

今天我对gemb做了一些修改,并将它推到git上

但是
projecta
从未获得此更新,因为它已经在使用gem的旧版本

我的主要项目(A)是在heroku主持的


现在我的疑问是,我如何才能强迫heroku获取宝石的最新变化

不要在Heroku的
项目A中运行
捆绑更新
,而是首先在本地运行
捆绑更新
。这将更新您的
Gemfile.lock
。测试项目A是否仍按预期在本地运行。

然后提交并将新的
Gemfile.lock
推送到Heroku。

不要在Heroku的
Project A
中运行
bundle update
,而是首先在本地运行
bundle update
。这将更新您的
Gemfile.lock
。测试项目A是否仍按预期在本地运行。

然后提交并将新的
Gemfile.lock
推送到Heroku。

您可以通过以下两种方式实现:

  • 在GEM文件中设置表示提交哈希的
    ref
    ,而不是
    branch
    name并运行bundle安装。现在,当你再次推到heroku时,它将获得正确的通信

    gem 'B', git: 'https://yashdfjwehrlhkhklbRrKwgNq:x-token-auth@bitbucket.org/pwa-abcde/B.git', ref: 'commmit-hash'
    
  • 为提交
    gemb
    更改创建新分支,并设置新分支


  • 之所以发生这种情况,是因为您没有对GEMDEV文件进行任何更改。如果
    Gemfile
    Gemfile.lock
    中有任何更改,请运行
    bundle安装
    ,您可以通过以下两种方式实现:

  • 在GEM文件中设置表示提交哈希的
    ref
    ,而不是
    branch
    name并运行bundle安装。现在,当你再次推到heroku时,它将获得正确的通信

    gem 'B', git: 'https://yashdfjwehrlhkhklbRrKwgNq:x-token-auth@bitbucket.org/pwa-abcde/B.git', ref: 'commmit-hash'
    
  • 为提交
    gemb
    更改创建新分支,并设置新分支


  • 之所以发生这种情况,是因为您没有对GEMDEV文件进行任何更改。Heroku run
    bundle install
    如果
    Gemfile
    Gemfile.lock

    中有任何更改,它将无法运行,因为它将使用现有的gem,而不是从git获取新版本。如果从Windows系统生成
    Gemfile.lock
    ,它将无法工作。不管怎样,我已经重新编写了我认为更好的解决方案的答案。已经尝试过同样的方法,它不会起作用,因为它将使用现有的gem,而不是从git获取新版本。如果从Windows系统生成
    Gemfile.lock
    ,它会起作用。没关系,我已经写了答案,我觉得这是解决这个问题的更好方法。听起来很合理,我也会尝试同样的方法。因此,每次我们修改gem中的某些内容时,我们都需要在项目gemfile?中提供提交散列,它似乎工作正常。但对于生产环境来说,什么是最佳实践呢。我们是否需要在每次进行一些更改时都提供提交哈希?我们在gem中没有经常进行更改,所以最好生成分支和集合头。若gem是你们自己的,那个么你们每次都可以创建新的版本。若它解决了你们的问题,你们可以接受这个答案。听起来合乎逻辑,我也会试试。因此,每次我们修改gem中的某些内容时,我们都需要在项目gemfile?中提供提交散列,它似乎工作正常。但对于生产环境来说,什么是最佳实践呢。我们是否需要在每次进行一些更改时都提供提交哈希?我们在gem中没有经常进行更改,所以最好生成分支和集合头。若gem是你们自己的,那个么你们每次都可以创建新的版本。若它解决了你们的问题,你们可以接受这个答案。