3
3

More than 3 years have passed since last update.

PythonistがRuby on Railsに異世界転生したときの記録

Last updated at Posted at 2019-11-01

初めに

これまではPHPかPythonでの開発がほとんどだったのですが、様々な事情により、Ruby on Railsの案件に取り組むことになりました。Pythonと比較しながらRuby on Railsを勉強しているのですが、その際に参考にした記事などを残しておきたいと思います。内容は随時更新します。

目次

  • Rubyの環境構築
  • Railsの導入

環境

  • ubuntu 19.04 eoan ermine
  • rbenv version 1.1.1
  • ruby verison 2.6.5

Rubyそのものについて

Pythonでは、以下の環境を使っていました。

* pyenv(Pythonのバージョン管理)
* pip(デフォルトのPackage管理)
* pipenv(仮想環境構築+Packageの管理)

Rubyでそれぞれに対応するのは、(というかPythonのそこら辺のツールはRubyのツール群に触発されて開発されたものが多いので、こちらのほうが大元というべきなのですが、)

* rbenv(Rubyのバージョン管理)
* gem(デフォルトのPackage管理:ただしRubyではPackageのことをGemとよんでいる)
* bundler(仮想環境構築+Gemの管理)

です。Gemというのは、PythonでいうPackageみたいなもののようです。一般的なRubyプロジェクトは、bundlerを用いて

mkdir PROJECT_DIR
cd PROJECT_DIR

rbenv local 2.6.5 #pipenv install 3.8.0と同じノリです
gem install bundler

bundler init #これによってGemfile, Gemfile.lockが作られる。pipenv initと同じ

vi Gemfile #Gemfileに必要なライブラリ群を記載
bundler install --path vendor/bundler #Gemfileに記載したライブラリ群をvendor/bundler以下にインストール
bundler exec COMMAND #pipenv run COMMANDに対応するコマンド

として環境を作るようです。

PipenvとBundlerは大体同じですが、以下のような細かい違いがあります。

  • bundler execpipenv runと対応しています。
  • pipenv shellに対応するコマンドはなさそうです
  • pipenvでは、Packageのインストール先は、デフォルトで~/.local以下に作られ、PIPENV_VENV_IN_PROJECTでプロジェクトディレクトリ以下に作成されます。
  • bundlerでは~/.bundle/configファイルにBUNDLE_PATH = "vendor/bundle"を指定することでプロジェクトディレクトリ以下(PROJ_DIR/vendor/bundleに)作成されます。

bundle install時に--pathオプションを指定すべきかどうかは、宗教戦争になりつつあるようで、bundle install時に--path vendor/bundleを付ける必要性は本当にあるのか、もう一度よく考えてみようが参考になりました。(自分はSystemを汚したくない派なのでvendor/bundleすることにしました)

Rails環境構築

RailsはRuby用のWeb開発フレームワークです。Flaskみたいな感じかと思っていましたが、どちらかというとDjangoのcounterpartという印象です。

Railsは統合的なWeb開発環境であり、bundlerを内包しているとのことです。
ちなみにBundlerとBundleは同じ。
Bundlerの公式ドキュメントによると、RailsはBundlerを内包しています。

Rails comes with baked in support with bundler.
Bundler公式ドキュメント

Bundlerを用いたRailsのインストールは

gem install rails
rails new APP_DIR
cd APP_DIR
bundler install

で良いようです。

しかし、このときのRailsのインストール先はSystemです。SystemのRubyGemはできるだけクリーンに保ちたいので、以下のようにします。

mkdir APP_DIR
cd APP_DIR
bundler init
vi Gemfile #ここでrailsをGemfileに追加
bundler install --path vendor/bundle #上記のBUNDLE_PATHの設定をしている場合は`--path`オプションは不必要
bundler exec rails install -B -d mysql
# -B:rails new 時に改めて bundler install しない
# -d DBとして mysqlを使用。(デフォルトはsqlite)

# ここで既存のGemfileをOverwirteするかどうか訊かれるので、Y

参考:新規Railsプロジェクトの作成手順まとめ

Ruby on Railsをやっていく

3
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
3
3