仮想環境でrails serverするまで。
WindowsでやっているのでMacでは多少挙動が違うかもしれません。
不足があるかもしれませんがご容赦を。
技術要件
- Windows10
下準備
Vagrant のインストール
公式サイト
http://www.vagrantup.com/
ここから、vagrantをダウンロードし、インストール。
VirtualBox のインストール
公式サイト
https://www.virtualbox.org/
VirtualBox をダウンロードし、インストール。
Vagrant sshをするまで
プロジェクトディレクトリの作成
ここではrails_testという名前で。
$ mkdir rails_test
$ cd rails_test
でディレクトリを作成し、その中へ移動。
Ubuntuのダウンロード
Ubuntuの公式サイトよりダウンロード&インストール。
https://www.ubuntu.com/download/desktop
$ vagrant box list
でUbuntuが入ってる場合は必要なし。
vagrant init
$ vagrant init ubuntu16.04
A `Vagrantfile` has been placed in this directory.
と出る。
Vagrantfileの編集
確認&修正
以下のように、テキストエディタ(AtomやEmacsなど)で編集(コメントアウト部分は一部省略)。
Vagrant.configure("2") do |config|
config.vm.box = "bento/ubuntu-16.04" #こうなっていることを確認
config.vm.network "forwarded_port", guest: 3000, host: 3000 #修正
config.vm.network "private_network", ip: "192.168.33.10" #コメントアウト
config.vm.synced_folder "./", "/vagrant", nfs: true #修正
end
vagrant up
vagrantを立ち上げる
$ vagrant up
Virtual Boxのバージョンが新しいと、この段階で動かない場合が見られる(5.2系)。
5.1.22では動作確認済。なので、Virtual Boxをインストールするときは、バージョンに気をつけて!
もしパスワードを聞かれたら、sudoのパスワードを入力。
終わったら、
$ vagrant ssh
でログインできるはず…!
vagrant sshが終わったら
基本ライブラリのインストール
$ sudo apt-get update
$ sudo apt-get install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
$ sudo apt-get -y install git curl g++ make #gitのインストール
$ sudo apt-get -y install sqlite3 libsqlite3-dev nodejs
rbenv の Install
ちょっと時間がかかりますが、気長に待ちましょう。
$ cd
$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ sudo apt install -y ruby-dev
$ sudo apt-get install -y autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev
※gitでrbenvを入れる理由
最新のrubyを入れようとした時、rbenvも最新版を持ってくる必要がある。その際、gitで入れておいた方が、masterを持ってきやすいため。
rbenv で Ruby の install
$ sudo apt-get install -y libreadline-dev
$ echo $SHELL #/bin/bash
$ vim .bashrc
で、末尾に以下を追加。
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"
$ source ~/.bashrc #またはexit
$ which rbenv #/home/vagrant/.rbenv/bin/rbenv
$ rbenv --version #rbenv 1.1.1-28-gb943955
$ sudo apt-get install libffi-dev
$ rbenv install 2.4.1 #ここで指定したバージョンのRubyが入る
$ rbenv versions
$ rbenv global 2.4.1
$ rbenv rehash
$ rbenv version
$ which ruby #/home/vagrant/.rbenv/shims/ruby
$ ruby -v #これで2.4.1になることを確認
# 2.4.1じゃない場合
$ source ~/.bashrc #これで確認して2.4.1になっていたらok
$ which gem
$ gem -v # 2.6.11くらい
rails new までの下準備
下準備
$ sudo apt-get -y install libxslt-dev libxml2-dev
$ echo install: --no-rdoc --no-ri >> .gemrc
$ echo update: --no-rdoc --no-ri >> .gemrc
Mysqlのinstall
$ sudo apt-get install mysql-server
途中謎の画面になるが何も入力せずにenterを叩く。
$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
root loginができないときは、以下で解決!
$ sudo service mysql stop
$ sudo rm -fr /var/lib/mysql
$ sudo mkdir /var/lib/mysql
$ sudo chown mysql:mysql /var/lib/mysql
$ sudo /usr/sbin/mysqld --initialize-insecure --user=mysql --datadir=/var/lib/mysql
$ sudo service mysql restart
$ mysql -uroot #これでできるはず #quitと叩けば抜けられる
Bundler install
$ rbenv exec gem install bundler
$ rbenv rehash
gem の install
共有ディレクトリにgemを入れると変な感じになるので。
$ sudo mkdir /usr/local/src/bundles
$ sudo chown -R vagrant:vagrant /usr/local/src/bundles
ディレクトリの作成
$ cd /vagrant/ # 共有ディレクトリへ
$ mkdir app_name
$ cd app_name
bundle init
$ bundle init
Gemfile を以下のように書き換える。
# frozen_string_literal: true
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "rails", "5.1.1"
bundle install
$ bundle install --path /usr/local/src/bundles/app_name --jobs=4
$ bundle exec rails new -B -d mysql --skip-turbolinks --skip-test . # 上書きしますか?的なのが出るけど、enterでok
$ vim Gemfile
以下のように書き換える。
バージョンは適宜変えてください。
source 'https://rubygems.org'
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.1.1'
# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.3.18', '< 0.5'
# Use Puma as the app server
gem 'puma', '~> 3.7'
# Use SCSS for stylesheets
gem 'sass-rails', '~> 5.0'
# Use Uglifier as compressor for JavaScript assets
gem 'uglifier', '>= 1.3.0'
# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'therubyracer', platforms: :ruby
# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
gem 'jbuilder', '~> 2.5'
# Use Redis adapter to run Action Cable in production
# gem 'redis', '~> 3.0'
# Use ActiveModel has_secure_password
# gem 'bcrypt', '~> 3.1.7'
# Use Capistrano for deployment
# gem 'capistrano-rails', group: :development
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
end
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console', '>= 3.3.0'
gem 'listen', '>= 3.0.5', '< 3.2'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
これで、 $ bundle install
bundle install でエラーが起こったときの対処
よくbundle install で引っかかるgemのエラー処理をいくつか紹介。
nokogiriというgemのinstallでerrorしたとき
$ sudo gem install nokogiri
$ bundle install --path /usr/local/src/bundles/app_name
therubyracerが入らないとき
$ sudo apt-get install build-essential g++
$ gem install therubyracer -v '0.12.3' -- --with-v8-dir
$ bundle install
mysql2が入らないとき
An error occurred while installing mysql2 (0.3.18), and Bundler cannot continue.
$ cd
$ sudo apt-get install libmysqlclient-dev
$ gem install mysql2 -v '0.4.8'
$ bundle install
rmagickが入らないとき
An error occurred while installing rmagick (2.15.2), and Bundler cannot continue.
Make sure that `gem install rmagick -v '2.15.2'` succeeds before bundling.
$ sudo apt-get install imagemagick libmagickcore-dev libmagickwand-dev
$ bundle install --path /usr/local/src/bundles/app_name
rails s
vagrant で起動したrailsアプリをブラウザで表示する。
$ bundle exec rails s -b 0.0.0.0
と叩いたら、
http://0.0.0.0:3000/ または localhost:3000
にアクセス。
便利な小ネタ
gitの管理はクライアント側でやる
githubとのやりとりは、vagrant側でなくWindows側でやった方がよい。アカウントをvagrant側で設定したり、公開鍵の登録とかが面倒になってしまうためです。
aliasの設定
以下をvagrant側の~/.bashrcの適当なところに貼り付け!
alias b='bundle exec'
alias brs='bundle exec rails s -b 0.0.0.0'
alias brc='bundle exec rails c'