デバッグ拡張機能/開発者モードの十分な保護の使用


18

Magento開発者向けの便利な拡張機能がいくつかありますが、これらは通常、ライブシステムには持ちたくないものです。

それらをプロジェクトリポジトリに保持しながら、ライブショップで公開されないようにするにはどうすればよいですか?

回答:


20

それを行うには、比較的新しい2つの手法があります。

  • modmanを使用して、各環境に何をデプロイするかを自分で制御できるようにします。これはmodman deploy [name-of-dev-extension]、開発環境でのみ実行することを意味します。

  • 環境ごとに異なるシナリオでmagento-composerを使用しcomposer.jsonます。さらに簡単な方法は、これらの拡張機能を--require-dev開発モジュールとして指定し、開発マシンのスイッチを使用してプロジェクトをインストールすることです。


1
+ modmanを参照するための1つ:)素敵なオプション
Toon Van Dooren

その環境固有の展開がどのように見えるかについて詳しく説明できますか?デプロイするモジュールのリストはどこに保存するのですか?通常、すべてのモジュールのフォルダーがあります。したがって、ライブと開発を分離する必要があります。
アレックス

@アレックス:私の編集をご覧ください。
user487772

@ティム:ありがとう!私もあなたの答えを編集しました。
アレックス

@アレックス:ありがとう。私はこれを知りませんでした:
user487772

10

これらは通常、構成フラグで簡単に無効にできるため、技術的にはアクティブですが、何もしていません。app/etc/local.xmlライブシステムでこのフラグをfalseに設定した場合は、問題ありません。


これは、local.xmlレポジトリにファイルを保持する場合を除き、適切なソリューションです。それはケースかもしれません。
user487772

偉大な答え- local.xml通常レポにありません
アレックス


5

これを行う簡単な方法は、/ etc / modules内のモジュールを無効にしてプッシュし、ローカルでファイルを無視してから再度有効にすることです。


この場合、拡張ブートストラップファイルの変更(たとえば、依存関係の変更)が制限されます。また、他のマシンでチェックアウトする場合は、これらのトリックをもう一度行う必要があります。複数の開発者からなるチームにとってはさらに不便かもしれません。
user487772

ファイルをローカルで無視する場合、他の開発者がしなければならないことは、再度有効にすることだけです。これには数秒しかかかりません。
トゥーンヴァンドーレン

正しい。しかし、彼らは再びそれをローカルで無視しなければなりません。そして、これは各作業コピーの各拡張子用です。ソリューションは間違いなく機能しますが、少し不便です。
user487772

本当、私は自分の立場から見ただけだと思います。通常は1つまたは2つの開発ツールのみを統合します:-)
Toon Van Dooren

3

これに対処する最善の方法は、これらのモジュールをすべてローカルcodePoolに保持し、local.xmlの次の行ですべてのローカルモジュールをライブで無効にすることです。

    <disable_local_modules>true</disable_local_modules>

または、ライブ環境のバックエンドで「モジュール出力を無効にする」こともできます。(システム->構成->詳細)。ただし、これによりモジュールが完全に無効になるわけではありません。しかし、多分それはあなたがそれを隠したいのに十分なだけです。

私が考えることができる他の唯一のものは、これを実行できるコードを書くことです。開発者モード(Mage::getIsDeveloperMode())であるかどうかを確認し、モジュールを無効にします。ここでこれを達成するための詳細をいくつか見つけました:https : //stackoverflow.com/questions/6520634/magento-how-to-disable-module-programmatically


3つのソリューションはすべて十分ではありません。localモジュールを無効にすると、他のすべてのモジュールをlocalcodePool から移動しcommunity、将来のすべての拡張機能に対しても強制的に移動します。あなたが言ったようにモジュール出力を無効にすると、拡張機能が実行されてストアが遅くなります。また、3番目のソリューションでは、拡張機能の更新で上書きされる変更が必要になります。
user487772

2
@Tim絶対に同意します。これに対処するより良い方法があるはずです。開発モードでは、モジュールを無効化/有効化するコア構成が必要です。
リックカイパーズ

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様、MagentoシステムはMAGE_IS_DEVELOPER_MODEがアクティブかどうかをチェックします。アランの記事を確認してください。Magentoの開発者モード
OGUZÇelikdemir

私が言っていることは、これが質問にどのように関係するか理解していないということです。開発者モードは、使用しているモジュールを有効または無効にしません。
ブライアンルイス

ブライアン、コメントで指定したように、リクエストとしてコードをカスタマイズできます。もちろん、生のアイデアは要求に合いません。たとえば、拡張機能をパラメータに依存して記述した場合、上記のスニペットを確認または制御できます!
オグズチェリクデミル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.