Mastodonを読む
はじめに †
さて、確認環境ができたのでMastodon本体の読解に入ります。まずは、「http://mastodon.dev/」と「/」にアクセスしたときに何が行われるかについて見ていきましょう。
config/routes.rb †
というわけで、routes.rbを見て「/」にアクセスされたときにどのコントローラのどのメソッドが呼び出されるのかを確認します。ついでにroutes.rbに定義されているそれ以外のルーティングについても見ていきます。
認証周り †
まず目に入るのは以下の記述です。
1
2
3
4
5
6
|
| devise_for :users, path: 'auth', controllers: {
sessions: 'auth/sessions',
registrations: 'auth/registrations',
passwords: 'auth/passwords',
confirmations: 'auth/confirmations',
}
|
認証処理にはdeviseを使っていることがわかります。今回は、登録、ログインはできているものとしてdeviseの中身には踏み込まないことにします。
ユーザ周り †
次に目に入るのは以下の部分。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-
-
-
|
!
!
|
|
|
|
|
|
|
|
!
| get '/users/:username', to: redirect('/@%{username}'), constraints: { format: :html }
resources :accounts, path: 'users', only: [:show], param: :username do
resources :stream_entries, path: 'updates', only: [:show] do
member do
get :embed
end
end
get :remote_follow, to: 'remote_follow#new'
post :remote_follow, to: 'remote_follow#create'
resources :followers, only: [:index], controller: :follower_accounts
resources :following, only: [:index], controller: :following_accounts
resource :follow, only: [:create], controller: :account_follow
resource :unfollow, only: [:create], controller: :account_unfollow
end
get '/@:username', to: 'accounts#show', as: :short_account
get '/@:account_username/:id', to: 'statuses#show', as: :short_account_status
|
あるユーザについて、ユーザのホームを表示する、フォロワーを表示する、トゥートを表示するなどが定義されています。
フォロー関係、onlyで1メソッドしか指定しないのなら一つのコントローラにまとめてしまっていいような気がするのですが、将来拡張を考えてのことでしょうか。
って、確認のためにポチポチしてると画面全体再描画されてないのにURL切り替わりますね。そんなことできるんだっけ?turbolinksだとできたかな。
API周り †
ユーザ設定、サイト設定などのルーティングが続きますが飛ばします。
その後、APIと思われる記述があります。一部省略して載せると、
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| -
|
|
-
-
|
|
|
|
|
|
|
!
!
| namespace :api do
省略
namespace :v1 do
省略
get '/timelines/home', to: 'timelines#home', as: :home_timeline
get '/timelines/public', to: 'timelines#public', as: :public_timeline
get '/timelines/tag/:id', to: 'timelines#tag', as: :hashtag_timeline
省略
end
end
|
config.rb中でtimelineという単語が出ているのはここだけです。怪しい。
ルートとその他 †
残りのルーティングは以下になります。
1
2
3
4
5
6
7
|
| get '/web/(*any)', to: 'home#index', as: :web
get '/about', to: 'about#show'
get '/about/more', to: 'about#more'
get '/terms', to: 'about#terms'
root 'home#index'
|
というわけで、HomeControllerのindexメソッドが呼ばれる、ということのようです。
おわりに †
「/」がアクセスされたときにどのコントローラが呼ばれるかということでroutes.rbを見てきました。「/」が指定されたとき以外にもAPIに書かれているtimelineの記述など気になるものがありました。これらは今後読んでいくと明らかになっていくでしょう。