2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

WSL環境下でRailsを動かしたときの小ネタ

Last updated at Posted at 2021-08-25

初めに

WSL1環境下で、Railsを動かしたときにちょっと引っかかった小ネタを紹介します。

環境設定

  • OS: Windows10 Pro 64bit
    • Version: 1909
    • OS build: 18363.1256
  • WLS
    • Ubuntu 20.04
  • Ruby 2.7.2
  • Rails 6.0.3.3

BCrypt::Errors::InvalidHash: invalid hash

deviseを利用しており、またMacからWindows環境へ乗り換えたときに発生する可能性が高いのがこのエラーです。
Rails: BCrypt::Errors::InvalidHash (invalid hash) Devise 1.5.4 Rails 2.2.5

$ vi Gemfile
# To use ActiveModel has_secure_password
gem 'bcrypt', '~> 3.1.13'

$  bundle update bcrypt-ruby

バージョンアップ以外にも、MacからUbuntu環境などに移行したときなどにも発生するようです。
該当gemのバージョンアップで解決できます。私の環境下では**bcrypt (3.1.16)**で正常に動くようになりました。

デーモンの自動起動設定

実はWSL1/及びWSL2環境下ではUbuntuのsystemctlが上手く動作しません。
WSL2環境下だとsystemctlを動かして、デーモンの自動起動設定ができるみたいですが
WSL1だと動かせないようです。

Windows 10 or 11 Home(WSL2)のUbuntuでsystemctlを利用する方法(systemdをPID1で動作させる方法) | Snow System

かといって、毎回デーモンを起動させるのは面倒なので

Windows10のWSL上にあるServiceを簡単に自動起動させる

こちらを試してみます。

  • Windows + R で「ファイル名を指定して実行」を表示
    image.png
  • shell:startup と入力してEnter
  • C:\Users\[ユーザ名]\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup が開く
# file名 enable_wsl_service.bat
@echo off
wsl -u root -- service memcached start
wsl -u root -- service mysql start

上記ファイルを作成後は、Windows起動直後にサービスが立ち上がるようになります。

Letter Openerの設定

WSL環境上でletter_openerのGemを利用する場合、メール送信時にWebブラウザが起動してメールを表示してくれません。

以下の
Add Windows 10 WSL Support #157

# WSL上で実行 Chromeのパスを指定
export BROWSER='/mnt/c/Program\ Files\ \(x86\)/Google/Chrome/Application/chrome.exe' 

こんな感じで、環境変数にブラウザのパスを指定してあげれば、動くようにはなりますが...

image.png

WSL側のパスを認識できない...本当なら/wsl$/Ubuntu-20.04/というのが先頭についていてほしい...そこまで重要じゃなかったので今回はスキップします。letter_opener_webを使えばなんとかなりますし、最悪letter_openerのファイル保存パスをWindows側にすることで解決できます。

試してませんがwsluという解決策もあるみたいです。

最後に

WSL1でRails試してますが、概ね良好という感じです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?