はじめに
思い立って Ruby on Rails
を勉強しようと思ったので。
環境構築をするまでの手順を忘れないうちにまとめておきます。
何番煎じか分からないけど…。
環境構築
vagrant
上に環境を作りました。
本当は Dockerfile
使いたかった…。
VM起動まで
基本的には こちら の記事をベースに構築しました。
# プロジェクトディレクトリの作成
mkdir rails_tutorial
cd rails_tutorial
# マウント用のディレクトリを作成
mkdir code
# Vagrantfile生成
vagrant init
# -*- 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
時にエラーが出る可能性が。
次のコマンドを叩いて回避します。
vagrant plugin install vagrant-vbguest
vagrant up
vagrant ssh
これでVM上のソースコードを rails_tutorial/code
内に置くことで、ローカル環境で開発できるようになります。
Ruby環境準備
必要パッケージのインストール
sudo yum -y update
sudo yum -y install git-all openssl-devel readline-devel sqlite gcc gcc-c++ vim
rbenvからRubyのインストール
PHP
で言うところの phpenv
的なパッケージだそう。
プロジェクトによって Ruby
のバージョンを変えたい場合に使えそうです。
# 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
ここで出てきた bundler
が PHP
で言うところの composer
みたいなものらしいです。ね。
データベースの準備
過去の私の記事 をベースに今回は MySQL
を入れていきます。
別に PostgreSQL
でもよかったんですけどね。
やること
- MySQLのインストール
- ユーザー作成と権限付与(今回は
rails_user
/Ruby0nR@ils
を準備)
Railsプロジェクト生成
cd /vagrant/code
bundle init
vim 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"
# タスクランナーで使われてるっぽいので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 thatgem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'
succeeds before bundling.
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サーバー起動
# データベース生成
bin/rake db:create
# Webサーバー起動
bin/rails server -b 0.0.0.0 -p 2000
ローカル環境から http://localhost:3000
に接続したら次の画面になっているかと思います。
終わりに
なんとか開発環境が構築できました。
やってみて思うのが、 Laravel
はどれだけ開発環境充実してるねんっていうことですね。
開発環境にしろ何にしろ、とにかく手間がかからないというか…導入までのことを考えても Laravel
が人気な理由を再認識しました。
db:create
でデータベース設定ファイルに記述されているデータベースを自動生成してくれるのはいいなと思った。
とにかく、これでいろいろやれるようになったので何かしらのサービスを一つは組み上げたいものです。
やっぱToDoアプリかなー。