注意
この記事は古いのであまり参考にしないほうが良いです。
似たようなエラーがでたときの対処程度に使っていただければ...
(そのうち記事を削除する予定です)
はじめに と 注意
Ruby on Rails + MySQLの環境構築をしていく記事です。
先人様の記事の内容を主に進めていって、エラーが出たところの解決策を書いてます。
初記事なのでやさしい目で見てください。
背景
Rails + MySQL でアプリ作ってみたいけど環境構築で意味わかんないエラー出ちゃった。
全部Windowsのせいにしよう(逃避)。
でもmac持ってない......WSLならできるかな...?
(ちなみに過去にWSL上で開発環境整えようとして失敗した。)
対象
- WSL上でRuby on Railsの開発をしたい!
- SQLiteじゃなくてMySQLでやりたいけど環境構築わかんね!
という方向け。
環境
- Windows 10 Home 64bit
- WSL( Windows Subsystem for Linux ) Ubuntu 18.04.3 LTS
1. WSLにRuby on Rails環境を整える
さっそく他人様まかせで申し訳ないですが
とても、とても素晴らしい記事があるので
ほぼこれを参考にやっていきます...
-
Windows10 で WSL を使って Rails 環境を構築したときのメモ
- WSL導入もあります、シンボリックリンクまでやってください!
- Rubyのバージョンは2.6.3にしました。
※一部別の方法でインストールする部分があるのでリンク先とこの記事を見比べながら作業してください。
(一個一個のインストールに割と時間かかるので気長に待ちましょう。特にrubyのインストール)
少し変更を加える部分 (と軽いhelp)
「2. Node.jsを入れよう」部分
nodejsを導入する際の
sudo apt-get install npm
というコマンドだとnodeおよびnpmのバージョンが最新ではないためやり方を変更。
間違えて入れちゃったというひとも指示に従ってすれば大丈夫(たぶん)
さあ説明を読むぞって思ったひとにはごめんなさい。この記事が神。
さっきのコマンドで入れちゃったって人は「削除する」って項目からやってください。
もう1つ
WSLを再起動とかするとnode -v
をしたときにnot found エラーが起きるかも。
そういうときは
export PATH=$HOME/.nodebrew/current/bin:$PATH
を vim かなんかで~/.bashrc
に追記して試してみてください。
vim で追記する方法は下の方。
「3. rbenvを入れよう」部分
たいしたことではないですが最後の方で
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
を ~/.bashrc に追記する(厳密には上の1行はすでに追記されているはず)手順があります。
「どうやって!?」と思った方は下の方に書いてある「.bashrcに追記ってどうするの!!」を見て追記してみてください。
「5. Rubyを入れよう」部分
本当に時間かかります。環境にもよると思うけれど僕は2~30分かかりました(笑)
解決策?
- 普通は長くて10分くらいらしいのでいったん待ってみる。
- "rbenv install ruby 遅い"でググって出てきたのを試す
BUILED ERROR!! となる人へ
僕も一度なりました。エラー文中に
Try ~~~ `apt -------`
といった感じであったので(詳細なエラー文コピー取るの忘れてました;;)、
それに従ってコマンド実行すると治りました。
.bashrcに追記ってどうするの!!
下のコマンドで、vim で .bashrc を開いて一番下とかに追記していく。
vim ~/.bashrc
vim の使い方はこちらでどうぞ
2. Ruby on Rails + MySQL
Ruby on Railsの環境構築お疲れさまでした。
僕自身この記事を書きながらやっていたら3時間程度たっていました...笑
ということで次はMySQLです。
MySQLのインストール
まずはMySQLをインストールしていきます。が、ここでもとても良い記事を見つけました。
これ通りに行えばエラーなく行けるはずですが、
過去にMySQLいれたことある人や間違えちゃった人はエラーが起こるかも。(体験談)
僕の場合はWSL上からきれいにMySQLを消してもう一回やればいけました。
過去のMySQL関連のファイルとか消したくないって人以外は下記コマンドを実行しましょう。
sudo apt-get remove --purge mysql-*
sudo apt-get autoremove --purge
sudo rm -r /etc/mysql
sudo rm -r /var/lib/mysql
MySQLが起動中だとうまく全ファイルを消せないので、
sudo service mysql stop
としてサーバを停止してから行ってください。
またサーバが止まらない!止められない!という方は
MySQLのプロセスを確認して
ps ax | grep mysql
でてきたプロセスを片っ端からkill
していけばサーバが停止します。
sudo kill プロセス番号
Railsと組み合わせる
MySQLのインストールが終わったのでRailsアプリケーションのデータベースをMySQLとして作っていきます。
まずはRailsで使うMySQLのアカウントを作ります!
rootでログインして、
mysql -u root -p
現在あるアカウントをチェック
select User,Host from mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| root | localhost |
+------------------+-----------+
Rails用のアカウントを作ってチェック
create user 'ユーザネーム'@'localhost' identified by 'パスワード';
select User,Host from mysql.user;
+------------------+-----------+
| User | Host |
+------------------+-----------+
| debian-sys-maint | localhost |
| mysql.session | localhost |
| mysql.sys | localhost |
| railsuser | localhost |
| root | localhost |
+------------------+-----------+
ちゃんと追加されました!
次はRails上でMySQLを使うためのgemをインストールしていきます。
gem install mysql2
しかしここでエラー
ERROR: Error installing mysql2:
ERROR: Failed to build gem native extension.
-省略-
mysql client is missing. You may need to 'apt-get install libmysqlclient-dev' or 'yum install mysql-devel', and try again.
-省略-
指示に従って、一応sudo
をつけて...
sudo apt-get install libmysqlclient-dev
もう一回..!
$ gem install mysql2
Building native extensions. This could take a while...
...
Done installing documentation for mysql2 after 0 seconds
1 gem installed
通りました。
次にデータベースをMySQLに指定したRailsアプリケーションを作成。名前は適当。
rails new mysql-app -d mysql
次にデータベース設定ファイルの書き換えをします。
Ruby on Railsの環境を構築したときにシンボリックリンクを設定したフォルダがあると思うのでそこに先ほど作ったRailsアプリケーションを移動。
最初からそこでrails new
すればよかったのでは?
mv アプリの名前 移動先 -r
vscodeを起動
ファイル > フォルダを開く > Railsアプリ(僕の場合mysql-app)
を選択してvscodeで開く。
config > database.yml
を開いて自分の登録したユーザネームとパスワードを入力します。
default: &default
adapter: mysql2
encoding: utf8mb4
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: [ユーザネーム]
password: [パスワード]
socket: /var/run/mysqld/mysqld.sock
development:
<<: *default
database: mysql_app_development
test:
<<: *default
database: mysql_app_test
production:
<<: *default
database: mysql_app_production
username: mysql_app
password: <%= ENV['MYSQL_APP_DATABASE_PASSWORD'] %>
セーブ後データベースを作って
rails db:create
アプリケーションを起動して
rails s
ブラウザ(http://localhost:3000) で確認出来たら終了です!
お疲れさまでした。
参考