Edited at

Node.jsで理解する、Ruby開発環境入門

More than 1 year has passed since last update.

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 installruby-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.jsondependenciesとか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周辺の知識に関してはまだまだ理解が浅いです。

何か間違い等ありましたら、編集リクエストかコメントを頂けますとありがたいです。