เพิ่ม Staging Environment ให้กับ Rails

เมื่อเราสร้าง Rails Application ผ่านคำสั่ง rails ปกติแล้วจะมาพร้อมกับ config ของสภาพแวดล้อม 3 รูปแบบเป็นค่ามาตรฐาน

  1. Development
  2. Test
  3. Production ซึ่งแต่ละสภาพแวดล้อมก็จะมีค่า config ต่างๆ ที่ถูกกำหนดมาให้แยกจากกัน ในโฟลเดอร์ configs/environments/${ENV}.rb

เพียงแค่ 3 สภาพแวดล้อมโดยปกติก็เพียงพอต่อการใช้งานแล้ว แต่ๆในบางครั้งเราก็อยากรันโปรแกรมในสภาพแวดล้อมที่เหมือนจริง แต่ไม่ใช่เครื่องเซิฟเวอร์ที่ปล่อยให้คนใช้งานจริง แต่จะเป็นเครื่องเซิฟเวอร์ที่อาจจะมีคุณลักษณะใกล้เคียงของจริง ที่เรียกว่า Staging Server

ซึ่งถ้าเป็นลักษณะเหตุการณ์แบบนี้ ถ้าวิธีการง่ายๆ เราก็คงเลือกใช้วิธีการแก้ไข config จากในสภาพแวดล้อม production ให้ทำการเชื่อมต่อฐานข้อมูล การต่อกับ sidekiq การต่อกับ redis ที่อยู่ในเครื่อง Stagging แทน สำหรับวิธีการนี้ดูเหมือนจะง่ายๆ แต่พอเราเริ่มมีการอัพเดตโค้ดผ่านการใช้ git หรือการใช้ automation อาจจะมีปัญหาเรื่องของ config ได้

ดังนั้นวิธีการที่น่าจะเหมาะสมที่สุดก็คงจะเป็นการเพิ่มสภาพแวดล้อมใหม่สำหรับ Staging ซึ่งสามารถทำได้ดังนี้

staging:
  <<: *default
  database: 'example_staging'
  host: localhost
  port: 5434
  username: postgres
  password: postgres

References: