如果此条件失败,如何再次运行此ruby脚本?

时间:2016-12-07 20:00:40

标签: ruby-on-rails ruby twitter

我在Ruby中为yuks构建了一个Markov bot,我正在建立一个本地chron工作,每天发送四次推文。但我的代码有点蹩脚和无趣。返回的Markov推文偶尔会超过140个字符,如果我手动运行脚本,那很好。我把它设置成令人愉快的失败。但是,如果我要自动化这个,我想设置它,如果它失败,因为它超过了字符数,我希望它再试一次,直到它成功。这是我的超级基本if语句。

if tweet_text.size <= 140
    client.update( tweet_text )
    p "#{Time.now}: #{tweet_text}"
else
    p "Tweet exceeded 140 characters. Try again."
end

2 个答案:

答案 0 :(得分:1)

如果我理解,你想在每次推文的大小超过140时运行这段代码。我认为最简单的解决方案是将它写在循环中并在大小有效时退出循环。 / p>

while true
    tweet_text = new_tweet # Change the text of tge tweet or the loo will loop forever
    if tweet_text.size <= 140
        client.update( tweet_text )
        p "#{Time.now}: #{tweet_text}"
        break
    else
        p "Tweet exceeded 140 characters. Try again."
    end
end

希望它有所帮助,

格雷戈里。

答案 1 :(得分:0)

如果你知道你的循环会收敛到短于140的推文,格雷戈里的回答很好。

否则,如果推文太长,您可能想删除一些子字符串:

if tweet_text.size <= 140
  client.update( tweet_text )
  p "#{Time.now}: #{tweet_text}"
else
  p "Tweet exceeded 140 characters. Truncating."
  truncated_tweet = tweet_text[0,69]+".."+tweet_text[-69,69]
  client.update( truncated_tweet )
  p "#{Time.now}: #{truncated_tweet}"
end