脱N00Bしたいエンジニア

N00Bなエンジニアの奮闘記録

インストール「Ruby on Rails」with Ubuntu 18.04 on Windows Subsystem for Linux (WSL)

Ubuntu 18.04 on Windows Subsystem for Linux (WSL)にRuby on Railsを入れていきます。

環境

$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"
$ uname -a
Linux W10DESK 4.4.0-17134-Microsoft #137-Microsoft Thu Jun 14 18:46:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux

参考

下準備

エラーがおこったときにその都度インストールしたものをまとめてある。エラーの詳細は後ほど解説。

$ sudo apt install -y git
$ sudo apt install autoconf
$ sudo apt install build-essential
$ sudo apt install -y libssl-dev libreadline-dev zlib1g-dev
$ sudo apt install sqlite3
$ sudo apt install libsqlite3-dev

apt show [パッケージ名]でパッケージの詳細がみれる。リンク先は公式Ubuntu Packages

インストール:

rbenvのインストール

$ git clone https://github.com/sstephenson/rbenv.git ~/.rbenv

$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile

$ exec $SHELL -l

インストール後の確認

$ rbenv --version
rbenv 1.1.1-39-g59785f6

rubyのインストール

$ git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
$ rbenv install 2.5.1
$ rbenv rehash
$ rbenv global 2.5.1

インストール後の確認

$ rbenv versions
* 2.5.1 (set by /home/sikeda107/GitRepository/Hello/.ruby-version)

$ ruby --version
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

railsのインストール

$ gem install rails
$ rails --version
/home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/railties-5.2.1/lib/rails/app_loader.rb:53: warning: Insecure world writable dir /home/sikeda107/.rbenv/versions in PATH, mode 040777
Rails 5.2.1

$ gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'

解説: sqlite3

This module allows Ruby programs to interface with the SQLite3 database engine (http://www.sqlite.org). You must have the SQLite engine installed in order to build this module. Note that this module is only compatible with SQLite 3.6.16 or newer.

方法が2つあるのでお好みでインストールしてどうぞ。

方法1: mini_racerの利用

$ rails new [アプリ名]
$ cd [アプリ名]
$ vi Gemfile 

gem 'mini_racer', platforms: :rubyの#を外す。iで挿入モードへ移行し、カーソル移動して、#を消して、Escを押して、:wqで上書き保存する。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.1'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
(省略)
# See https://github.com/rails/execjs#readme for more supported runtimes
gem 'mini_racer', platforms: :ruby (<-これ)

# Use CoffeeScript for .coffee assets and views
gem 'coffee-rails', '~> 4.2'
(省略)

Gemをインストールする。

$ bundle install
$ rails server

ブラウザにてhttp://localhost:3000/でアクセス。

解説: mini_racer

Minimal embedded v8 engine for Ruby

方法2: node.jsの場合

$ cd 
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
$ rails new [アプリ名]
$ cd [アプリ名]
$ rails server

解説:Node.js公式サイト

Node はスケーラブルなネットワークアプリケーションを構築するために設計された非同期型のイベント駆動の JavaScript 環境です。

ブラウザにてhttp://localhost:3000/でアクセス。

エラー集

$ rbenv install 2.5.1 したい

エラー1: どうやらビルドツールMakeがないようだ。

$ rbenv install 2.5.1
Downloading ruby-2.5.1.tar.bz2...
-> https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.bz2
Installing ruby-2.5.1...

BUILD FAILED (Ubuntu 18.04 using ruby-build 20180822-6-g44f0f53)

Inspect or clean up the working tree at /tmp/ruby-build.20180829023552.2797
Results logged to /tmp/ruby-build.20180829023552.2797.log
省略)
checking if make is GNU make... ./configure: line 27342: make: command not found
no
checking for safe null command for make... configure: error: no candidate for safe null command

解決コマンド: まだ解決してない。

$ sudo apt install autoconf
$ sudo apt install build-essential

エラー2 : libssl-dev libreadline-dev zlib1g-devの3つが必要らしい。

$ rbenv install 2.5.1
ERROR: Ruby install aborted due to missing extensions
Try running `apt-get install -y libssl-dev libreadline-dev zlib1g-dev` to fetch missing dependencies.

解決コマンド:ここで解決

$ sudo apt install -y libssl-dev libreadline-dev zlib1g-dev
$ rbenv install 2.5.1 成功!

$ rails new Hello したい

エラー1: sqlite3のgemがないらしい。

$ rails new Hello
/home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/sqlite3-1.3.13/gem_make.out

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

In Gemfile:
  sqlite3
         run  bundle exec spring binstub --all
Could not find gem 'sqlite3' in any of the gem sources listed in your Gemfile.

解決コマンド:まだ解決してない。そして、libsqlite3-devが必要らしい。

$ gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'
Building native extensions. This could take a while...
/home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/ext/builder.rb:76: warning: Insecure world writable dir /home/sikeda107/.rbenv/versions in PATH, mode 040777
ERROR:  Error installing sqlite3:
        ERROR: Failed to build gem native extension.

    current directory: /home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13/ext/sqlite3
/home/sikeda107/.rbenv/versions/2.5.1/bin/ruby -r ./siteconf20180829-1505-1fcp7sr.rb extconf.rb
/home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/2.5.0/mkmf.rb:1553: warning: Insecure world writable dir /home/sikeda107/.rbenv/versions in PATH, mode 040777
checking for sqlite3.h... no
sqlite3.h is missing. Try 'brew install sqlite3',
'yum install sqlite-devel' or 'apt-get install libsqlite3-dev'
and check your shared library search path (the
location where your sqlite3 shared library is located).
*** 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-sqlite3-lib=${sqlite3-dir}/lib

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/sqlite3-1.3.13/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13 for inspection.
Results logged to /home/sikeda107/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0/extensions/x86_64-linux/2.5.0-static/sqlite3-1.3.13/gem_make.out

解決コマンド: ここで解決。

$ sudo apt install libsqlite3-dev
$ gem install sqlite3 -v '1.3.13' --source 'https://rubygems.org/'
$ rails new Hello 成功!

この画面がみれればOK!! f:id:sikeda107:20180829053521p:plain:w500:h200