つまりなにしたの?
Ruby on Railsのチュートリアルとかをやる時に、古いバージョンを指定してインストールしたいと思うことがある。
Ruby on RailsのGetting Startedだと、バージョン指定をしていないので、指定する方法をいくつか選択できるようにしておく。
やりたいこと
- バージョンを指定して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のほうが都合が良いのかもしれない。