LoginSignup
9
10

More than 5 years have passed since last update.

【備忘】WindowsでRuby(Rails)開発環境構築

Last updated at Posted at 2018-03-25

はじめに

Ruby(Rails)の勉強をするために調べたことを備忘録としてここに記します。
素人なので誤り等ありましたらご指摘いただけると幸いです。
【追記】自分の記事を見ながらもう一度初めから環境構築してみたらうまくいかなかったので
コマンドひとつひとつ調べなおして追記しました。(RubyとRailsはまだ調査中ですので後日追記します)

目次

  1. 概要
  2. 開発環境
  3. ホストマシン導入ツール
  4. ホストマシン導入ツールのインストール
  5. 仮想マシン設定ファイル(Vagrantfile)作成
  6. 仮想マシン起動とOS等アップデート
  7. Gitインストール
  8. Rubyインストール
  9. RubyGemインストール
  10. Railsインストール
  11. サンプルアプリケーションの作成
  12. おわりに

1. 概要

この記事では、WindowsでRuby(Rails)の開発環境を構築しましたので、その際の手順を以下に記します。
目次にある通りGitの導入からサンプルの作成、表示まで行いました。

2. 開発環境

  • ホストOS:Windows10 Pro
  • 仮想マシンOS:CentOS 7.2(導入時のアップデートで7.4になりました)

3. ホストマシン導入ツール

  • VirtualBox (5.2.6)
    ⇒Windows上にCentOSなどの別OSを起動させるためのヤツ
     調べてみると、VirtualBoxはホスト型と呼ばれるものらしい(他にもHyper-V型、コンテナ型があるらしい)
     @IT様の記事を読んでみると、Docker(コンテナ型)の方がアプリケーション実行が速いらしい
     ここを掘り返すと詰まりそうなので「そんなものもあるんだな~」とサッと流す

  • Vagrant (2.0.2)
    ⇒「開発環境の構築と共有を簡単に行うためのツール」だそうです 参考
     作った環境を「box」と呼ばれる単位で共有できるようです(Dockerでいうイメージファイルの共有と同じでしょうか)

  • Atom (1.27.2)
    ⇒新しいテキストエディタを使ってみたいなと思って導入
     ricty diminishedフォント良いですね
     最近はVimに慣れようと思い封印

  • PuTTY (0.70)
    ⇒起動した仮想マシンに接続してコマンドラインで操作するヤツ
     最近は2窓が鬱陶しいのと、PowerShellからvagrant sshでも接続できるので使わなくなった

  • CyberDuck (6.x)
    ⇒GUI操作できたり、ファイル転送したり、Windowsにインストールしたエディタ(Atom)で編集できるように設定できるヤツ
     最近は同じく使ってない

4. ホストマシン導入ツールのインストール

特記なし。
適当なディレクトリにインストールしました。
PuTTYやCyberDuckの設定も忘れずに。

5. 仮想マシン設定ファイル(Vagrantfile)作成

まずは作業用ディレクトリを作成して、そのディレクトリ内で以下コマンドを実行します。

vagrant init bento/centos-7.2
  • vagrant init
    現在のディレクトリにVagrantfileを作成する

  • bento/centos-7.2
    Boxと呼ばれる仮想マシンのイメージファイルなどのファイルの集まりを指定します。
    ここではCentOS7.2を指定しています。
    他にもBoxはあり、指定方法は色々あるようです。
    https://app.vagrantup.com/boxes/search

以下のように「Vagrantfileが作成され、vagrant upコマンドで仮想環境が使えますよ!」と表示されると思います。

==> vagrant: A new version of Vagrant is available: 2.1.2!
==> vagrant: To upgrade visit: https://www.vagrantup.com/downloads.html

A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.

次にプライベートIPアドレスの設定を行います。
後にこのIPアドレスを指定してPuTTYで接続したり、Railsで作成したWEBページの確認をします。
作成されたVagrantfileの35行目のコメントアウトを解除します。変更したい場合は変更して保存します。

# config.vm.network "private_network", ip: "192.168.33.10"
⇒config.vm.network "private_network", ip: "192.168.33.10"

6. 仮想マシン起動とOS等アップデート

