Edited at

Railsのだいたい。ActiveHogeとかActionPageとか

More than 1 year has passed since last update.


はじめに

こちらの記事はRuby on Railsのおおよその機能復習用の記事です。ActiveHogeとかActionPageとか、そのへんの内容を、大まかにまとめてます。


Rails ver...

Ruby on Rails 5.2


ActionHoge, ActivePage一覧

・ActiveRecord

・ActiveModel

・ActionController

・ActionMailer

・ActionView(erb, slim, haml )

・ActionDispatch

・ActiveJob

・ActionCable(new!)

・ActiveSupport

・ActiveStorage(new!)

、、、


RailsMVCにおけるActiveHoge, ActionPage


Model


  • ActiveRecord::Base


    • 基本的なデータベースを操作するModelClassのおじいちゃん



  • ApplicationRecord < ActiveRecord::Base


    • ActiveRecord::Baseを親に持ち、各ModelClassを子に持つ。みんなのお父さん。



  • ActiveModel::Model


    • Hoge::Page < ActiveModel::Model等で定義。Hogeに対して, moduleであるActiveModelをHoge::Page(Hogeの細かな動作)に継承する事により、Hogeに対する細かな操作を分離する実装が出来る。moduleで定義したりも

    • 二重コロンに関して参照: https://qiita.com/ktarow/items/772014a4f0d48905f3ef




Controller


  • ActionController::Base


    • controller全員のおばあちゃん



  • ApplicationController < ActionController::Base


    • ActionController::Baseを親に持ち、多くは各Model毎のコントローラを子に持つ。みんなのお母さん。



  • ActionMailer::Base


    • Mailerのおばあちゃん



  • ApplicationMailer < ActionMailer::Base


    • ActionMailer::Baseを親に持ち、Mailerそれぞれのclassを子に持つお母さん。Modelでの処理に対して適切な子Mailerの該当メソッドを呼び出し、メールを送ったりする。




View


  • ActionView(erb, slim, haml )


    • 同じ名前のコントローラディレクトリにdefaultでは配置される。コントローラのメソッドはdefaultで各viewに対してのrenderをしており、用途により(api使用など)render json: {}等で対応する。

    • erb, slim, haml等のテンプレートエンジンにより、railsが用意している便利なメソッド達とhtml, cssを上手く組み合わせることが出来る。

    • 最近では、viewを使わずコントローラを完全なapiとして、vueやreact等のjsでフロントを構成する事が多い。簡単なCMSではviewを使うのが良いだろう。組み合わせることも可能である。




その他


  • ActionDispatch


    • config/route.rbにrouteを記載することにより、コントローラのルートをいい感じにしてくれる、、、だと、、、思う、、、多分他にもいっぱい、、なにか、、してる、、、求む、、、知識、、、



  • ActiveJob


    • バックグラウンドで勝手に処理してほしいことをjobとしてキューに登録することが出来る。



  • ActionCable (new!)


    • WebSocketとRailsをいい感じにしてくれる。チャット等が実装しやすくなった。Pub, Sub, Channelの考え方でいい感じにしてくれる。いい感じに、、、、



  • ActiveSupport


    • includeしてmodule化して、modelやらの拡張機能を追加する時に便利なクラス。部分的に機能をrequireしてつかったりもしたり。いろんなメソッドに対して様々な拡張機能を持っている。modelが肥大化したりした時にmoduleに切り分ける時などに



  • ActiveStorage (new!)


    • ファイルの保存先をいい感じに設定できる機能
      config/storage.ymlに使用するストレージの情報を登録して、モデルの該当カラムにhas_OO_attachedを宣言することにより、使用可能。

    • 可能ストレージ

    • ・ローカルディスク

    • ・Amazon S3

    • ・Google Cloud Storage

    • ・Azure Storage

    • ・Mirror Service




終わりに

大まかな概要しかつかめていません。ActiveSupportやActiveModel等の使いこなしは、実務で培って行きたいと思っております。また、ActionCableやActiveStorage等、新しい魅力的な機能も出てきたので、そこら辺を使ったサンプル等も、今後作ってQiitaでまとめられたら良いなと思います。間違ってる点はガンガン教えて頂けましたら幸いです。