ルビー・オン・レール は素晴らしいオープンソースのフルスタック・ウェブ・アプリケーション・フレームワークで、設定よりも規約を重視する。. 通常アプリケーションの作成に使用される再利用可能で簡単に構成可能なコンポーネントを使用すると、Rails でのアプリケーションの構築がより迅速かつ簡単になり、その結果、生産性が向上し、ビジネスの成長がもたらされます。 柔軟でスケーラブルで、Web 開発者にとってアプリケーションの作成と保守が簡単であるため、開発者の間で注目を集めています。
ルビー・オン・レール Web アプリケーションを構築する際の作業負荷を軽減するために、既知のエンジニアリング パターンと原則を使用することに重点を置いています。 プログラミングの課題を解決する方法は複数ありますが、Ruby は一般的に使用されるパターンに依存して、Rails Web サイトの保守とアップグレードを容易にすると公言しています。 開発オーバーヘッドを削減するために、特定の問題を解決する小さな Rails コード ブロックを含むオープン ソース ライブラリが一般的に使用されます。 このようなコード ブロックを利用すると、開発者は同じ種類のコードを書くのに時間を費やすことなく、安定した十分にテストされた gem を挿入できます。 Ruby プログラマーのツールボックスの中で最も強力なツールの 1 つはモジュールです。 ルビー モジュール は、Rubyのクラス、メソッド、定数を、個別に命名・定義された単一のユニットにまとめるための構造を提供します。.
これは、既存のクラス、メソッド、定数との衝突を回避したり、モジュールの機能をクラスに追加 (混合) したりするのに役立ちます。
Rubyでモジュールを作成する
モジュールの作成はクラスの作成と似ていますが、classキーワードの代わりにmoduleキーワードを使う点が異なります。.
モジュール MyFirstModule
def say_hello
puts "こんにちは"
end
終わり
モジュールはインスタンス化できない。モジュールを使うには、クラス内でインクルードするか、モジュールを拡張する必要がある。.
インクルードとエクステンドの使用
- 含む
モジュールのメソッドをクラスのインスタンス・メソッドとして混ぜる。.
- 拡張
モジュールのメソッドをクラスのクラスメソッドとして混ぜる。.
例
モジュール ReusableModule
def module_method
puts "モジュールメソッド:こんにちは!"
end
終了
クラスClassThatIncludes
インクルードReusableModule
終了
クラスClassThatExtends
extend ReusableModule
エンド
puts "インクルード"
クラスThatIncludes.new.module_method
# => "モジュール・メソッド:こんにちは!"
puts "拡張"
クラス拡張.module_method
# => "モジュール・メソッド:こんにちは!"
Rubyのモジュールに関するその他の重要な概念
1.メソッド・ルックアップの基本
モジュール M
def report
モジュールMの'report'メソッド"
end
終了
クラス C
インクルード M
終了
クラス D < C
終了
obj = D.new
obj.report
出力:
'モジュールMの'report'メソッド
メソッド検索の仕組み
Rubyオブジェクトはメッセージ(メソッド呼び出し)を受け取ると、この順序でメソッドを検索する:
- オブジェクト・クラス(D)
- クラスに含まれるモジュール(D)
- スーパークラス (C)
- スーパークラスに含まれるモジュール (M)
- 継承の連鎖を続ける
この場合
- Dはレポートを定義していない
- Cはレポートを定義していない
- CはモジュールMを含む
- Mはreportを定義しているので、Rubyはそれを実行する。
2.同じメソッドを複数回定義する
メソッドが複数回定義されている場合は、最後の定義が優先されます。これはクラスとモジュールの両方に適用されます。.
モジュール InterestBearing
def 利子計算
puts "プレースホルダ!モジュール InterestBearing に入りました。"
end
終了
クラス BankAccount
include InterestBearing
def 利息を計算する
puts "プレースホルダ!BankAccountクラスにいます。"
puts "そして、calculate_interestメソッドをオーバーライドしています!"
終了
終了
account = BankAccount.new
account.calculate_interest
出力:
プレースホルダーここはBankAccountクラスです。.
そして、calculate_interestメソッドをオーバーライドしている!
クラス・メソッドはモジュール・メソッドをオーバーライドする。.
3.同じメソッド名で複数のRubyモジュールを混在させる
モジュール M
def report
モジュールMの'report'メソッド"
end
終了
モジュール N
def report
puts ''report" メソッドをモジュールNに追加"
end
終了
クラス C
インクルード M
インクルードN
終了
c = C.new
c.report
出力:
'モジュール N の 'report' メソッド
最後にインクルードされたモジュールが、メソッド検索パスで最初に表示されるからだ。.
4.Rubyモジュールを複数回インクルードする
クラスC インクルードM インクルードN インクルードM エンド c = C.new c.report
出力:
'モジュール N の 'report' メソッド
説明
モジュールを再インクルードしても、そのモジュールがすでにルックアップ・パスにある場合は何の効果もありません。Rubyはそれを再度先頭に移動させません。最後にインクルードされた新しいモジュール(N)が優先されます。.
5.Rubyモジュールでsuperを使う
superキーワードを使うと、メソッド・ルックアップ・チェーンの次のメソッドを呼び出すことができる。.
モジュール M
def report
モジュールMの'report'メソッド"
end
終了
クラス C
インクルード M
def report
puts ''クラスCのreportメソッド"
puts "次の上位のreportメソッドを起動しようとしています...'
スーパー
puts '「super」呼び出しから戻る。"
end
終了
c = C.new
c.report
出力:
'クラスCの'report'メソッド 次の上位のreportメソッドを起動しようとしている... モジュールMの'report'メソッド super'呼び出しから戻る。.
ここで起こること
- Rubyは最初にクラスCでレポートを実行する。
- superは、ルックアップ連鎖の次のレポート・メソッドを呼び出す(モジュールMから)。
- その後、コントロールはクラスメソッドに戻る。
レールカーマ は、初期段階から RoR に取り組んでおり、RoR の訓練を受けた強力な従業員とともに、Ruby on Rails のエンドツーエンドのコンサルティング、アーキテクチャ、構築、管理、拡張において世界中の企業に非常に信頼される企業に成長しました。
続きを読む :