Tôi đang giới thiệu cấu hình mới cho một thực thể trong Drupal có thêm một vài trường boolean mới. Vấn đề là, mặc dù tôi đặt giá trị mặc định là TRUE trong giao diện người dùng, giá trị này chỉ dành cho các thực thể mới. Các thực thể hiện có sẽ không có giá trị hoặc sai khi được đánh giá trong mã.
Tôi muốn tạo kịch bản thay đổi trong đó sẽ mặc định tất cả các thực thể hiện có thành TRUE khi cấu hình được giới thiệu để tương thích ngược và chỉ chạy cấu hình đó một lần.
Các tập lệnh triển khai điển hình khuyên nên chạy updb trước khi cim với Drush. Điều này tạo ra xung đột khi cố gắng thực hiện điều này.
Ví dụ kịch bản triển khai Pantheon:
if (isset($_ENV['PANTHEON_ENVIRONMENT'])) {
trạng thái $ = 0;
$config_directory = dirname(__FILE__) . '/config/default';
passthru("drush updb --yes", $status);
passthru("drush cim --yes", $status);
passthru("drush cim --yes", $status);
passthru("drush cim --yes", $status);
passthru("drush updb --yes", $status);
passthru("drush cr", $status);
nếu ($trạng thái == 0) {
echo('Đã nhập cấu hình và cập nhật cơ sở dữ liệu.' ."\n");
} khác {
echo('Cấu hình chưa được nhập/cơ sở dữ liệu chưa được cập nhật. Lệnh Drush trả về lỗi.' . "\n");
}
}
Có cách nào tốt hơn để thực hiện các thay đổi như thế này chỉ chạy một lần mà không khiến tập lệnh như ở trên bị lỗi không?