Điểm:1

Ghi đè cấu hình có kết quả không thể đoán trước

lá cờ nr

Tôi đang thiết lập phân tách cấu hình với Drupal 9 và gặp phải kết quả không mong muốn.

Không có phần tách nào của tôi được đánh dấu là Đang hoạt động trong cấu hình đang hoạt động hoặc cấu hình đã xuất YAML.

Tôi muốn đặt phân chia cục bộ mặc định trong cài đặt.php và sau đó sử dụng cài đặt.local.php ghi đè lên nó nhà phát triển, stg, prd môi trường.

Môi trường phát triển cục bộ của tôi là DDEV-Local v1.17.5. Ba môi trường từ xa đều được thiết lập trên một máy chủ từ xa trong AWS riêng của khách hàng, trong ba Máy chủ ảo Apache khác nhau.

Tôi không thể sử dụng các biến môi trường để phân biệt nhà phát triển, stg, prd môi trường vì tất cả chúng đều nằm trên một máy chủ. Đó là một thách thức khi phân biệt các môi trường mà không có các biến môi trường Acquia hoặc Pantheon thông thường.

(Lưu ý: Tôi hiểu nếu config_split không có chủ đề ở đây vì nó không phải là mô-đun cốt lõi. Tôi đã tạo một hàng đợi vấn đề trên Drupal.org, nhưng tôi vẫn hy vọng rằng ai đó sẽ thấy câu hỏi ở đây và cung cấp thông tin chi tiết.)

Đây là ghi đè mặc định trong cài đặt.php:

  $config['config_split.config_split.local']['status'] = TRUE;
  $config['config_split.config_split.prd']['status'] = FALSE;
  $config['config_split.config_split.stg']['status'] = FALSE;
  $config['config_split.config_split.dev']['status'] = FALSE;

Càng xa càng tốt. Phân chia cục bộ là "đang hoạt động (được ghi đè)".

Mọi thứ trở nên kỳ lạ khi tôi chỉnh sửa phần này để kích hoạt một phần tách khác trong môi trường Cục bộ của mình:

  $config['config_split.config_split.local']['status'] = FALSE;
  $config['config_split.config_split.prd']['status'] = TRUE;
  $config['config_split.config_split.stg']['status'] = FALSE;
  $config['config_split.config_split.dev']['status'] = FALSE;

Sau khi chỉnh sửa cài đặt.php (và xóa bộ nhớ cache, tất nhiên) phân chia Sản xuất là "hoạt động (ghi đè)", như mong đợi.

Thật không may, việc phân tách cục bộ cũng "hoạt động (ghi đè)" mặc dù đã đặt ['trạng thái'] = SAI;,

Mọi thứ trở nên kỳ lạ hơn khi tôi cố gắng phủ định một cách hợp lý các giá trị của tất cả các phần tách:

  $config['config_split.config_split.local']['status'] = FALSE;
  $config['config_split.config_split.prd']['status'] = TRUE;
  $config['config_split.config_split.stg']['status'] = TRUE;
  $config['config_split.config_split.dev']['status'] = TRUE;

Bây giờ, sự phân chia cục bộ là vẫn "hoạt động (ghi đè)" mặc dù đã đặt ['trạng thái'] = SAI;,

Sự phân chia Giai đoạn và Sản xuất là "hoạt động (được ghi đè)" để phù hợp với chúng ['trạng thái'] = TRUE;,

Và Dev split vẫn "không hoạt động" mặc dù đã cài đặt ['trạng thái'] = TRUE;,

Bất cứ ý tưởng những gì đang xảy ra ở đây?

Điểm:1
lá cờ nr

Tôi đã thay đổi tên máy của các phần tách (ví dụ: dev_split) và mọi thứ hoạt động như mong đợi.

Vì vậy, vấn đề đã được gây ra bởi acquia/blt gói, trong đó sử dụng acquia/drupal-môi trường-phát hiện gói để đặt phân tách hoạt động dựa trên các biến môi trường Acquia.

Từ $_ENV['AH_SITE_ENVIRONMENT'] không được đặt, phân chia môi trường Cục bộ sẽ luôn hoạt động.

Tôi không chắc tại sao Dev split không thể được kích hoạt, nhưng điều đó có lẽ cũng liên quan.

Tôi có thể xóa hoàn toàn BLT khỏi dự án vì chúng tôi không sử dụng dịch vụ lưu trữ Acquia và do đó chúng tôi không còn sử dụng nó nhiều nữa, nhưng tôi đã miễn cưỡng thiết lập lại công cụ thử nghiệm tự động mà không có tất cả tính năng tốt của Robo.

Thay vào đó, tôi đã thực hiện acquia/blt một phụ thuộc nhà phát triển Composer để nó không được cài đặt trong môi trường cao hơn. Rõ ràng, điều đó là chưa đủ - nó vẫn gây rối với các phần tách cấu hình của tôi và có thể có các tác dụng phụ không thể đoán trước khác.

Cách khắc phục nhanh là thay đổi tên máy để tách. Có lẽ bỏ hoàn toàn BLT là một giải pháp tốt hơn về lâu dài.

Đã đóng (hoạt động như dự định)

Tái bút: Nếu dự án BLT của bạn được lưu trữ trên Acquia, thì tính năng phát hiện môi trường sẽ hoạt động chính xác và vấn đề này sẽ không phát sinh. Không có gì ngạc nhiên khi đây là một vấn đề hiếm gặp -- hầu hết mọi người có thể không sử dụng BLT bên ngoài môi trường của Acquia.

lá cờ za
Gần đây, tôi đã xử lý BLT và vâng, các cài đặt bao gồm (cùng với cài đặt Acquia) khiến nó khá khó hiểu. Ngoài ra, trừ khi bạn tạo trình phát hiện của riêng mình, chỉ có [dev, stage, prod, ci, ode, ah_other, local] - EnvironmentDetector#getEnvironments

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.