スポンサーリンク

Windows10+WSL2(Ubuntu20.02)でRails7+Sqlite3環境構築【2022年2月時点】

2022年2月6日

Windows10でRails環境構築する方法は、主に3通りあります。

  1. Windows10にRubyInstallerを用いてRubyをインストール
  2. WSL2(Ubuntu20.02)+Docker Desktop for WindowsでDockerコンテナを用いてRails環境構築
  3. WSL2(Ubuntu20.02) にrbenv(Ruby)+nvm(Node.js)+Sqlite3をインストール

このうち、1と2は、過去に以下のようにやりました。

(2)Dockerでやっていこうかと思ったのですが、Dockerだと、確かに気軽に環境構築しまくれるのですが、Dockerのデメリットとして、

と思ったので、今回、上記(3)WSL2(Ubuntu20.02) にrbenv(Ruby)+nvm(Node.js)+Sqlite3をインストール して、 Everyday Rails – RSpecによるRailsテスト入門を写経して勉強してみようと思いました。

スポンサーリンク

Windows10でRails環境構築やDocker利用のリンク

  1. (1)WSL2とWindows Desktopのインストール
  2. (2)Swiftコンテナを作成してSwiftを動かしてみる
  3. (3)Windows10でWindowsとwsl2間でのファイルのコピー
  4. (4)Windows10+WSL2+DockerDesktopでJupyterLab環境構築してみる
  5. (5)Windows10+WSL2+DockerDesktopでWordPressを環境構築してみる
  6. (6)Windows10+WSL2+DockerDesktopでRuby on Rails7+PostgreSQLを環境構築してみる【2022年1月時点】
  7. (7)Windows10+WSL2+DockerDesktop + Ruby on Rails7をHerokuにデプロイ
  8. (8)Railsチュートリアル第4版(Rails5.1)の環境構築【2022年1月時点】
  9. (9)dbコンテナ内のpostgresqlの中身を確認する
  10. (10)ProgateのRubyonRails5学習レッスンの環境構築【2022年1月時点】
  11. (11)Windows10+WSL2+DockerDesktopでRuby on Rails7(TailwindCSS+importmap-rails)+PostgreSQLを環境構築してみる【2022年9月時点】
  12. Windows10+WSL2(Ubuntu20.02)でRails7+tailwindcss+jsbundling-rails環境構築【2022年9月時点】

開発環境

Windows 10 Pro 21H1
Hyper-Vを有効化
Windows Docker Desktop 4.0.0
VisualStudioCode (wsl用の拡張機能インストール済み)

WSL2 Ubuntu 20.04 LTS
VisualStudioCode (+拡張機能 )

『Wndows Docker Desktop』+『WSL2のUbuntu』+VSCodeのセットアップについては「Docker for Windowsを試してみる(1)WSL2とWindows Desktopのインストール」をご参照ください。

今回構築したい環境

rbenv
ruby 3.1
nvm
node.js LTS最新版
yarn
bundler
sqlite3

Rails 7.0

なお、Ruby 歴 10 年の私が【絶対に】 gem install rails コマンドを実行しない理由( 更新日 2020年07月21日 )を写経しながら、やってみたいと思います。

Ubuntu 20.02のupdateとupgrade

WSL2のUbuntu 20.04を起動します。

1日に1回は、以下のコマンドを入力して、Ubuntuの中身を最新版にしておいた方がよいらしいです。(実はよくわかっていません。)

sudo apt update -y
sudo apt upgrade -y

Ruby のビルドに必要なパッケージを apt 経由でインストール

ここら辺がよくわかりません。Macでは、rbenvとruby-buildさえインストールすればよいらしいのですが、とりあえず、書いてある通り、以下のコマンドを入力します。

sudo apt install build-essential -y
sudo apt install -y libssl-dev libreadline-dev zlib1g-dev

sqlite3 に関するライブラリをインストール

以下のコマンドでよいそうです。

sudo apt install libsqlite3-dev

Rubyをインストール

Rubyのパッケージ管理ツール(バージョンの異なるRubyを管理するツール)rbenvと、Ruby-buildをインストールします。

git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
exec $SHELL -l

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

rbenvで、必要なRubyのバージョンをインストールします。今回は、Ruby3.1をインストールしてglobalに設定します。

