Trailblazer のオブジェクト指向のすべての美しさが大好きです。
ジェム ( と呼ばれる) と対話してcpanel_deployer
、Web 上で外部から何かを行う操作があります。(アドオン ドメインを cpanel に追加します。)
class Website::Deploy < Trailblazer::Operation
attr_reader :website, :cpanel
def process(params)
real_cpanel_add_domain
website.cpanel = cpanel
website.save
end
private
def setup!(params)
@cpanel = Cpanel.find(params[:cpanel_id])
@website = website.find(params[:website_id])
end
def real_cpanel_add_domain
cp_domain = CpanelDeployer::Domain.new(website.domain)
cp_panel = CpanelDeployer::Panel.new(cpanel.host, cpanel.username, cpanel.password)
res = cp_panel.add_domain(cp_domain)
raise StandardError unless res
end
end
gem は既にテスト済みなので、cpanel_deloyer
ここで機能を再テストする必要はありません。CpanelDeployer::Panel#add_domain
しかし、操作をテストするために、正しい引数で呼び出されることを確認したいと思います。だから私は嘲笑すべきだと思っていCpanelDeployer::Panel
ます。
を使用しようとするのは悪い習慣だと思いますany_instance_of
。思考ボットによると、通常はコードの匂いと考えられています...彼らは依存性注入の使用を推奨しています。Trailblazer 操作内で依存性注入を使用する良い方法はありますか? この種の状況に対する別のベスト プラクティスはありますか?