Help us understand the problem. What is going on with this article?

WindowsでRubyとPostgreSQLを使う! (WSL + VSCode)

目標

  • 以下の3つを使える様に (パソコンの環境を整える=>) 環境構築 する!
    • Git
    • Ruby
    • DB

ざっくり全体の構成

  • Windows 10
    • WSL
    • Ubuntu
      • Git
      • PostgreSQL
      • rbenv
        • ruby 2.6.3

WSLというWindows10の機能を使ってUbuntuと呼ばれるOS環境を構築します。

そのUbuntuの中で 3つ(Git, Ruby, DB) を使える様にします!

info. これからやること (Agenda)

  1. Windowsの上でLinux環境を簡単に構築できるWSLという機能を有効にする。
  2. MicrosoftStoreから「Ubuntu」をインストール。
  3. Ubuntuを起動。(初回起動でNameとPassを設定)
  4. PostgreSQLというデータベースの管理ソフトをインストール!
  5. Rubyをインストールする。。。もろもろ。
  6. VSCodeのターミナルを、今回構築したWSLのコンソールに紐付ける。

余談: なぜUbuntuなのか? Windowsのそのままでは駄目なのか?

Windowsは接続やインストールで手間取る。

それと、Qiitaやネット上の情報はMacOSやLinuxでの環境を前提に解説している事が多い。

WindowsOSではなく、Linuxベースにすることで、環境を近づけられる。

ということで、今回はWindowsの上に、Linuxのディストリビューションの一つ、Ubuntu環境を構築していきます!

以下説明に入る。貼り付けて欲しいコードは、

コード部分

この様に表記していく。

Info. 前提のハードウェア情報:

今期は「WSL」というWindowsの機能を使用して、Ubuntu環境を構築していく。

このWSLは64ビット版のWindows10しか対応していない。

※Home, Proどちらでも利用可能

また、OSのバージョンが1709以降でないと使えない。

※1709でない人はWindows Updateをして欲しいです。

※OSの詳細を確認する方法

1. 設定を開く(Win-I)
2. 「システム」
3. 「バージョン情報」
4. 「デバイスの仕様」「システムの種類」でビットを確認
5. 「Windowsの仕様」「バージョン」でバージョンを確認

参考Qiita記事

01 WSLの有効化: デフォルトでは無効なので、有効にする。

  1. Windowsボタンをクリックして、検索窓に「Windowsの機能」と打つと出る。

    ※プログラムのアンイストール → Windowsの機能の有効化または無効化でも行ける

  2. 「Windows Subsystem for Linux」にチェックを入れる。

    PCの再起動が始まる

  3. 再起動後に、Microsoft Store で 「WSL」と検索して、「Ubuntu」をインストールする。

※頻繁に起動する様なら、タスクバーにピン留めすると良さそう。

03. Ubuntuの初期設定: Ubuntuのユーザー名とパスワード設定

初期起動のみUserNameと、Passwordの設定が求められる。
1. ユーザー名(任意):
- 例) codebase
- 例) lagoon
2. パスワード(任意):
- 例) pass

04 PostgreSQLをインストールする

aptのインストール先を最新の状態にする

sudo apt-get -y update

aptを使用して、PostgreSQLをインストールする

sudo apt-get -y install postgresql

PostgreSQLサーバーの起動コマンドを入力

sudo service postgresql restart

※後々DBを使う時に、通常はPCの起動時にDBは起動するが、まれにしない時がある。

その場合は、上のコマンドを打てば良いので覚えておくと良い。

4.1 PostgreSQLの初期設定

インストール直後の設定が色々ある。

まずは、下のコマンドを打ち込んでPostgreSQLへアクセスする。

sudo -u postgres -i

ユーザーの作成

※このユーザー名は、Debianの初期起動時に作ったユーザー名が良いかも。

createuser -d -U postgres -P (任意のUser名) --superuser
  • 例)
  createuser -d -U postgres -P codebase --superuser
  • 例)
  createuser -d -U postgres -P lagoon --superuser

パスワードを求められたら、任意で打って欲しい
- 例) pass

※たぶん確認用で2回、打ち込む事になるはず。

サンプルのデータベースを作成

※もしかしたらエラーがたくさん出るかもしれない。でもWSL特有?のエラーらしく、まぁ正常にデータベースが作成されるので良いか。あとで調べるかも。

createdb hello --owner=(先程作ったUser名) --template=template1
  • 例)
  createdb hello --owner=codebase --template=template1
  • 例)
  createdb hello --owner=lagoon --template=template1

初期設定は終わったので、抜ける。

exit

4.2 psqlが普通に動作するか確認

postgresにはpsqlコマンドを使ってアクセスする!

