LoginSignup
1
3

More than 5 years have passed since last update.

RailsエンジニアがUnix周りの知識をつけるために勉強したときの話

Last updated at Posted at 2018-12-05

Railsアプリケーション開発をしてるとき、Railsプロセスが止まることってありますよね。
そのとき、呪文のようにkill -9 プロセスIDを実行している人っていませんか。

はい。僕です。理解しないでやるのはよくないのはわかってるけどやっちゃうよね。

背景

そもそもUNIX周りを勉強しようと思った背景としては、
RubyやRailsのコードはそれなりに書けるようになったけど、Railsエンジニアとしてキャリアを積むためには
まだまだ知らないといけないことってたくさんあるなって思ったからです。

例えば、Railsってなんでrails sしたらサーバが起動するの?とかUnicorn使ってるけどどうやって動いてるのよ。と業務で何か問題が起きない限りそこのコードをわざわざ辿ることが日常業務でなかったからです。

とはいえ、Railsアプリケーションを1人で運用することってざらにある話なので勉強したいなと。

忙しい人向けのやったこと目次

それではやってみた

ゆううきブログの「2015年Webサーバアーキテクチャ序論」を読む

読めない。わからない。
土地勘がなさすぎて読めない

という訳で挫折した結果。Rubyで学べるUnixプロセスからはじめようと。

「なるほどUnixプロセス ― Rubyで学ぶUnixの基礎」を読んでみた

内容がすごいわかりやすい。

分からなかった点を社内の人に聞いてみた

Q. なんでforkした際の子プロセスは、一番最初の行が読み込まれないんですか?
A. fork は fork したところから動くので3行目からしか動かないですね
イメージとしてはプログラムカウンタ(実際にいまどこを実行しているのか)というものまで全部子プロセスにコピーされる感じ
-> わかりやすい。実際にいまどこを実行しているのかまでコピーされるのか。

Q. rackがどのリクエストの階層でどんなことがわかるか全然分からないです。(web application firewall とか)
A. とりあえず hello world するやつと、pathが /secret だったら hello world する層までいかせないようなミドルウェアとか

別件 Rackで遊んでみた

具体的には 下記で遊んでみた

  - [x] Rackを動かす
  - [x] routingっぽいものの実装
  - [x] アクセスログっぽいものの実装

やってみて

普段使ってるRubyで学べたのがよかったのと、普段Railsアプリケーション運用する上で使ってるライブラリの挙動を知ることは大事だなと再認識しました。

Keepとして、今後も継続して勉強する予定で、
次のTryはrack_middleware周りを葬ってみようと思ってる。

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3