如何从Rails应用程序内部运行heroku重新启动?

时间:2019-06-04 01:49:28

标签: ruby-on-rails heroku

我了解可以从控制台运行heroku restart。我想做的是在我的应用(管理控制台)中有一个按钮,按下该按钮将运行一个<button id="heroku_restart">Restart</button> $("#heroku_restart").click(function() { $.post('/restart', {}).done(function(response) { alert(response) }) }) class AdminsController # this is the action mapped to the route /restart def restart # code for heroku restart end end 。有谁知道该怎么做,如果可能的话?所以代码看起来像这样:

conversions = {
'a': 1,
'b': 2,
'c': 3,
'd': 4,
'e': 5,
'f': 6,
'g': 7,
'h': 8,
'i': 9,
'j': 10,
'k': 11,
'l': 12,
'm': 13,
'n': 14,
'o': 15,
'p': 16,
'q': 17,
'r': 18,
's': 19,
't': 20,
'u': 21,
'v': 22,
'w': 23,
'x': 24,
'y': 25,
'z': 26
}

def conversion(word):
    for letter in word:
        word.replace(letter, str(conversions[letter]))
    word = list(word)
    for number in word:
        number = int(number)
    return sum(word)

2 个答案:

答案 0 :(得分:0)

按照帖子中提到的描述,一种方法是:

  

1)首先找到server.pid文件

pid_file = Rails.root.join("tmp", "pids", "server.opid")
  

2)现在,截断文件内容

File.open(pid_file, "w") {|f| f.truncate(0)}
  

3)最后,使用内核模块运行服务器:

Kernel.exec("rails s")

注意:正如@vpibano所正确提到的,您将需要身份验证才能访问您的应用程序。

这不是工作模型,而是一种达到要求的方法。

希望有帮助!!

答案 1 :(得分:0)

因此,根据@vpibano,在撰写本文时,使用platform-api进行操作很容易。这是我的网站上的按钮发布到的操作:

def restart
    heroku = PlatformAPI.connect_oauth(ENV["heroku_oauth_token"]) 
    heroku.dyno.restart_all("lastmingear")
    render nothing: true
end