0

Rails初心者はこちら。

CPU、メモリ、ディスク使用量などのシステム統計を表示する Web アプリケーション ダッシュボードを作成しようとしています。

データベースは使用しないので、モデルは必要ないと思います。ビューとコントローラーを用意します。

/dashboard/sys_stats/CPU/load、/dashboard/sys_stats/CPU/utilization、/dashboard/sys_stats/memory/free などの URL パターンを念頭に置いています。

私は Rails にあまり触れていないので、controller#action が /controller/action という形式の URI にマップされることを知っています。私の質問は次のとおりです。

  1. 私のコントローラーとアクションは何ですか?
  2. コントローラーとアクションは URI で 2 レベル、つまり /controller/action のみを許可するため、上記のような長い URI を取得するにはどうすればよいですか。
  3. ある意味で、CPU とメモリの統計は私のモデルです。コントローラーで OS から CPU/メモリの統計情報を読み取り、モデルを作成しない、またはモデル クラスを作成するロジックが必要かどうかはわかりません。モデルはそれが属する場所だと思いますが、間違っている場合は修正してください。Rails モデルは DB に関連付けられているため、モデルに OS から読み取るロジックを含める方法がわかりません。
4

2 に答える 2

1
  1. たった 2 つの機能から、コントローラーがどうあるべきかを判断するのは困難です。cpu私には、統計のタイプ ( 、memoryなど) ごとに 1 つのコントローラーを用意し、特定の統計 ( など) ごとにそれぞれにアクションを用意するのが良い方法のように思えutilizationます。あなたのルートはこれに対する大きなヒントです-あなたが指摘したように、URLは通常コントローラー/アクションです(sys_statすべてのURLで本当に必要ですか?)-したがって、あなたがあなたのルートについてどのように考えてきたかから多くの情報を得ることができますルート。

  2. Rails では、カスタム ルートを作成できます。

http://guides.rubyonrails.org/routing.html

このようにして、任意のコントローラーとアクションへの任意のルート ポイントを持つことができます。たとえば、 controller 、 actionsを/dashboard/sys_stats/CPU/load指すには:memoryfree

match '/dashboard/sys_stats/memory/free' => 'memory#free'

もちろん、この方法でそれぞれを列挙するのは面倒です (ただし、より詳細に制御できます)。ルーティングのドキュメントを読んで、これをより効率的にする方法を確認できます。

  1. systemRuby でのシステム コールは、http : //ruby-doc.org/core-2.0/Kernel.htmlを通じて行われます。

モデルは必ずしも DB に関連付けられているわけではありませんが、一般的なルールは、太いモデル、痩せたコントローラーです。コントローラーに大量のロジックを入力していることに気付いた場合は、それをモデルに分解してください。ほんの数行の場合は、そのままにしておきます。コントローラーは、モデルとビューにリクエストを送信する必要があります。

それが役立つことを願っています!

于 2013-05-11T04:03:47.133 に答える