SailsにはWhelkがバンドルされており、これを使用するとJavaScript関数をシェルスクリプトとして実行できます。これは、スケジュールされたジョブ(cron、Herokuスケジューラ)、ワーカプロセス、およびSailsアプリのモデル、構成、ヘルパーへのアクセスを必要とするその他のカスタムの単発スクリプトを実行するのに役立ちます。
新しいスクリプトを追加するには、アプリのscripts/
フォルダーにファイルを作成するだけです。
sails generate script hello
次に、それを実行するには、次を使用します。
sails run hello
sails
コマンドラインインターフェースへのグローバルアクセスなしでスクリプトを実行する必要がある場合(たとえばProcfileで)、node ./node_modules/sails/bin/sails run hello
を使用します。
以下は、実際のアプリでよく見られるより複雑な例です。
// scripts/send-email-proof-reminders.js
module.exports = {
description: 'Send a reminder to any recent users who haven\'t confirmed their email address yet.',
inputs: {
template: {
description: 'The name of another email template to use as an optional override.',
type: 'string',
defaultsTo: 'reminder-to-confirm-email'
}
},
fn: async function (inputs, exits) {
await User.stream({
emailStatus: 'pending',
emailConfirmationReminderAlreadySent: false,
createdAt: { '>': Date.now() - 1000*60*60*24*3 }
})
.eachRecord(async (user, proceed)=>{
await sails.helpers.sendTemplateEmail.with({
template: inputs.template,
templateData: {
user: user
},
to: user.emailAddress
});
return proceed();
});//∞
return exits.success();
}
};
次に、次を実行できます。
sails run send-email-proof-reminders
使用法に関する詳細については、whelk
のREADMEを参照してください。