-
Rubyでのタイプチェック—YoSelfを破壊する前にYoSelfをチェックしてください
この投稿を楽しいちょっとした推測ゲームから始めましょう。RubyアプリケーションでAppSignalによって追跡される最も一般的なエラーは何だと思いますか? 多くの人がこの質問にNoMethodErrorで答えたと考えるのが妥当です。 、オブジェクトで存在しないメソッドを呼び出すことによって発生する例外。場合によっては、これはメソッド名のタイプミスが原因である可能性がありますが、多くの場合、間違ったタイプのオブジェクトでメソッドを呼び出した結果であり、予期しないnilであることがよくあります。 。このようなエラーの頻度を減らすために、Ruby開発者としてできることはありますか? 救助の種類は
-
Rubyの継承されたフックメソッド-そしてより多くの子育てのレッスン
こんにちは子供と両親、ええとルビー主義者。以前の記事では、祖先の連鎖について詳しく説明しました。今日の投稿では、子育てと継承について詳しく説明します。継承されたフックメソッドを調べ、継承の防止について調べます。 子供が101を継承する場合:継承されたフックメソッド 親子関係がどのように宣言されているかを見てみましょう。 Rubyは、クラスが別のクラスの親として宣言されている場合に、クラスと対話するための優れた方法を提供します。 class Parent def self.inherited(subclass) puts "#{subclass} inherits fro
-
Rubyテンプレート:インタプリタを焼く
今日は粘着性のあるストロープ(ストロープワッフルの2つの半分をくっつけるシロップ)で物を接着しているので、コーヒーの上にストロープワッフルを温めてください。シリーズの最初の2つのパートでは、レクサーとパーサーを焼きました。現在は、インタープリターを追加し、それらの上にストループを注いで物を接着しています。 材料 大丈夫!キッチンを焼く準備をして、材料をテーブルに置きましょう。私たちの通訳者は、その仕事をするために2つの要素または情報を必要とします。以前に生成された抽象構文木(AST)と、テンプレートに埋め込みたいデータです。このデータをenvironmentと呼びます 。 ASTをトラバー
-
Sidekiqの最適化と監視
Sidekiqの最適化または監視についてよく質問があります。モニタリングは一種のゲームですが、Sidekiqのパフォーマンスを最適化することはまったく別の球技です。実際には、最適化は複雑ですが、一見単純な答えから始めましょう... 速度を上げる2つの方法 まず、速度を上げるには2つの方法があります。1つはより大きなジョブ(より多くのメモリまたはIOを使用するか、より複雑になる可能性があります)を実行する方法、もう1つは同時実行設定またはワーカーを調整する(より多くのCPUと場合によってはIOを使用する)方法です。痛い、現実はすでに始まっています:スピードは犠牲になります。追加のメモリ、IO
-
構成可能なRubyモジュール:モジュールビルダーパターン
この投稿では、コードのユーザーが構成できるRubyモジュールを作成する方法について説明します。これは、gemの作成者がライブラリに柔軟性を追加できるようにするパターンです。 ほとんどのRuby開発者は、モジュールを使用して動作を共有することに精通しています。結局のところ、ドキュメントによると、これは彼らの主なユースケースの1つです: モジュールは、Rubyで名前空間とミックスイン機能の2つの目的を果たします。 Railsは、ActiveSupport::Concernの形式でいくつかのシンタックスシュガーを追加しました 、ただし、一般的な原則は同じです。 問題 モジュールを使用して
-
2019年のAppSignalブログ投稿トップ10
こんにちは、ストロープワッフルファンです👋 今後2020年にRuby、Elixir、JavaScriptの投稿をさらに公開することを楽しみにしているので、Twitterで最も心を込めてブログを読んだブログ投稿を振り返ることにしました。 2019年に最も感謝しています。 1。 JavaScriptエラー:例外的な歴史✨ JavaScriptの起源と激動の年を経て、JavaScriptが現在の言語に成長するのを見てください。 2。 PhoenixLiveViewを使用したGoゲームの構築とプレイ⚗️ このエリクサーシリーズでは、囲碁ゲームを作成してプレイしました。最初の部分はすべてPhoe
-
RubyonRailsアプリケーションでstructure.sqlを使用することの長所と短所
今日の投稿では、structure.sqlを使用することの重要な違いと利点について説明します。 対デフォルトのschema.rb RubyonRailsアプリケーションのスキーマ形式。データ主導の世界では、データベースの豊富な機能をすべて活用する方法を知っていると、成功する企業と失敗する企業の違いが生まれます。 2つの形式の主な違いを理解した後、structure.sqlに切り替える方法の概要を説明します。 また、データの整合性と、他の方法では保持できない可能性のあるデータベース機能の確保にどのように役立つかを示します。 投稿では、structure.sqlを利用するRailsアプリの例を
-
Railsは高速です:ビューのパフォーマンスを最適化する
この投稿では、Railsビューのパフォーマンスを改善するための実証済みの実際の方法について説明します。具体的には、データベースの効率、ビューの操作、およびキャッシュに焦点を当てます。 「時期尚早の最適化はすべての悪の根源である」というフレーズは、文脈から少し外れていると思います。単純な最適化手法が指摘されている場合、開発者がコードレビュー中にこれを使用するのをよく耳にします。有名な「動作させてから最適化する」、つまりテストしてからデバッグしてから、もう一度テストするなどのことをご存知でしょう。 ありがたいことに、コードを書き始めた瞬間から使用できる、シンプルで効果的なパフォーマンスと最適化
-
Minitestを使用したRailsでのシステムテストの開始
今日の投稿では、Rails 6のシステムテストについて説明します。システムテストは、ユーザーインターフェイスのJavascriptを含め、ユーザーがアプリケーションを操作する方法を自動テストすることを目的としています。 RailsのデフォルトのテストフレームワークであるMinitestは、システムテストに最適です。 Railsが処理するすべての構成により、最初のテストを開始して実行する前に必要な手順はわずかです。 Rails5.1のRailsスタックにシステムテストが追加されました。座って使い始めたとき、RSpecに関するものではない、関連性のある最新の情報を収集するのは難しいと感じました。
-
複数のサブドメインを使用したRailsアプリの構築
今日の投稿では、複数のサブドメインをサポートできるRailsアプリを構築する方法を学びます。ゲームのウェブサイトfunkygames.coがあるとしましょう。 app.funkygames.coなどの複数のサブドメインをサポートしたい 、api.funkygames.co 、およびdev.funkygames.co 単一のRailsアプリケーションで。すべてのサブドメインに対して適切な認証が実行され、重複するルートがないことを確認する必要があります。 Railsの強力なルーティング構造を使用して、アプリケーションで複数のサブドメインをサポートします。また、ローカルでサブドメインを設定し、複数
-
パフォーマンスと保守性のためのレールのファサードパターン
今日の投稿では、Facadeと呼ばれるソフトウェアデザインパターンを調べます。最初に採用したときは少し違和感がありましたが、Railsアプリで使用すればするほど、その有用性を高く評価するようになりました。さらに重要なことに、コードをより徹底的にテストし、コントローラーをクリーンアップし、ビュー内のロジックを減らし、アプリケーションのコードの全体的な構造についてより明確に考えることができました。 ソフトウェア開発パターンであるため、ファサードはフレームワークに依存しませんが、ここで提供する例はRubyonRails用です。ただし、使用しているフレームワークに関係なく、この記事を読んで試してみる
-
TracePointを使用したRubyでのデバッグへのアプローチの変更
Rubyは、開発者にもたらす生産性で常に知られています。洗練された構文、豊富なメタプログラミングサポートなど、コードを書くときに生産性を高める機能に加えて、TracePointと呼ばれる別の秘密兵器もあります。 これにより、「デバッグ」を高速化できます。 この投稿では、簡単な例を使用して、デバッグについて見つけた2つの興味深い事実を示します。 ほとんどの場合、バグ自体を見つけるのは難しいことではありませんが、プログラムがどのように機能するかを詳細に理解することは難しいことではありません。これを深く理解すると、通常はすぐにバグを見つけることができます。 メソッド呼び出しレベルまでプログラムを
-
AppSignalのシタデルアーキテクチャ
DHHは、「シタデル」という用語を作り出しました。これは、AppSignalでテクノロジーにアプローチする方法を参照するための優れた方法を最終的に提供します。 「ねえ、これは私たちです!私たちのものには今名前があります」と言いました。 マジェスティックモノリスに加えて、誰かがシタデルのパターンを書く必要があります:単一のマジェスティックMonolithはアプリの大部分をキャプチャし、高度に専門化された多様なニーズに対応するいくつかの補助的な前哨アプリを備えています。 — DHH(@dhh)2020年4月7日 AppSignalがCitadelパターンをどのように使用するかを説明するために、
-
Railsの移行を分析する
今日の投稿では、Railsの移行について詳しく説明します。移行をさまざまな部分に分解し、その過程で、効果的な移行を作成する方法を学びます。複数のデータベースの移行を作成する方法、失敗した移行を処理する方法、およびロールバックを実行する手法について学習します。 投稿全体を理解するには、データベースとRailsの基本を理解している必要があります。 移行101 Railsでの移行により、アプリケーションの存続期間にわたってデータベースを進化させることができます。移行により、エレガントなDSLを提供することにより、データベースの状態を変更するためのプレーンなRubyコードを記述できます。移行により
-
RubyonRailsでのサービスオブジェクトの使用
この記事は、Playbook39の元の外観から変更されています-最小限のツールでインタラクティブなWebアプリを出荷するためのガイド 、AppSignalのこのゲスト投稿に合うように調整されています。 アプリが処理する必要のある機能はたくさんありますが、そのロジックは必ずしもコントローラーやモデルに属しているとは限りません。たとえば、カートでのチェックアウト、サイトへの登録、サブスクリプションの開始などがあります。 このすべてのロジックをコントローラーに含めることもできますが、繰り返し続けて、それらすべての場所で同じロジックを呼び出します。ロジックをモデルに入れることもできますが、IPア
-
AppSignalメトリクスを使用してキューワーカーを効率的にスケーリングする
ほとんどのウェブアプリは、エラーが発生しやすい、または時間のかかるサイドジョブの処理によく使用されるバックグラウンドキューの恩恵を受けることができます。これらのバックグラウンドジョブは、メールの送信、キャッシュの更新、コアビジネスロジックの実行などさまざまです。 バックグラウンドキューイングシステムは処理する必要のあるジョブの数をスケーリングするため、それらのジョブを処理するワーカーのプールもスケーリングする必要があります。キューに入れられるジョブの割合が異なる場合、キューワーカーの数をスケールアップすることが重要な側面になります。さらに、キューのスループットが低いときにワーカーを縮小すると
-
RubyonRailsのパターンとアンチパターンの概要
RubyonRailsのパターンとアンチパターンに関するシリーズの最初の投稿へようこそ。それぞれの投稿では、Railsアプリの操作中に遭遇する可能性のあるあらゆる種類のパターンについて詳しく説明します。 今日は、(デザイン)パターンとは何かを示してから、アンチパターンとは何かについても説明します。説明をわかりやすく説明するために、かなり前から存在しているRubyonRailsフレームワークを使用します。 Railsが何らかの理由であなたのお茶ではない場合は、しばらくお待ちください。ここで説明するアイデア(またはパターン)は、最終的に使用するテクノロジーに共鳴する可能性があります。 しかし、
-
Railsの懸念事項:懸念するかどうか
Ruby on Railsを使用したことがある場合は、おそらく懸念事項の概念に出くわしたことでしょう。新しいRailsプロジェクトをジャンプスタートするたびに、ディレクトリ app / controllers / concernsを取得します。 およびapp/ models / concerns 。しかし、何が懸念されますか?そして、なぜRailsコミュニティの人々は時々彼らについてひどく話すのですか? 概要 Rails Concernは、 ActiveSupport ::Concernを拡張するモジュールです。 モジュール。あなたは尋ねるかもしれません—懸念はモジュールとどのように違うの
-
StatsDとAppSignalのスタンドアロンエージェントを使用したシステムの監視
アプリケーションを監視するだけでは、システムの全体像を把握するのに必ずしも十分ではありません。多くの場合、衛星アプリ(またはサポートアプリ)で実行されているサービスは、日常業務に深刻な影響を与える可能性があります。データベースサーバーは、このよく知られた例です。バックアップスクリプトやその他のバックグラウンドジョブもシステムの速度を低下させる可能性があり、見過ごされがちです。 Node.js用のAppSignalAPM、およびRubyAPMとElixirAPMは、アプリ自体を自動的にインストルメント化します。ただし、AppSignalは、デフォルトではこれらの衛星プロセスを監視しません。あら
-
名前空間を使用したモノリシックアプリケーションでの監視データの構造化
名前空間とは何ですか? AppSignalで監視されているアプリケーションで発生することはすべて、名前空間の下に記録されます。名前空間は、フォルダのように機能し、イベント、問題をグループ化し、データを管理可能なチャンクに監視します。 デフォルトでは、すべてのアプリケーションは3つのデフォルトの名前空間で始まります:web 、background 、およびfrontend 。 Web名前空間はすべてのHTTPリクエストを保持します。 RailsやSinatraなどのMVC指向のフレームワークでは、これにはコントローラーアクションが含まれます。 バックグラウンド名前空間は、バックグラウンドジ