早速以下のコマンドを実行してCentOSを起動します。
少し時間がかかります。(SurfacePro4でやったら時間かかりすぎて辞めました)
※Hyper-Vを有効化していたらSYSTEM_SERVICE_EXCEPTIONでブルースクリーンが発生することがあります。
 無効化してから行ってください。設定場所はここ

vagrant up
~略~
Vagrant was unable to mount VirtualBox shared folders. This is usually
because the filesystem "vboxsf" is not available. This filesystem is
made available via the VirtualBox Guest Additions and kernel module.
Please verify that these guest additions are properly installed in the
guest. This is not a bug in Vagrant and is usually caused by a faulty
Vagrant box. For context, the command attempted was:

mount -t vboxsf -o uid=1000,gid=1000 vagrant /vagrant

The error output from the command was:

/sbin/mount.vboxsf: mounting failed with the error: No such device

おっと、マウントに失敗したようです。
vagrant statusコマンドで確認すると分かりますが、仮想環境は起動しており、
ファイルの共有はするつもりがなかったので問題ないのですが気持ち悪いので対応します。

Guest Additions のバージョン差分が原因のようなので
以下サイトを参考に、vagrant up時にGuest Additions のバージョンをチェック・最新化してくれるようにします。
VirtualBox Guest Additionsの最新化

vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.15.1)'!

ちなみに以下のVagrantコマンドはよく使うと思うので覚えておくとよいと思います。

vagrant up(仮想マシン起動)
vagrant status(仮想マシンの状態を確認)
vagrant suspend(仮想マシンの一時停止)
vagrant reload(仮想マシンの再起動)
vagrant global-status(全仮想マシンの状態を確認)
vagrant halt XXXX(XXXXは仮想マシンIDで、対象IDの仮想マシンを終了する)
  • PuTTYで接続してまずはOSやインストール済みパッケージをアップデート

ログインユーザもパスワードもvagrantです。
アップデート後にvagrant reloadで再起動するとマウント失敗のエラーは発生しませんでした。

$ sudo yum -y update

7. Gitインストール

1.7のGitだとremote addでエラーとなるようなので最新バージョンをインストールします。
これで暫らく詰まりました。
yumでインストールしたGitは1.7とかで古いようです。

Gitインストールは公式サイトを参考にしました。

$ sudo yum remove git
⇒既存のgitがインストールされていれば削除する
$ sudo yum -y install curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel asciidoc xmlto docbook2X autoconf gcc 
⇒諸々のインストール(gccがないとコンパイルができず、autoconfがないとmakeができなかったので追加しました)
$ sudo ln -s /usr/bin/db2x_docbook2texi /usr/bin/docbook2x-texi
⇒シンボリックリンクを作成します(多分インストールのなんやかんやで使うから)
$ wget https://github.com/git/git/archive/v2.16.3.tar.gz
⇒gitのソースファイルをダウンロードします
$ tar -zxf v2.16.3.tar.gz
⇒解凍します
$ cd git-2.16.3
⇒解凍してできたgitフォルダに移動します
$ make configure
$ ./configure --prefix=/usr
$ make all doc info
$ sudo make install install-doc install-html install-info
⇒インストールのための設定をしてインストール

「make」「configure」「make install」についてはIT Media様のページが分かりやすかったです。

Gitのバージョンを確認して、最新になっていることが確認できました。

[vagrant@localhost git-2.16.3]$ git --version
git version 2.16.3
[vagrant@localhost git-2.16.3]$

所感
公式サイトに書いてないけど必要なものがあって困りました。
ちゃんと書いて欲しい。

8. Rubyインストール

Rubyのインストールは公式サイトを参考にしました。
Railsドキュメントではソースからのビルドでインストールしていましたが、公式サイトではサードパーティ製ツールかパッケージマネージャを使ってインストールすることを推奨しています。

$ sudo yum install ruby

しかし、この方法でインストールされるRubyのバージョンはCentOS 7.4では2.0.0で、2.2.2未満だと後述のようにRailsインストール時にエラーになります。
調べてみると、バージョンを指定して最新をインストールするにはrbenvを利用することになりそうです。
こちらの記事を参考にさせていただきました。

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
⇒rbenvをGitHubから持ってきます
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
⇒ruby-buildをGitHubから持ってきます
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
⇒PATHを通します
$ source ~/.bash_profile
⇒反映します
$ rbenv --version
$ rbenv install 2.5.0
$ rbenv rehash

