RubyとかNode.jsとかに関するメモ
今のところ自分でRubyを書くことはないけどMastodonの管理でRubyやNode.jsのインストールをすることが多いので整理。
Ruby
スクリプト言語。スクリプト言語なので実行環境でもある。拡張子rbのテキストファイルを読み込んで結果を出力する。Ruby自体をインストールする必要があるので基本的にはサーバー側で動く。アプリの開発、配布には不向きと考えられる。とは言えRubyで書かれたソースコードからバイナリデータ(=アプリ)を作成しストアで配布することも出来る模様。
rbenv
Rubyはdnfでもインストールできるがdnfはバージョンの更新が遅いのとRuby自体バージョン毎に差があるので複数バージョンを持てるようにしたほうがいいらしい。rbenvはRubyのバージョン管理ツール。rbenvを使ってRubyをインストールすることで複数のバージョンのRubyを使う事が出来るらしい。
gem
Rubyのパッケージとしてのgemをパッケージ管理システムとしてのgemがあるけど後者は最近はあまり使用されないので放置。Ruby自体がテキストファイルなので例えるならzipか?そもそもパッケージとは何?まあ、いくつかの処理を纏めたもの。例えば画面に四角を描くにしても線の太さや色、塗りつぶしの色等、様々なことを書かなくてはならない(実際のRubyがどうなってるかは知らん)。そういうのを纏めてこのサイズの四角を何色で描けと指定するだけでやってくれるようなもの、考えればいいかな。パーツ、部品と言ってもいいかな。
bundler
gemの管理システム。一つのシステムを作るときに複数のgem(部品、パーツ)を使用するけどそれらにもバージョンがあり組み合わせるにはバージョンを意識する必要がある。bundlerはそのあたりを管理するシステム。
Rails
Ruby用のフレームワーク。フレームワークって何?まあテンプレートのようなものと考えておけばOK。掲示板ようのフレームワーク、ブログ用のフレームワークとかまでは細分化されていなくてWebアプリケーション用のフレームワークといったところかな?他のものだと例えばWordPress。あれは言語がphp←→Ruby、フレームワークがWordPress←→Railsみたいな感じ。その中に更にテンプレートがある。まあテンプレートの2段重ね。プラグイン←→gemと考えてもいいかな?ちなみにRuby用のフレームワークとしてはRails以外もある模様。
Node.js
JavaScriptの実行環境。本来、Rubyとは別のものだが最近のRubyは自分が動く環境にNode.jsがインストールされていることが前提となっているらしい。Rubyも基本はWebアプリケーションサーバーでWebアプリケーションサーバーが何をするかと言えばリクエストを受けてhtmlを戻す。その中にJavaScriptで書かれた部分があればブラウザ側で処理を行う。ただブラウザには様々な種類とバージョンがあってうまく動かない可能性もあるしJavaScriptが更にデータを要求して処理に時間がかかるかもしれない。なのでWebサーバー側でJavaScriptを動かしてhtmlにしてブラウザに戻す。htmlを作るのはRubyでも出来るけどJavaScriptの方で出来るならそっちに任せてしまえということでNode.jsが前提になっているのかな?で、これもdnfでもインストール出来るけどバージョンアップの頻度を考えるとdnfでは辛いか?
yarn
JavaScriptのパッケージ管理ツールらしい。npmより後にできてnpmより性能がいい?dnfにはパッケージなし。npmでインストールする。
npm
JavaScriptのパッケージ管理ツールらしい。Node.jsをインストールすると自動でインストールされるらしい。
nvm
JavaScriptのパッケージ管理ツールらしい。先にnvmをインストール(まあ、これじたいがスクリプト言語の模様)してnvmでNode.jsをインストールする。
n
JavaScriptのパッケージ管理ツールらしい。npmかyarnでインストールする。
だいたいこのあたりまでがRuby関連の環境といった感じ。で、Mastodonのインスタンスを建てたときどうなっていたかというと
- rootでNode.jsをdnfでインストール
- rootでnpmでyarnをインストール
- MastodonユーザーでrbenvとRubyをインストール
- Mastodonユーザーでgemでbundlerをインストール。gem自体はRubyのインストールで入ってるのかな?
- MastodonユーザーでMastodonをgit cloneしてbundle環境を弄って何かをインストール、yarnで何かをインストール、Railsでコンパイル?
Node.jsのインストールでnpmが入るけどそれよりも性能がいいと言われるyarnをインストールして後の管理はyarnで行うという事か。Rubyも面倒だがNode.jsも面倒である。特にnpm、yarn、nあたりはバージョン管理ツール(Node.jsのインストールも出来る)がNode.jsの後から入る。yarn、nをインストール後にNode.jsをアンインストールしてyarn、nでNode.jsをインストールし直すとかもある模様。ただ、これをやるとNode.jsの場所が変わってしまうのでMastodon側の設定を変えないといけない。
dnfで入れればサーバー全体で使えるけどMastodonユーザーで入れたら基本はそのユーザーのみ?そんな事もないか?けど本来は他ユーザーに影響を与えてはいけないと思うがMastodonはnginxのオーナーにMastodonユーザーを要求するので専用サーバー化を前提としているのかな。Node.jsのインストール方法は少し考えないとダメだな。現状、dnfで入れているのでバージョンが古く、そのせいでMastodonのバージョンが上げられなくなってる。dnfで出来るものはdnfで行うとしていたけど見直すか。ただ、バージョン上げすぎると動かなかったりするし。