충분한 디버그 보호 / 개발자 모드 사용


18

일반적으로 라이브 시스템에서 원하지 않는 Magento 개발자를위한 멋진 확장 기능이 있습니다.

어떻게 프로젝트 저장소에 보관할 수 있지만 실제 상점에 노출되지 않도록 할 수 있습니까?

답변:


20

이를 위해 비교적 새로운 두 가지 기술이 있습니다.

  • modman을 사용 하면 각 환경에 배포 할 항목을 직접 제어 할 수 있습니다. 이것은 modman deploy [name-of-dev-extension]개발자 환경에서만 실행된다는 것을 의미 합니다.

  • 환경에 따라 시나리오가 다른 magento-composer 를 사용하십시오 composer.json. 더 쉬운 방법은 확장을 dev-modules로 지정한 다음 --require-dev개발 시스템 의 스위치를 사용하여 프로젝트를 설치하는 것 입니다.


1
+ modman에 대한 하나 :) 좋은 옵션
Toon Van Dooren

해당 환경 별 배포가 어떻게 보이는지 더 자세히 설명 할 수 있습니까? 배포 한 모듈 목록을 어디에 보관해야합니까? 일반적으로 모든 모듈의 폴더가 있으므로 다시 라이브와 개발을 분리해야합니다.
Alex

@ 알렉스 : 내 편집을 참조하십시오.
user487772

@ 팀 : 감사합니다! 나는 또한 당신의 대답을 편집했습니다.
Alex

@Alex : 감사합니다. 나는 이것을 몰랐다 :-)
user487772

10

그것들은 일반적으로 구성 플래그로 편리하게 비활성화 할 수 있으므로 기술적으로 활성이지만 아무것도하지 않습니다. app/etc/local.xml라이브 시스템 에서이 플래그를 false로 설정 하면 문제가 없습니다.


local.xml파일을 저장소에 보관하지 않으려는 경우 좋은 솔루션 입니다. 어떤 경우 일 수 있습니다.
user487772

큰 대답- local.xml일반적으로 repo에 없습니다
Alex

6

최근 베를린의 Magento Hackathon에서 만든 MageTrashApp 를 참조하십시오 . 관리자 패널을 통해 모듈을 비활성화 할 수 있습니다.


5

이를 수행하는 간단한 방법은 / etc / modules에서 모듈을 비활성화하고 밀어서 파일을 로컬에서 무시한 후 다시 활성화하는 것입니다.


이 경우 확장 부트 스트랩 파일 수정 (예 : 종속성 수정)으로 제한됩니다. 또한 다른 컴퓨터에서 말해 보자면 다시 한 번 그 트릭을 만들어야합니다. 여러 개발자 팀과 함께라면 더욱 불편할 수 있습니다.
user487772

파일을 로컬에서 무시하면 다른 개발자가해야 할 일은 다시 활성화하는 것입니다. 몇 초만 걸립니다.
Toon Van Dooren

권리. 그러나 그들은 다시 그것을 로컬로 무시해야합니다. 그리고 이것은 각 작업 복사본의 각 확장에 대한 것입니다. 귀하의 솔루션은 확실히 작동하지만 약간 불편하다는 것을 의미합니다.
user487772

사실, 난 그냥 내 위치에서 그것을 본 것 같아요, 나는 일반적으로 하나 또는 두 개의 개발 도구를 통합 :-)
Toon Van Dooren

3

이 문제를 처리하는 가장 좋은 방법은 해당 모듈을 모두 로컬 codePool에 유지하고 local.xml 의이 줄을 사용하여 모든 로컬 모듈을 활성화하지 않는 것입니다.

    <disable_local_modules>true</disable_local_modules>

또는 실제 환경의 백엔드에서 "모듈 출력 비활성화"를 수행 할 수 있습니다. (시스템-> 구성-> 고급). 그러나 이것이 모듈을 완전히 비활성화하지는 않습니다. 그러나 아마도 당신이 그것을 숨기고 싶어하기에 충분할 것입니다.

내가 생각할 수있는 유일한 다른 것은 이것을 풀 수있는 코드를 작성하는 것입니다. 개발자 모드 ( Mage::getIsDeveloperMode()) 인지 확인한 다음 모듈을 비활성화하십시오. /programming/6520634/magento-how-to-disable-module-programmatically에서 이것을 달성하는 방법에 대한 자세한 내용을 찾았습니다.


3 가지 솔루션 모두 충분하지 않습니다. local모듈을 비활성화 하면 다른 모든 모듈을 localcodePool 에서 다른 community확장 으로 이동 해야합니다. 당신이 말한대로 모듈 출력을 비활성화하면 확장이 상점을 느리게 실행할 수 있습니다. 그리고 세 번째 솔루션에는 확장 업데이트로 덮어 쓸 수정이 필요합니다.
user487772

2
@Tim 전적으로 동의합니다. 이를 처리하는 더 좋은 방법이 있어야하며, 개발 모드에있을 때 모듈을 비활성화 / 활성화하는 핵심 구성이 있어야합니다.
Rick Kuipers

3

나는 보통 테스트 환경에 넣었지만 .gitignore파일을 사용하여 커밋 대상에서 제외시키는 것과 같이 버전 관리 시스템에 체크인하지는 않는다 .


OP는 저장소에 확장을 유지하는 데 중점을 두었습니다.
user487772

1

Erik Hansen의 Imagine 2011 컨퍼런스에 슬라이드가 있습니다. 그는 슬라이드에 코드를 다음과 같이 언급했습니다 (개발자 모드의 경우)

# File : index.php
if(preg_match('/^stage\.|\.dev$/', $_SERVER['HTTP_HOST'])) {
   $_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
}

여기서 Erik은 사용자 정의 할 수있는 하위 도메인을 기반으로 설정을 활성화합니다.


이것은 개발을위한 모듈과 어떤 관련이 있습니까?
Bryan Ruiz

친애하는 @bryan_ruiz, Magento 시스템은 MAGE_IS_DEVELOPER_MODE의 활성화 여부를 확인합니다. Alan의 기사를 확인하십시오. 마 젠토 개발자 모드
Oğuz Çelikdemir

내가 말하는 것은 이것이 어떻게 질문과 관련이 있는지 이해하지 못한다는 것입니다. 개발자 모드는 사용중인 모듈을 활성화하거나 비활성화하지 않습니다.
Bryan Ruiz

내 의견에 지정한 바와 같이 Bryan은 요청에 따라 코드를 사용자 정의 할 수 있습니다. 물론 원시 아이디어는 요청에 맞지 않습니다. 예를 들어, 확장 프로그램을 작성한 경우 매개 변수에 의존하는 경우 위의 스 니펫을 확인하거나 제어 할 수 있습니다!
Oğuz Çelikdemir
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.