Solid Cable, Solid Cache and Solid Queue
Real-time Messaging with Solid Cable
แก้ config/database.yml เพิ่ม cable ไปใน development (ถ้าใช้บน Production ก็เพิ่มใน production)
แล้วก็ไปแก้ config/cable.yml เพื่อไปบอกว่า Database ไหนที่เราจะใช้ ให้เปลี่ยนจาก Adapter ที่เป็น async เป็น solid_cable (เอาของ Production มาใช้ได้) ตรงค่าของ writing ก็ให้ตั้งชื่อให้ตรงกับที่เราเซตไว้ที่ไฟล์ config/database.yml ซึ่งในที่นี้คือ cable
เราจะไปเพิ่ม <%= turbo_stream_from @something, "channel_name" %> ตรงที่เราอยากจะรอ Event
Caching with Solid Cache
Referecens
Managing Asynchronous Tasks with Solid Queue
class TaskArchiverJob < ApplicationJob
queue_as :default
def perform(*args)
Task.where(status: "completed").update_all(status: "archived")
end
end
ปรับโค้ดเป็นแบบนี้ได้ เพราะ Method นี้ไม่ได้รับค่าอะไรเข้ามาใช้งาน
เข้าไปแก้ config/database.yml เพิ่ม queue ใน development
ต่อไปเราจะ Configure ให้ Development Environment ของเราไปใช้ Solid Queue เป็น Queue Adapter ให้เข้าไปที่ไฟล์ config/environments/development.rb ให้แก้ค่าของ config.active_job.queue_adapter เป็น :solid_queue และค่าของ config.solid_queue.connects_to เป็น { database: { writing: :queue } }
ทดสอบการรัน Job โดยให้เข้าไปที่ Rails Console
แล้วเราค่อยรันคำสั่งด้านล่างนี้
เพื่อให้รัน Solid Queue
Solid Queue มี Scheduler Process ด้วย ทำให้เราสามารถสร้าง Recurring Jobs ได้ ให้เราเข้าไปที่ไฟล์ config/recurring.yml แล้วให้เพิ่ม development เข้าไป
Mission Control — Jobs
แก้ Gemfile เพิ่มบรรทัดด้านล่างนี้เข้าไป
เสร็จแล้วสั่ง
หรือใช้คำสั่งด้านล่างนี้คำสั่งเดียวก็ได้
หลังจากติดตั้งเสร็จแล้วให้เรา Configure ตามนี้ Basic configuration
class AdminController < ActionController::Base
http_basic_authentication_with name: ENV['ADMIN_NAME'], password: ENV['ADMIN_PASSWORD']
end
class AdminController < ActionController::Base
http_basic_authentication_with name: "admin", password: "password"
end
เพิ่มบรรทัดด้านล่างนี้ใน config/application.rb