EnsekiTT Blog

EnsekiTTが書くブログです。

Ruby on Railsの古いバージョンを指定してインストールしたい話

つまりなにしたの?

Ruby on Railsチュートリアルとかをやる時に、古いバージョンを指定してインストールしたいと思うことがある。
Ruby on RailsのGetting Startedだと、バージョン指定をしていないので、指定する方法をいくつか選択できるようにしておく。
f:id:ensekitt:20181018211613j:plain

やりたいこと

  • バージョンを指定してRailsをインストールする
  • 今使えるRailsバージョンの確認
  • バージョンを指定してRailsを削除する
  • バージョンを指定してRailsプロジェクトを作成する
  • bundleはどうしたの?

Rubyのライブラリに関するページ
https://www.ruby-lang.org/ja/libraries/
の中段「ライブラリのインストール」に書いてあることを実施している。

バージョンを指定してRailsをインストールする

rubyonrails.org
ここを見ると最新バージョンがわかる。

# 最新バージョンを入れる
% gem install rails

# バージョン4.2.10を入れる
% gem install rails --version 4.2.10

今使えるRailsバージョンの確認

listでRailsに関するものを表示する

gem list rails

*** LOCAL GEMS ***

rails (5.2.0, 4.2.10)
# これ以降にもRails関連のGemが出る

バージョンを指定してRailsを削除する

% gem uninstall rails --version 4.2.10
Successfully uninstalled rails-4.2.10
# 確認
% gem list rails

*** LOCAL GEMS ***

rails (5.2.0)

バージョンを指定してRailsプロジェクトを作成する

% gem install rails --version 4.2.10
% rails _4.2.10_ new myapp_4210

これでmyapp_4210はrails 4.2.10で作成される。

bundleはどうしたの?

これは自分でもどうしたらいいのかよく分かっていないので、アドバイスなどいただきたい内容です。
Railsバージョンを管理する時に、Railsのプロジェクトの中にはbundleのためのGemfileが作られていて、
Gemを追加するときなどはGemfileをいじって追加している。
Bundler: The best way to manage a Ruby application's gems


ただ、↓みたいにRailsのプロジェクトを自分で新規に立ち上げる時に、Gemfileを先に用意する方法も考えられる。

# bundlerをグローバルにインストールする
% gem install bundler 

# Gemfileをbundleを使って作成する
% bundle init
Writing new Gemfile to /path/of/exec/directory/Gemfile

# Gemfileを編集して
# gem 'rails', '4.2.10'みたいなのを記述する
% vi Gemfile

# パスを指定してGemをインストールする
% bundle install --path=vendor/bundle

# railsのバージョンを確認する
% bundle exec rails -v
Rails 4.2.10

# railsのプロジェクトを作成する
% bundle exec rails new myapp
% cd myapp
% head Gemfile
source 'https://rubygems.org'


# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.10'

この後Rails newを実行するとプロジェクトフォルダ内にまたGemfileが出来上がって不思議な感じがする。
Rubyをいろいろな用途で使っている人はBundleのほうが都合が良いのかもしれない。

クリエイティブ・コモンズ・ライセンス
この 作品 は クリエイティブ・コモンズ 表示 4.0 国際 ライセンスの下に提供されています。