なお、蛇足ですが、Ruby 2.6 以降は bundler が内包されるようになったので、"gem install bundler"は不要とのことです。

rbenv install -l
rbenv install 3.1.0
rbenv versions
rbenv global 3.1.0
ruby -v

このRubyのインストールは時間が結構かかります。CPUも100%に張り付きます。5分くらい待って、動かないので、Enterを押すと、インストールが終わっていました。よくわかりません。

Node.jsのインストール(Rails7では不要とのことですが)

Node.jsのパッケージ管理ツールnvmをインストールします。Rails6ではNode.jsが必須ですが、Rails7からNode.jsが不要になっています。しかし、まあ、フロントエンド開発でNode (または yarn)は必要になることが多そうなので、とりあえず、インストールしてしまいます。

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
command -v nvm
nvm install --lts
nvm current
node -v
npm install yarn -g
yarn -v

Rails7アプリの作成

Ruby 歴 10 年の私が【絶対に】 gem install rails コマンドを実行しない理由( 更新日 2020年07月21日 ) に従い、gem install railsは行いません。多少面倒ですが、上記の方法でやってみます。

まず、Rails7アプリを作成したいディレクトリを作成し、そのディレクトリに移動してから、VisualStudioCodeを開きます。今回は、wsl2_rails7というフォルダにしました。

mkdir wsl2_rails7
cd wsl2_rails7
code .

以下のようにVisualStudioCodeが開きます。

Ctrl+@でターミナル画面を開き、以下を入力します。

bundle init

作成された Gemfile を開いて、「# gem 'rails’」の"# “を消去して保存した後に、ターミナル画面に以下を入力します。

bundle install

Gemfile.lockが生成されました。

rails new コマンドを実行して、rails に関する gem をまとめてインストールします。 (ここで、「Overwrite /home/adash333/wsl2_rails7/Gemfile?」と表示されるので「Y」を入力)

bundle exec rails new .

1分以内にRailsがインストールされます。

以下のコマンドで、railsサーバを起動します。

bundle exec rails s

この方法だと、"rails s"が使えないのがDockerのときのようにまた不便ですが、これはあきらめることとします。サーバを止めるときは、ターミナル画面に記載の通り、"Ctrl+C"を押します。

ブラウザで、 localhost:3000 を見に行きましたが、Railsの画面が表示されなかったので、さらに、以下の手順を踏むことにしました。

c:\Users\<ユーザ名>\.wslconfig ファイルを作成

Windows 側に c:\Users\<ユーザ名>\.wslconfig というファイルを用意し以下のように記述します。(参考: 2021年05月07日  WSL2内で立ち上げたサーバにWindows側からlocalhostで接続する

以下をコピペして保存します。

localhostForwarding=True

Windowsを再起動

Windowsを再起動します。

その後、WSL2を開き、以下を入力。

cd wsl2_rails7
code .

VisualStudioCodeが開くので、ターミナル画面に以下を入力します。

bundle exec rails s

ブラウザでlocalhost:3000 を開くと、やっと、無事、Railsの画面が表示されました。

WSL2でサーバーを起動したときにWindowsのChromeから接続的ないときは、とにかく、一度Windowsパソコンの再起動をtry

するのがよいそうです。私も、後日、WSL2のRailsアプリのサーバーを起動したときに、WindowsのChromeから localhost:3000を見ようとしても、接続できなかったときに、

Windowsパソコンを再起動

すると、Chromeから接続できるようになったことがありました。終了してから電源ONではなく、「再起動」がよいらしいです(理由は不明)。 (参考: 2021年05月07日  WSL2内で立ち上げたサーバにWindows側からlocalhostで接続する

Sqlite3が利用可能であることの確認

sqlite3がRailsから利用可能かどうか試してみます。

bundle exec rails g scaffold Tweet title:string content:text
rails db:migrate

http://localhost:3000/tweets を開くと、以下のように表示されました。

また、tweetも追加することができました。Sqlite3も使用できているようです。

参考文献

https://qiita.com/oshou/items/6283c2315dc7dd244aef
@oshou
更新日 2017年02月03日
Bundlerの使い方

https://qiita.com/snaka/items/a8eee4cfc8f7d733e6ab
@snaka
更新日 2021年05月07日
WSL2内で立ち上げたサーバにWindows側からlocalhostで接続する

Rails,Rails7

Posted by twosquirrel