vagrant sshまで
vagrant init
$ vagrant init bento/ubuntu-16.04
A `Vagrantfile` has been placed in this directory.
Vagrantfileの編集
以下の様にする。
# -*- mode: ruby -*-
# vi: set ft=ruby :
# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure("2") do |config|
# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.
# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
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"
end
vagrant up
$ vagrant up
これで起動する。
パスワードが求められた場合はsudoのパスを。
vagrant ssh
$ vagrant ssh
これでvagrantにログインできる。
様々なinstall
基本ライブラリのinstall
$ sudo apt-get update
$ sudo apt-get install -y libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
gitのinstall
$ wget https://www.kernel.org/pub/software/scm/git/git-2.5.1.tar.gz
$ tar -zxf git-2.5.1.tar.gz
$ cd git-2.5.1
$ make prefix=/usr/local all
$ sudo make prefix=/usr/local install
$ which git
$ git --version
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
これを忘れる方が多いので注意!
$ 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
$ rbenv --version
$ rbenv install 2.5.1
$ rbenv versions
$ rbenv global 2.5.1
$ rbenv rehash
$ rbenv version
$ which ruby # /home/vagrant/.rbenv/shims/ruby
$ ruby -v #これで2.5.1になることを確認
# 2.4.1じゃない場合
$ source ~/.bashrc #これで確認して2.5.1になっていたらok
$ which gem # /home/vagrant/.rbenv/shims/gem
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を叩く
root loginができない。。。
以下で解決!!
$ mysql -uroot
ERROR 1698 (28000): Access denied for user 'root'@'localhost'
$ 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 #これでできるはず
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
bundle initからrails newまで
ディレクトリの作成
$ 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.2.0"
bundle install
$ bundle install --path /usr/local/src/bundles/app_name --jobs=4
$ bundle exec rails new -B -d mysql -T -f . # 上書きしますか?的なのが出るけど、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.2.0'
# 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
gem 'slim-rails'
# gem 'jquery-rails'
# gem 'omniauth'
gem 'meta-tags'
gem 'dotenv-rails'
# exceptionを通知
gem 'exception_notification', :github => 'smartinez87/exception_notification'
# Slack通知
gem 'slack-notifier'
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]
# Adds support for Capybara system testing and selenium driver
gem 'capybara', '~> 2.13'
gem 'selenium-webdriver'
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が正常に動作するまで、色々install
therubyracerのinstallでエラーする場合
$ sudo apt-get install build-essential g++
$ gem install therubyracer -v '0.12.3' -- --with-v8-dir
$ bundle install
mysqlのinstall
bundle installでエラーする
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
current directory: /usr/local/src/bundles/road_shopping/ruby/2.4.0/gems/mysql2-0.4.8/ext/mysql2
/home/vagrant/.rbenv/versions/2.4.1/bin/ruby -r ./siteconf20170805-7177-14fs82y.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for ruby/thread.h... yes
checking for rb_thread_call_without_gvl() in ruby/thread.h... yes
checking for rb_thread_blocking_region()... no
checking for rb_wait_for_single_fd()... yes
checking for rb_hash_dup()... yes
checking for rb_intern3()... yes
checking for rb_big_cmp()... yes
checking for mysql_query() in -lmysqlclient... no
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/vagrant/.rbenv/versions/2.4.1/bin/$(RUBY_BASE_NAME)
--with-mysql-dir
--without-mysql-dir
--with-mysql-include
--without-mysql-include=${mysql-dir}/include
--with-mysql-lib
--without-mysql-lib=${mysql-dir}/lib
--with-mysql-config
--without-mysql-config
--with-mysql-dir
--without-mysql-dir
--with-mysql-include
--without-mysql-include=${mysql-dir}/include
--with-mysql-lib
--without-mysql-lib=${mysql-dir}/lib
--with-mysqlclientlib
--without-mysqlclientlib
To see why this extension failed to compile, please check the mkmf.log which can be found here:
/usr/local/src/bundles/road_shopping/ruby/2.4.0/extensions/x86_64-linux/2.4.0-static/mysql2-0.4.8/mkmf.log
extconf failed, exit code 1
Gem files will remain installed in /usr/local/src/bundles/road_shopping/ruby/2.4.0/gems/mysql2-0.4.8 for inspection.
Results logged to /usr/local/src/bundles/road_shopping/ruby/2.4.0/extensions/x86_64-linux/2.4.0-static/mysql2-0.4.8/gem_make.out
An error occurred while installing mysql2 (0.4.8), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.8'` succeeds before bundling.
In Gemfile:
mysql2
$ sudo apt-get install libmysqlclient-dev
$ gem install mysql2 -v '0.4.8'
$ bundle install
nodejsのinstall
$ sudo apt-get install -y nodejs npm
$ sudo npm cache clean
$ sudo npm install n -g
$ sudo n stable
$ sudo ln -sf /usr/local/bin/node /usr/bin/node
$ node -v
$ sudo apt-get purge -y nodejs npm
$ sudo npm install --global yarn #yarnのinstall
rails s
vagrantで起動したrailsアプリを、クライアント側のブラウザで表示するために、
$ bundle exec rails s -b 0.0.0.0
便利な小ネタ
gitの管理はクライアント側で。
githubとのやりとりは、vagrant側でなく、Mac側でやった方がよい。
アカウントを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'