但我完全找不到任何方法可以找到这些信息. heroku运行控制台中的ENV变量中没有任何内容.虽然“heroku发行版”确实显示了部署信息列表,包括SHA-1哈希的前几个字符,但这让我认为Heroku必须存储它,但是我找不到它.有人知道吗?@H_404_3@
我意识到我并没有像我应该那样明确地提出这个问题:我想在Heroku上找到Rails里面的SHA-1哈希.就像我可以这样做:@H_404_3@
<h1><%= ENV['REV']</h1>
谢谢!@H_404_3@
解决方法
git ls-remote heroku@H_404_3@
更新:@H_404_3@
由于OP实际上是想在Ruby env中获取SHA,一种可能的方法是使用custom buildpack.@H_404_3@
要开始使用,请转到Heroku’s Ruby Buildpack并进行分叉,以便您可以自行制作变体.现在克隆你的fork并查看lib / language_pack / ruby.rb.添加一个新方法,例如:@H_404_3@
def get_SHA #get SHA #save SHA to ENV,ala: ENV['SHA'] = retrieved_sha end
如何获得SHA取决于你.你可以执行一个git命令并使用返回的内容:@H_404_3@
git log -1 –format =“%H”@H_404_3@
或者你可以使用@ avaynshtok的建议并使用Heroku gem来使用release方法.@H_404_3@
然后,一旦有了SHA,就将其设置为ENV var.@H_404_3@
接下来,在ruby.rb中找到compile方法,并将get_sha方法添加到它的末尾:@H_404_3@
def compile Dir.chdir(build_path) install_ruby setup_language_pack_environment allow_git do install_language_pack_gems build_bundler create_database_yml install_binaries run_assets_precompile_rake_task get_sha #your additional method end end
将更改推回到GitHub,现在转到命令行.您需要为Heroku应用添加新的配置变量:@H_404_3@
heroku config:添加BUILDPACK_URL = git@github.com:<您的GitHub用户名> /heroku-buildpack-ruby.git@H_404_3@
请注意,您需要确保替换<您的GitHub用户名>用…好吧,你的GitHub用户名,所以你指着你的分叉回购.@H_404_3@
最后,执行最后一个启用Heroku labs feature的命令,该命令允许slug编译器访问用户变量:@H_404_3@
heroku labs:启用user_env_compile@H_404_3@
现在你应该全力以赴.那么现在究竟发生了什么?好吧,当你推送到Heroku时,Heroku将收到更改,然后看到你有一个自定义buildpack网址集.因此它将从GitHub获取您的自定义buildpack,然后使用它来创建slug.这意味着一旦它运行所有默认编译命令,它将以get_sha方法结束,该方法应将ENV var SHA设置为适当的SHA.现在你应该可以从Ruby中访问那个ENV变量,以及你将要做的事情.@H_404_3@