問題タブ [trailblazer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
trailblazer - Paperdragon を使用した Trailblazer Operation は、どのようにして画像を順次処理できますか?
Paperdragon を使用して画像を処理する Trailblazer 操作では、次のようなコードが一般的です。
これにより、アップロードされた画像から 4 つのバージョンが作成さupload
れ、操作の契約に従ってアクセス可能になります。
、およびのベースラインとして使用するために、いくつかのことを:original
行いたいと思います。Paperdragon でそれを実現するにはどうすればよいですか?:edited
:edited
:verson_a
:version_b
:version_c
ruby-on-rails - 外部 gem とやり取りする Trailblazer 操作をテスト/モックする方法は?
Trailblazer のオブジェクト指向のすべての美しさが大好きです。
ジェム ( と呼ばれる) と対話してcpanel_deployer
、Web 上で外部から何かを行う操作があります。(アドオン ドメインを cpanel に追加します。)
gem は既にテスト済みなので、cpanel_deloyer
ここで機能を再テストする必要はありません。CpanelDeployer::Panel#add_domain
しかし、操作をテストするために、正しい引数で呼び出されることを確認したいと思います。だから私は嘲笑すべきだと思っていCpanelDeployer::Panel
ます。
を使用しようとするのは悪い習慣だと思いますany_instance_of
。思考ボットによると、通常はコードの匂いと考えられています...彼らは依存性注入の使用を推奨しています。Trailblazer 操作内で依存性注入を使用する良い方法はありますか? この種の状況に対する別のベスト プラクティスはありますか?
trailblazer - 継承された Trailblazer オペレーションのコントラクトは、そのスーパークラスによって定義された検証を変更できますか?
Trailblazer操作が継承によって定義されると、そのスーパークラスのコントラクトが継承されます。
継承された Trailblazer 操作のコントラクトは、そのスーパークラスによって定義された検証を変更できますか?
この疑問が生じたのは、作成操作のコントラクトが、更新操作でオプションにする必要がある必須プロパティを定義したためです。
最初の考えは、継承されたクラスでこの定義を何らかの形で逆にすることでしたが、これを行う方法はないようでした(サブクラスのプロパティを無視するwriteable:false
ことは可能です( - book p61)が、方法がないようですその妥当性基準を変更します)。
ruby-on-rails - サーバーの実行中に Rails コードを変更すると、Trailblazer 操作でクラスからのスーパークラスの不一致エラーが発生する
Trailblazer
Rails で gem を使用していますが、サーバーの実行中にコードを変更するたびに、エラーをスローし始める操作Cell
の 1 つにクラスがあります。Trailblazer
superclass mismatch
サーバーを起動してすぐにサイトのナビゲートを開始すると、すべて正常に動作します。
ただし、サーバーの起動後にコードを変更して、サイトにページをロードしようとすると、superclass mismatch
エラーが発生します。
trailblazer - Trailblazer の概念を別の概念から継承して、その操作を拡張できますか (多重継承)?
Tag
さまざまな種類のタグが存在する抽象的な概念を考えてみましょうTopic
。Location
タグであること以外は無関係です。これらは共通の基本Tag
プロパティを持ちますが、それ以外は異なります。
コンセプトは類似のコンセプトTopic
に基づいていTag
ます。のような操作Topic::Update
は通常 から継承しTopic::Create
ますが、そのような操作も から継承する必要がありますTag::Update
。Ruby は多重継承をサポートしていません。Trailblazer はこれをサポートできますか?
Trailblazer の操作は、提供されたハッシュ
builds
の内容に基づいてサブクラスをインスタンス化できるブロックによる継承をサポートします。params
これは、基本クラス (Tag
) が公開されており、基本クラスを介して操作が呼び出される場合に機能します。ただし、この例では、公開クラスはTopic
サブクラスです。操作はサブクラス ( ) を介して呼び出す必要があります
Topic
が、その操作は共通のTag
基本クラス (リバース ビルダー?) に基づいています。
これは、単一の継承によって実現できる 1 つの方法です (ただし、このアプローチの欠点を示しています)...
各タイプのタグは独自のデータベース テーブルに格納され、次のような ActiveRecord クラスがあります。
Trailblazer の概念は同様の設計に従います。Tag
操作は基本機能を提供し、より具体的な操作によってサブクラス化されます ( Topic
)。Tag
操作は直接使用されません。Topic
たとえば、コントローラーがTopic
操作を使用します。
操作はTopic
から継承しますが、各操作内でのみ可能と思われるTag
独自のモデルを指定する必要があり、それぞれを明示的にサブクラス化する必要があります。Topic
これに関する問題は、基本操作で定義されているコントラクトが、それを aTag
ではなく a であるTopic
と見なし、モデルとして使用される場合に問題が発生することです。これがどこに問題があるかを示す例は、セルのビューにTopic
あります。概念には、オブジェクトを操作するためのビューを提示するセルがあります。simple_form_for
次のように、を使用してフォームをレンダリングします。
コントラクトはそれTag
を
- そのパラメータは
params[:tag]
代わりにとして送信されますparams[:topic]
- 送信ボタンのラベルはCreate TopicではなくCreate Tagです。
operation.model
送信された操作が失敗した後にレンダリングするときにフォームエラーが表示されないため、セルは使用できません(それ以外の場合は機能します)。
これを解決する方法は、次のように明示することsimple_form_for
です。
プロパティを に追加する場合、コントラクトTopic
を拡張する必要があるため、別の問題が発生します。Tag
これを行う通常の方法はcontract do..end
、操作にブロックを追加することTopic::Create
です。問題が発生するのは、そのようなブロックが および からではなく対応するブロックから継承さTopic::Update
れてTopic::Delete
いるためです。Tag
Topic::Create
別の方法は、サブクラス化されたTopic::Update
操作を から継承することTopic::Create
です。これにより、モデルを指定する必要がなくなりますが (指定するため)、操作Topic::Create
によって追加されたものはすべて失われます。Tag::Update
は継承されていないため再指定する必要がありますが、 は継承されているため、action
で追加されたプロパティは で使用できます。Tag::Update
Topic::Create
Topic::Create
Topic::Update
これらのスタイルはどちらも、変更が 1 つの基本クラスのみにある限り機能します。Rubyは多重継承をサポートしていないため、両方に変更があると壊れます。Delete
通常は次のような操作を考えてみましょう。
もしそうなら、どちらかである可能性がありTag::Delete
ますTopic::Delete
また
前者の場合、Topic::Delete
は によって追加されたプロパティを認識せずTopic::Create
、後者の場合は で定義されたメソッドTopic::Delete
を欠いています。process
Tag::Delete
Trailblazer の概念が別の概念を継承し、その操作を拡張するにはどうすればよいでしょうか?
ruby-on-rails - Trailblazer Rails React - .jsx から「concep」を呼び出すにはどうすればよいですか?
.JSX 内で呼び出したい
、同じJSXでビューフォームを表示するにはどうすればよいですか? JSX 内で Rail を使用することはできないと思います。ありがとう!
前もって感謝します!
ruby-on-rails - 改革: ドライ検証マッチャー
Reformベースのフォーム オブジェクトの検証をテストする便利な方法を探しています。
dry-validationsをテストするためのマッチャー (ActiveModel::Validations をテストするための shoulda マッチャーなど) はありますか? これは進むべき道ですか?