(機械翻訳)Pyramid 1.2の新機能¶
この記事では、app: Pyramid`バージョン1.2の新機能を、app: Pyramid` 1.1と比較して説明します。また、Pyramid 1.2に追加された2つのバージョンと廃止予定の間の後方互換性や、ソフトウェア依存の変更や著しいドキュメントの追加についても説明しています。
主な機能の追加¶
Pyramid 1.2の主な機能の追加は次のとおりです。
デバッグツールバー¶
Pyramidに付属しているスキャフォールディングパッケージには、アプリケーションをインタラクティブにデバッグするために使用できるデバッグツールバーコンポーネントが含まれています。詳細は、:ref: `debug_toolbar`を参照してください。
`` route_prefix``含める引数¶
:meth: pyramid.config.Configurator.include`メソッドは `route_prefix``引数を受け付けるようになりました。この引数を使用すると、異なるパッケージからURLディスパッチアプリケーションを作成できます。詳細は、:ref: `route_prefix`を参照してください。
トゥイーンズ¶
A:term: tween`は、Pyramidルータの主なリクエスト処理関数をラップするために使用されます。これはPyramidフレームワーク拡張で、タイミングのサポートの表示などを提供する機能であり、簿記コードを置くのに便利な場所を提供することができます。 Tweensはterm: `WSGI:term:`ミドルウェア 'のようなものですが、レンダラやフル機能のリクエストオブジェクトなどのPyramid機能にアクセスできます。
この機能をサポートするために、新しいコンフィギュレータディレクティブ(meth: pyramid.config.Configurator.add_tween)が存在します。このディレクティブは"tween "を追加します。
Tweensについてはref: `registration_tweens`で詳しく説明しています。
新しいpasterコマンドが存在する: `` paster ptweens``。このコマンドは、アプリケーションの現在のトゥイーン設定を出力します。詳細は、ref: `displaying_tweens`を参照してください。
足場の変更¶
- すべての足場は、トランザクション管理を管理するために `` repoze.tm2``:term: middleware`ではなく `pyramid_tm``パッケージを使用します。
- ZODBスキャフォールドはZODB統合を提供するために `` repoze.zodbconn``パッケージではなく `` pyramid_zodbconn``パッケージを使用するようになりました。
- すべての足場は対話的なデバッグ機能を提供するために `` WebError``パッケージではなく `` pyramid_debugtoolbar``パッケージを使用します。
- 足場で作成されたプロジェクトは、 `` WebError``パッケージに全く依存しなくなりました。 `` error_catcher``:term: ミドルウェア`を必要とする ` production.ini``ファイルの設定が削除されました。エラー捕捉/電子メールの送信を設定することは、 `` pyramid_exclog``パッケージのドメインになりました(http://docs.pylonsproject.org/projects/pyramid_exclog/dev/を参照)。
- すべてのスカフォールドは `` cache_max_age``パラメータを `` add_static_view``メソッドに送ります。
マイナー機能追加¶
- ini設定ファイルの `` [pshell] ``セクションは `` setup``キーを、ブートストラップ環境に渡される呼び出し可能ファイルを指す点線の名前として扱うようになりました。 `` paster pshell``セッション中に必要に応じて環境を変更することができます。この機能については、ref: `writing_a_script`を参照してください。
- `` pyramid.includes``という名前の新しい設定が利用可能になりました。これは:ref: `including_packages`に記述されています。
- 設定を表示するために `` permission = ``文で使うための:data: pyramid.security.NO_PERMISSION_REQUIRED`定数を追加しました。この定数は文字列 ` __no_permission_required__``の値を持ちます。この文字列値は、以前はドキュメントで参照されていました。ドキュメントは定数を使用するようになりました。
- レスポンスアダプタ:: class: `pyramid.response.response_adapter`を設定するデコレータベースの方法を追加しました。このデコレータは、:meth: `pyramid.config.Configurator.add_response_adapter`と同じ用途を持ちますが、宣言的です。
- :class: pyramid.events.BeforeRender`イベントは、 `rendering_val``という名前の属性を持つようになりました。これは、BeforeRenderサブスクライバのビューによって返された値をイントロスペクションするために使用できます。
- Pyramidデバッグロガーは、標準のロギング設定を使用するようになりました(通常は、スタートアップの一部としてPasteで設定されます)。これは、例えば `` debug_notfound``、 `` debug_authorization``などからの出力が通常のロギングチャネルに行くことを意味します。デバッグロガーのロガー名は、コンフィグレータのコンストラクタの* caller *のパッケージ名になります。
- 新しい属性はリクエストオブジェクトで利用できます: `` exc_info``。 Pyramidルータが例外をキャッチするまで、その値は `` None``になります。その後、 `` sys.exc_info() ``の結果になります。
- :class: pyramid.testing.DummyRequest`は、class: pyramid.request.Request`によって実装された `` add_finished_callback``と `` add_response_callback``メソッドを実装しました。
- :class: pyramid.config.Configurator`クラスの新しいメソッド::meth:〜pyramid.config.Configurator.set_authentication_policy`と:meth: 〜pyramid.config.Configurator.set_authorization_policy。これらは、主に、セキュリティポリシーを登録するパッケージを提供したいアドオン作成者によって消費されることを意図しています。
- 新しいコンフィグレータメソッド::meth: pyramid.config.Configurator.set_root_factory:コンフィグレータが構築された後にルートファクトリを設定できます。
- Pyramidは、コンストラクタの引数として渡された値(例: `` authentication_policy``と `` authorization_policy``)が、以下のように取得された同じ設定を上書きすることを許可するterm: `Configurator`の構築時に、 meth: `pyramid.config.Configurator.include`メソッド。
- より良いMakoレンダリング例外。 Makoレンダリングで例外が発生すると、エラーの原因となったテンプレート行が表示されるようになりました。
- 新しい要求メソッド::meth: 〜pyramid.request.Request.current_route_url、:meth:〜pyramid.request.Request.current_route_path、:meth: 〜pyramid.request.Request.static_path。
- :mod: pyramid.url`モジュールの新しい機能::func:〜pyramid.url.current_route_path`と:func: `〜pyramid.url.static_path`です。
- :meth: pyramid.request.Request.static_url API(およびその兄弟:meth:` pyramid.request.Request.static_path`、:func: pyramid.url.static_url、:func:` pyramid.url .static_path`)は"path "引数として絶対ファイル名を受け入れるようになりました。これにより、ファイル名が以前に静的ビューとして登録されていたディレクトリにある限り、アセットへのURLが生成されます。以前は、絶対ファイルパスを使用してアセットへのURLを生成しようとすると、ValueErrorが発生しました。
- :class: 〜pyramid.authentication.RemoteUserAuthenticationPolicy、:class:〜pyramid.authentication.AuthTktAuthenticationPolicy、:class: 〜pyramid.authentication.SessionAuthenticationPolicy`コンストラクタは、 debug``というキーワード引数を追加できるようになりました。デフォルトでは、このキーワード引数は ` False``です。 `` True``の場合、これらのポリシーのいずれかで `` authenticated_userid``または `` effective_principals``メソッドが呼び出されると、デバッグ情報がPyramidデバッグロガー(通常はstderr)に送られます。生成された出力は、認証関連の問題を診断するときに役立ちます。
- 新しいビュー述語: `` match_param``。例: `` config.add_view(aview、match_param = 'action = edit') ``で追加されたビューは `` request.matchdict``の中に `` action``という名前の値がある場合にのみ呼び出されます。 `` edit``の値です。
- :meth: pyramid.config.Configurator.scan`の `onerror``キーワード引数をサポートしています。この引数は:meth: `venusian.Scanner.scan`に渡され、スキャン中に例外が発生したときのエラー動作に影響を与えます。
- :meth: pyramid.config.Configurator.add_view`と:meth: pyramid.config.Configurator.add_route`への `` request_method``述語引数は、HTTPメソッド名のタプルになりました。以前は、単一のHTTPメソッド名を表す文字列に限定されていました。
- 未使用の `` pyramid.traversal.find_model``、 `` pyramid.traversal.model_path``、 `` pyramid.traversal.model_path_tuple``、および `` pyramid.url.model_url``はPyramid 1.0で廃止されました。名前が変更された `` resource_ * ``接頭辞付き関数のエイリアスとして永遠に残すことは、それほどコストがかかりません。
- 未使用の `` pyramid.view.bfg_view``は、Pyramid 1.0で廃止されました。これは `` pyramid.view.view_config``への低コストのエイリアスです。これは永遠に残しておきます。
- ルートパターンの置換マーカー名はアンダースコアで始めることができます。 https://github.com/Pylons/pyramid/issues/276を参照してください。
廃止¶
- すべてのPyramid関連:term: デプロイメント設定`(例えば、 ` debug_all``、 `` debug_notfound``)に接頭辞 `` pyramid``が付くようになっています。例: `` debug_all`` - > `` pyramid.debug_all``です。古いプレフィックス設定は無期限に動作し続けますが、それらを指定すると非推奨警告が出力されることがあります。すべての足場とチュートリアルは、プレフィックス設定を使用するように変更されました。
- :term: デプロイメント設定`辞書は、 ` __getitem__``経由ではなく、 `` __getattr__``を介して値にアクセスしようとすると、非推奨警告を表示するようになりました。
後方の非互換性¶
文字列が `` debug_logger``パラメータとして:term: `Configurator`に渡された場合、その文字列はロガーのインスタンスへのドット付きの名前ではなく、グローバルなPythonのロガーの名前とみなされます。
:meth: pyramid.config.Configurator.include`メソッドは、単一の callable``引数だけを受け入れるようになりました。 callablesの* sequence *は許可されていました。 :meth: `pyramid.config.Configurator.include`に複数の `callable``を渡すと、それは中断されます。代わりに、各呼び出し可能メソッドのメソッドを別々に呼び出す必要があります。
"autocommitting ":term: `Configurator`を使用する場合、より厳密に構成経路とビュー文を順序付ける必要があります。以前は、自動コミット・コンフィグレータを使用したときに、その名前のルートを追加する前にルート名を指定したビューを追加することができました。例えば:
config = Configurator(autocommit=True) config.add_view('my.pkg.someview', route_name='foo') config.add_route('foo', '/foo')
ビューがそれ自身を追加しようとすると、上記の例外が発生します。ビューを追加する前にルートを追加する必要があります。
config = Configurator(autocommit=True) config.add_route('foo', '/foo') config.add_view('my.pkg.someview', route_name='foo')
これは普通のユーザーには影響を与えません。自動コミットのコンフィグレータを使ったレガシーBFGコードベースを持っていて、おそらくコンフィグレータAPIを使ったテスト(:func: `pyramid.testing.setUp`はautocommittingコンフィギュレータ)。これを回避する正しい方法は、デフォルトの非自動コミットコンフィギュレータを使用することです。これらのディレクティブの順序付け要件はありません。
config = Configurator() config.add_view('my.pkg.someview', route_name='foo') config.add_route('foo', '/foo') The above will work fine.
:meth: `pyramid.config.Configurator.add_route`指示文はルートオブジェクトを返さなくなりました。この変更は、ルートとビューの構成処理を適切に動作させるために必要でした。
行動の違い¶
- 静的ファイルを提供するときにETagヘッダーが設定されなくなりました。代わりにLast-Modifiedヘッダーが設定されます。
- 静的ファイルの提供は `` wsgi.file_wrapper``拡張子をサポートしなくなりました。
- ファイルアクセス権のためにPyramidプロセスのユーザがアクセスできない静的ファイルが提供されたときに `` 403 Forbidden``エラーを返す代わりに、IOError(または類似のもの)が発生します。
ドキュメントの機能拡張¶
- :mod: pyramid.url`パッケージの route_url`、` route_path`、` resource_url`、` static_url`、` `current_route_url``関数を使った説明やAPIのドキュメントは、代わりに要求の擬似的なメソッドを使用するように変更されました。
- "URL Dispatch " Narrative Documentationの章に:ref: `route_prefix`というセクションを追加しました。
- 新しいモジュールをAPI docs::mod: `pyramid.tweens`に追加しました。
- "Hooks " Narrativeの章にa:ref: `registration_tweens`セクションを追加しました。
- "コマンドラインピラミッド"の説明の章にa:ref: `displaying_tweens`セクションを追加しました。
- 環境変数と `` .ini``ファイル設定の章に:ref: explicit_tween_config`と:ref: including_packages`のドキュメントを追加しました。
- ナレーション文書にa:ref: `logging_chapter`の章を追加しました。
- すべてのチュートリアルでは、class: pyramid.request.Request`ではなく route_url`、` route_path`、` resource_url`、` static_url`、` current_route_url``のメソッドを使用しています。 ` pyramid.url``からインポートされた関数のバリエーションよりも優れています。
- ZODB wikiチュートリアルでは、 `` repoze.zodbconn``パッケージではなく `` pyramid_zodbconn``パッケージを使用して、ZODB統合を提供しています。
- 紹介:物語の章にref: `what_makes_pyramid_unique`を追加しました。