psql hello

※解説: 先程の初期設定で作ったhelloというデータベースへアクセスするコマンド

無事に先のコードが実行されたか確認する
ここまで無事に出来たら、PostgreSQLは大丈夫!

よしPostgreSQLへのアクセスから抜ける

\q

05 Rubyの構築

次にRubyが実行できる様に環境構築していく!

まずrbenvを紹介する。

rbenvはRuby用のパッケージ管理システムのこと。

Rubyをインストールするのにも使えるし、様々なバージョンのRubyを切り替えたりするのがスムーズに可能!

※なぜバージョンを切り替える必要があるかと言うと、その方が便利だから!

今作ったWebAppが2.6.3で作ると、でもそれが来年のRuby2.7.xで動作する保証って無いよね。。。

各プロジェクトごとに適用するRubyのバージョンを変更できた方が助かる。

それ、rbenvで管理させよう!てな感じです。

参考Qiita記事

結論: Rubyは、rbnevでインストールする!という事でrbenvをインストールしよう!!!

その前に、rbenvをインストールする為に必要なパッケージをまずは、インストールする

sudo apt-get -y install git autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev gcc libpq-dev

では、rbenvのインストール

参考記事

↓一行ずつ(全部で5回)実行して欲しい。

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

git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(rbenv init -)"' >> ~/.bashrc

source ~/.bashrc

rbenvのインストールはこれで終わり。

次にRubyをインストールするが、インストールする前に、rbenvが無事に使えるか確認したい。

インストール可能なRubyのバージョン一覧を表示させてみよう

rbenv install -l

実際にRubyをインストールする。

今回は2.6.3をインストールする。

めっちゃ時間かかる(大体15-40分)

rbenv install 2.6.3

※このインストール間、画面上の表記があまり変化せず・・・あれ?フリーズしてね?って思うかもしれないが、大丈夫!、、、なはず。

しばらくまってみよう。1時間待っても駄目なら疑おう。

無事にRubyがインストールできたか、確認してみる

rbenv versions

ここで表示された一覧で、米印みたいなのが、systemでなければok

benvで今インストールした2.6.3を標準で使うように設定する

rbenv global 2.6.3

ついでに、Rubyのバージョン確認コマンドを実行して確認もしよう。

ruby -v

インストールしたver(今回で言うと2.6.3)ならok

// rbenvをaptではなく、github経由でインストールする理由は、githubからだと比較的最新のバージョンをインストールできるから。・・・だったはず。。。

5.1 Rubyの便利なライブラリを入れとく

Rubyではライブラリをgemにパッケージ化してます。

そのgemを管理する、パッケージ管理ツールがRubyGemsです。

RubyGemsはRubyインストールと同時に使えます。

簡単に言うと、ライブラリ(拡張機能)はGemと呼ばれる機能で管理されてるし、インストールする時にはGemコマンドを使うよって事。

gemはaptに似てる。

よし!では今後使いそうなGemをインストールしていこう!

gem install sinatra sinatra-contrib pg -N

※インストールで、セキュリティ警告のウィンドウが出るはず。許可してあげて。

06 VSCodeの設定変更

今回はWSLで環境構築したが、開発で使うVSCode上のターミナルからその環境にアクセスしたい。

よって、VSCodeのsettings.jsonに以下を記述する。

※settings.jsonの開き方は、Ctrl-Shift-Pを押して、そこで「json」と入力。 settings.jsonを開く的なニュアンスの英語が選択肢としてあると思うので、それをクリック!

波括弧 "{ (中身) }" の中身に以下のコードを貼り付け

settings.json
// ターミナルを開いた時にWSLのCUIにアクセスするように設定 at 2019/06 on CODEBASEプログラミング教室
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\wsl.exe"

試しにターミナルを起動して確認してね。

※ちなみに、ターミナルを開くショートカットがあるぞい。Ctrl-@

試しに、インストールRubyのバージョンを確認するコマンドを打ってみても良い。

ruby -v

さっきと同じ2.6.3が表示されれば成功

(余談)info. シンボリックリンクを作成しとく

必要な人のみやる。ただ、何かと便利

シンボリックリンクとは、簡単に言うとショートカット。

  • デスクトップへのリンク作成
ln -s /mnt/c/Users/(Windowsユーザー名)/Desktop ~/Desktop
  • 僕はOneDriveもやっとく
ln -s /mnt/c/Users/(Windowsユーザー名)/OneDrive ~/OneDrive

最後に

本来はaptで取得する先を日本のサーバーに切り替えた方が良いらしいが、変更してうまくいくのか検証していないので、載せていない。今後、成功したらアップデートしとく予定。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away