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