きゅうりのテストを実行し、その結果を電子メールで通知する sinatra アプリがあります。Email gem は Pony で、この通知用の haml テンプレートがあります。
このロジックはルート内で機能します。
require 'sinatra'
require 'haml'
require 'pony'
get "/execute_all/?" do
execute_all_tests()
Pony.mail :to => "recipients@email.com",
:from => "do-not-reply@email.com",
:subject => "Test results,
:html_body => haml(:email_layout)
redirect "/"
end
ただし、これらのアクションに rufus スケジューラでスケジュールされたジョブを使用すると、次の例外が発生します。
scheduler caught exception:
undefined method `haml' for main:Object
コードはルートからのコピーパスタです:
scheduler = Rufus::Scheduler.start_new
scheduler.every '2h' do
execute_all_tests()
Pony.mail :to => "recipients@email.com",
:from => "do-not-reply@email.com",
:subject => "Test results,
:html_body => haml(:email_layout)
end
2 つのメソッドはすべて同じファイルにあり、Sinatra アプリを実行するために実行されます。
この例外を取り除き、haml テンプレートをスケジュールされたジョブとしてメールを送信するにはどうすればよいですか?