routes.rbを確認することで、「/」にアクセスしたときに実行されるのはHomeControllerのindexメソッドということがわかりました。それでは該当ファイルを確認してMastodonの処理を確認していきましょう。
というわけで、HomeControllerのindexメソッドを見てみましょう。
1
2
3
4
5
6
7
| - | | | | | ! |
|
うーん、シンプル。というかこれだけだと何もわかりません。ビューを見てみることにしましょう。
ビューはHAMLで書かれているようです。
1 2 3 4 5 6 |
|
・・・。HAML使ったことないので、「Hamlの書き方」を参考にすると、
「!=」ってなんだ。まあ雰囲気的にメソッド呼び出して結果を埋めこんでいるようですが。行頭じゃないとこう書くのかな。
なお、Ruby on Railsでは、views/layout/application.html.hamlに共通するレイアウトを書き、各コントローラのメソッドに対応するビューファイルにはパーツを書くということになっています。content_forを使うことで、・・・どう動いてるんだ?全体レイアウトの方にはyieldがシンボル指定ありとなしで書いてあるし、先に個別を動かして出力を取得しておいて後からyield呼ばれたときに対応するものをレンダリングしてるのか?Rails4読むの中断してしまったからわからん。まあそんな感じに動いてるんだろうということにしておきます(ぉぃ
home/initial_stateを見てみましょう。ちなみにこの部分はrenderメソッド呼び出し→対応するビューのファイルを読み込むという処理になっており、HTTPリクエストが送られているわけではありません。
対応するのはinitial_state.json.rablです。また別の言語・・・
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | - | | | | | | | | | | ! - | | | | ! - | | | | ! |
|
公式ページに書き方ガイドはありますが、それを参考にしても上のコードはあまり理解できないので、論より証拠と実際の出力を見てみましょう。(そのままは見にくいので改行を入れています)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
|
というわけで、
という動作をしているようです。このinitial_stateはReduxを使った画面表示の際に使われるのでしょう。
アカウントの情報取得するために部分テンプレートが呼ばれていますがまあ大体わかると思うので省略します。
さて、index.html.hamlに戻って、再掲、
1 2 3 4 5 6 |
|
bodyタグも含めた出力は以下の通り。
1 2 3 4 |
|
ここから先、長期戦が見込まれるので一旦ここまで。
というわけで、「/」にアクセスしたときに実行されるhome#indexを見てきました。現時点では出力されるHTMLとして空っぽの状態です。次回以降、React(とRedux)を使用したコードを読んでいくことで実際に目にしている画面がどのように作られているのか見ていきます。
感想として、ここまででHAML、RABLと二種類の言語(ひとつはRubyを使ったJSON出力のためのDSL)が出てきました。最先端の世界ではRuby/HTML/Javascriptを知ってるだけでは駄目で、より書きやすいものを求めて精進が必要なのだなぁと思いました。