Rubyの環境構築といえば...その昔Railsの入門サイトみたいなやつで、どう動くかも分からずただ書いてあるままにポチポチとコマンドを実行して構築した覚えがあります。
結局、なんだかよく分からなくなって「Ruby on RailsはサルでもWebアプリが作れると聞いたが、ぼくはサルより下だった。」と放り投げた記憶があります。
ときは流れ、私はRubyのRの字にも触れることなくNode.js / npm
の文化で育ちました。
そうした中、何やらRubyを触らないといけないことになりまして、次こそはちゃんと理解して環境を構築しようという気持ちになりました。
以下、Node.js/npm
で理解するRubyの環境構築です。
前提
-
Node.js / npm
についての知識がある -
Node.js / npm
の知識でRubyを理解したい - Rubyのバージョン管理は
rbenv
、Node.jsのバージョン管理はnodebrew
ということで進める
Node.jsで置き換えてみる
rbenvとは
どの言語にも存在する、手軽にバージョンを切り替えるやつです。
Node.jsで言うところのnodebrew
です。
ruby-build
いきなりですが、これは該当するコマンドが無いです。
強いていうと、Node.jsで言うところのnodebrew install
に該当します。
rbenv install
はruby-build
無しでは動かないということのようです。
gem
だいたいの言語に存在する、パッケージを管理する便利なやつです。
Node.jsで言うところのnpm
です。
gem installの落とし穴
Node.jsしか知らない人からすると、落とし穴なのがgem install
はグローバルにインストールされるというところです。
つまり、gem install hoge
すると、npm install hoge -g
みたいな動作をするということです。
「マジかよ。全てグローバルとか正気かよ。」と思ってしまいます。
bundler
上で書いた、gem install
の落とし穴をなんとかするのがbundlerです。
bundle install
という感じで使います。
Node.jsで言うところの、npm install
(-g
が付かない)です。
node_modules = vendor/bundle
Web上でbundlerについての文献を見ていると、以下のような表記を見かけます。
bundle install --path vendor/bundle
これは、インストールしたパッケージの実体はvendor/bundle
に入れてねということです。
そう、Node.jsで言うところのnode_modules
です。
Gemfile
パッケージの依存関係が書いてあるやつです。(これは環境構築とは関係ないけど)
Node.jsで言うところのpackage.json
のdependencies
とかdevDependencies
に当たります。
まとめ
Ruby / gem | Node.js / npm |
---|---|
rbenv |
nodebrew |
rbenv install (with ruby-build) |
nodebrew install |
gem |
npm |
gem install |
npm install -g |
bundle install |
npm install |
bundle exec |
npm run |
Gemfile |
package.json |
Gemfile.lock |
npm-shrinkwrap.json |
あとがき
こうして見てみると、大したことないですね。
ややこしいのは、「gem
コマンドでインストールするとグローバルに入っちゃうから、bundler
を使おうね」というところだと思います。
偏差値が低いので、道具が増えると頭が追いつかないです。つらい。
Ruby周辺の知識に関してはまだまだ理解が浅いです。
何か間違い等ありましたら、編集リクエストかコメントを頂けますとありがたいです。