BUILD ERRORとなり、ログを確認したところ以下を実行しろと。

BUILD FAILED (CentOS Linux 7 using ruby-build 20180618-5-gad8f3a4)

Inspect or clean up the working tree at /tmp/ruby-build.20180706221506.17732
Results logged to /tmp/ruby-build.20180706221506.17732.log

Last 10 log lines:
installing rdoc:                    /home/vagrant/.rbenv/versions/2.5.0/share/ri/2.5.0/system
installing capi-docs:               /home/vagrant/.rbenv/versions/2.5.0/share/doc/ruby
The Ruby readline extension was not compiled.
ERROR: Ruby install aborted due to missing extensions
Try running `yum install -y readline-devel` to fetch missing dependencies.

⇒yum install -y readline-develを実行するらしい(sudo忘れずに)

再度実行したところ成功しました。

[vagrant@localhost ~]$ rbenv install 2.5.0
Downloading ruby-2.5.0.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2
Installing ruby-2.5.0...
Installed ruby-2.5.0 to /home/vagrant/.rbenv/versions/2.5.0

[vagrant@localhost ~]$ rbenv versions
* system (set by /home/vagrant/.rbenv/version)
  2.5.0
[vagrant@localhost ~]$

使用するバージョンを指定します。

[vagrant@localhost ~]$ rbenv global 2.5.0
[vagrant@localhost ~]$ rbenv version
2.5.0 (set by /home/vagrant/.rbenv/version)
[vagrant@localhost ~]$

rbenvのコマンドでよく使いそうなものをまとめてみました。

rbenv install -l(インストール可能なRubyのバージョン一覧)
rbenv install X.X.X(X.X.XのRubyをインストール)
rbenv global X.X.X(デフォルトで使用するバージョンを指定 global/local/shellがある)
rbenv version(今使用しているバージョンの確認 versionsにすると他にインストールされているバージョンも表示)

9. RubyGemインストール

RubyGem(Gem)とはRubyにおけるパッケージ管理システムで、Railsを含むRubyのライブラリ等はGemで管理されているとのこと。
Railsドキュメントでは以下の方法が示されていますが、再度確認してみたら繋がらず。
調べてみるとrubyforgeが廃止されるらしく、その影響かなと。

$ wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
$ tar xzf rubygems-1.3.7.tgz
$ cd rubygems-1.3.7
$ ruby setup.rb

以下でも行けるらしいです。
しかも簡単!

$ sudo yum install rubygems

しかし、以下のようになるため今回の場合は不要?

Package rubygems-2.0.14.1-33.el7_4.noarch already installed and latest version
Nothing to do

10. Railsインストール

Railsドキュメントを参考にインストール
bundlerのインストールが必要だったようなので先にしておきます。

$ gem install bundler
$ sudo gem install rails
$ rails -v

Rubyのバージョンが2.2.2未満だと以下のようにエラーが出ます。
rbenv install 2.5.0の後にrbenv rehashを忘れていないか確認してください。

ERROR:  Error installing rails:
        activesupport requires Ruby version >= 2.2.2.

11. サンプルアプリケーションの作成

rails newコマンドでサンプルアプリを作ってWEBページを確認してみます。

  • 前準備

bundle installでエラーになるので事前に対応します。

$ sudo yum install sqlite-devel
$ sudo yum install -y ruby20-devel gcc-c++
  • アプリケーション作成
$ mkdir RailsWork
$ cd RailsWork/
$ rails new sample_app
$ cd sample_app

Gemfileを編集して以下のコメントアウトを外す

# gem 'therubyracer', platforms: :ruby

続き

$ bundle install
$ rails server -b 192.168.33.10 -d
⇒-bオプションでIPアドレスを指定(binding)して、-dオプションでバックグラウンド(daemon)で起動させます

192.168.33.10:3000を指定してブラウザで開くとRailsのチュートリアル画面?が表示されます。

  • WEBサーバ停止
[vagrant@localhost sample_app]$ cat tmp/pids/server.pid
9306[vagrant@localhost sample_app]$ kill -9 9306
⇒killコマンドでプロセスを殺します
[vagrant@localhost sample_app]$

12. おわりに

なんとかできました。
詰まりながら進めていたので、正攻法を探していきたいと思います。
ご指摘等ございましたらコメントいただけると幸いです。

9
10
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
9
10