11
11

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[Ruby on Rails] Vagrant上で動作するまでの環境構築

Last updated at Posted at 2018-10-05

はじめに

思い立って Ruby on Rails を勉強しようと思ったので。
環境構築をするまでの手順を忘れないうちにまとめておきます。
何番煎じか分からないけど…。

環境構築

vagrant 上に環境を作りました。
本当は Dockerfile 使いたかった…。

VM起動まで

基本的には こちら の記事をベースに構築しました。

console
# プロジェクトディレクトリの作成
mkdir rails_tutorial
cd rails_tutorial
# マウント用のディレクトリを作成
mkdir code
# Vagrantfile生成
vagrant init
rails_tutorial/Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
  # centos7を使用
  config.vm.box = "centos/7"
  # ホストマシンの3000番ポートをゲストOSの2000番ポートへフォワード
  config.vm.network "forwarded_port", guest: 2000, host: 3000
  config.vm.provider "virtualbox" do |vb|
   # VirtualBoxのGUI上の名前を設定
   vb.name = "centos7"
   # メモリは2048MBに設定
   vb.memory = "2048"
   # フォルダーマウント
   config.vm.synced_folder "./code", "/vagrant/code", owner: "vagrant", group: "vagrant"
  end
end

おそらくこのままだと vagrant up 時にエラーが出る可能性が。
次のコマンドを叩いて回避します。

console
vagrant plugin install vagrant-vbguest
vagrant up
vagrant ssh

これでVM上のソースコードを rails_tutorial/code 内に置くことで、ローカル環境で開発できるようになります。

Ruby環境準備

必要パッケージのインストール

vm_console
sudo yum -y update
sudo yum -y install git-all openssl-devel readline-devel sqlite gcc gcc-c++ vim

rbenvからRubyのインストール

PHP で言うところの phpenv 的なパッケージだそう。
プロジェクトによって Ruby のバージョンを変えたい場合に使えそうです。

vm_console
# rbenvのクローン
git clone git://github.com/sstephenson/rbenv.git ~/.rbenv ; git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

# パスを通す
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
echo 'gem: --no-ri --no-rdoc' > ~/.gemrc

# シェルの再起動
exec $SHELL

# インストール可能なバージョンの取得
rbenv install --list

# バージョン2.5.1をインストール
rbenv install 2.5.1
rbenv global 2.5.1

#bundlerのインストール
gem install bundler

ここで出てきた bundlerPHP で言うところの composer みたいなものらしいです。ね。

データベースの準備

過去の私の記事 をベースに今回は MySQL を入れていきます。
別に PostgreSQL でもよかったんですけどね。

やること

  • MySQLのインストール
  • ユーザー作成と権限付与(今回は rails_user / Ruby0nR@ils を準備)

Railsプロジェクト生成

vm_console
cd /vagrant/code
bundle init
vim Gemfile
Gemfile
# frozen_string_literal: true
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
- # gem "rails"
+ gem "rails", "5.2.1"
vm_console
# タスクランナーで使われてるっぽいのでnodejsを入れておく
sudo rpm -Uvh https://rpm.nodesource.com/pub_4.x/el/7/x86_64/nodesource-release-el7-1.noarch.rpm
sudo yum install -y nodejs

# 後述のエラーを回避するためにパッケージを入れておく
sudo yum install -y mysql-devel

# Railsのライブラリをインストール
bundle install

# composer create-project laravel/laravel コマンドに相当するっぽい
bundle exec rails new . --database=mysql --skip-spring
#

後述のエラーbundle exec 時に発生)
bundle install で mysql2 のgemがインストールできない を参考にさせていただきました。

An error occurred while installing mysql2 (0.5.2), and Bundler cannot
continue.
Make sure that gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'
succeeds before bundling.

database.ymlファイルを修正

/vagrant/code/config/database.yml
...
development:
-  <<: *default
+  adapter: mysql2
+  encoding: utf8
+  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
+  username: rails_user
+  password: Ruby0nR@ils
-  database: code_development
+  database: rails_db
+  host: localhost
...
コピー用
development:
  adapter: mysql2
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: rails_user
  password: Ruby0nR@ils
  database: rails_db
  host: localhost

データベース生成・Webサーバー起動

vm_console
# データベース生成
bin/rake db:create
# Webサーバー起動
bin/rails server -b 0.0.0.0 -p 2000

ローカル環境から http://localhost:3000 に接続したら次の画面になっているかと思います。
スクリーンショット 2018-10-06 1.17.33.png

終わりに

なんとか開発環境が構築できました。
やってみて思うのが、 Laravel はどれだけ開発環境充実してるねんっていうことですね。
開発環境にしろ何にしろ、とにかく手間がかからないというか…導入までのことを考えても Laravel が人気な理由を再認識しました。
db:create でデータベース設定ファイルに記述されているデータベースを自動生成してくれるのはいいなと思った。
とにかく、これでいろいろやれるようになったので何かしらのサービスを一つは組み上げたいものです。
やっぱToDoアプリかなー。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?