Ruby on rails 如何从ruby文件中使用linux“mail”命令发送邮件?

Ruby on rails 如何从ruby文件中使用linux“mail”命令发送邮件?,ruby-on-rails,ruby,Ruby On Rails,Ruby,在下面的代码中,我必须发送一封关于进程状态的电子邮件,无论进程是否已完成、出错或超时 def check_for_forecasts wait_until_time = Time.now + timeout.minutes loop do RAILS_DEFAULT_LOGGER.info "Checking if process has finished" if find_token != 0 update_completion_sta

在下面的代码中,我必须发送一封关于进程状态的电子邮件,无论进程是否已完成、出错或超时

    def check_for_forecasts
   wait_until_time = Time.now + timeout.minutes
   loop do
       RAILS_DEFAULT_LOGGER.info "Checking if process has finished"
     if find_token != 0
       update_completion_status
       RAILS_DEFAULT_LOGGER.info "Process has finished"
       break
     elsif find_error != 0
       update_timed_out_field
       RAILS_DEFAULT_LOGGER.info "Process has errored"
       break
     elsif DateTime.now > wait_until_time
       update_timed_out_field
       RAILS_DEFAULT_LOGGER.info "Process has timed out"
       break
     else
       RAILS_DEFAULT_LOGGER.info "Waiting for Process to finish"
       sleep(60) # if it hasn't completed then wait 1 min and try again.
     end
    end
  end
通常,我们只在.sh文件中使用linux“mail”命令,而不在.rb文件中使用。下面是如何编写“mail”命令以在.sh文件中发送邮件

 mail -s "the process has been finished" abc@xyz.com<<EOM
      The process has finished successfully.    
EOM
有没有办法在.rb文件中使用simple mail命令?或者我必须为同样的东西安装gems吗

请帮忙。
谢谢。

在ruby中,这是一种非常丑陋但非常有用的方法:

to = "abc@xyz.com"
subject = "the process has been finished"
content = "The process has finished successfully."
`mail -s "#{subject}" #{to}<<EOM
  #{content}
EOM`

在ruby中,一种非常丑陋但非常有用的方法可以做到这一点:

to = "abc@xyz.com"
subject = "the process has been finished"
content = "The process has finished successfully."
`mail -s "#{subject}" #{to}<<EOM
  #{content}
EOM`

您可以在Ruby中使用backticks来运行命令行指令。所以你想要的是:

`mail -s "the process has been finished" abc@xyz.com<<EOM
  The process has finished successfully.    
EOM`

您可以在Ruby中使用backticks来运行命令行指令。所以你想要的是:

`mail -s "the process has been finished" abc@xyz.com<<EOM
  The process has finished successfully.    
EOM`

嗨,罗拉,谢谢你的回答。我可以在.rb文件中输入相同的代码来发送邮件,而不是在.sh文件中创建一个函数并从ruby代码调用它吗?是的,这就是想法,为了能够通过运行系统命令从ruby发送电子邮件,我还写了如何将ruby变量添加到命令中。试着把它放到一个.rb文件中,执行它,你应该会收到你的电子邮件,只要确保将变量的值更改为hi rorra,谢谢你的回答。我可以在.rb文件中输入相同的代码来发送邮件,而不是在.sh文件中创建一个函数并从ruby代码调用它吗?是的,这就是想法,为了能够通过运行系统命令从ruby发送电子邮件,我还写了如何将ruby变量添加到命令中。试着把它放到一个.rb文件中,执行它,你就会收到你的电子邮件,只要确保将变量的值改为