現場で使える Ruby on Rails 5速習実践ガイドの環境構築(Windows編)

はじめに

Dockerの勉強を通じてVirtualBoxの共存方法が理解できたました。

更に理解を深めるため、過去に挫折したRailsの環境構築を試してみます。

✅ゴール
・Railsの環境構築の理解を深める

✅環境
Windows/Ubuntu18.04(Windows for Linux)

✅参考教材
📚現場で使える Ruby on Rails 5速習実践ガイド
📚改訂4版 基礎Ruby on Rails 基礎シリーズ 
※以前購入した書籍がUnlimitedでタダという衝撃。。。

環境構築

UbuntuターミナルでRubyのバージョンを確認。

※ちなみに僕の場合ディレクトリはコチラに存在(長すぎ。。。)。
C:\Users\chonm\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\chobi

管理者として入ること!!

ls
>>~~.asc  rails
ruby -v
>> ruby 2.5.7p206 (2019-10-01 revision 67816) [x86_64-linux-gnu]

※余談:Gitで確認するとバージョンが違うのが判明。

①rbenvのインストール

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

②パスを通す

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

再起動してコマンドの動作確認

rbenv -v
>> rbenv 1.1.2-30-gc879cb0

③Ruby-buildセットアップ

git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm5 libgdbm-dev

※libgdbm3がunable。5だと入る。(Ubuntu18.04の場合はこれで対処するらしい。参照)

④Rubyのインストール

rbenv install 2.5.1
rbenv global 2.5.1
rbenv versions
ruby -v
which ruby

⑤RubyGems

gem update --system
gem -v
gem list

⑥Bundlerインストール

gem install bundler

⑦Railsインストール

gem install rails -v 5.2.1
rails -v
>> Rails 6.0.3
sudo gem install rails -v 5.2.1 // 管理者として実行

⑧Node.jsのインストール

curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
>> サポート終わると言われる
curl -sL https://deb.nodesource.com/setup_10.x — Node.js 10 LTS "Dubnium" | sudo -E bash -
>> こちらでインストール
sudo apt install nodejs

⑨PostgreSQLのインストール

sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
>> OK
sudo apt update
sudo apt install postgresql
psql -V
>> psql (PostgreSQL) 12.3 (Ubuntu 12.3-1.pgdg18.04+1)
sudo service postgresql start
>> Starting PostgreSQL 12 database server
sudo su postgres -c 'createuser -s chobi' // データベースユーザー名をRailsの初期設定で利用できるようにUbuntuのログインユーザー名にする
sudo apt install libpq-dev

⑩アプリケーション作成

rails new scaffold_app -d postgresql
cd scaffold_app
bin/rails db:create
>> WARNING:  could not flush dirty data: Function not implemented
   Created database 'scaffold_app_development'
   WARNING:  could not flush dirty data: Function not implemented
   Created database 'scaffold_app_test'
bin/rails s

※binを使うとルートディレクトリ直下のrailsスクリプトを呼び出す形になる(Gemfileどおりのgemを利用できる環境上でrailsコマンドを実行できる)。

http://127.0.0.1:3000/へアクセス

✅テキストエディタの使い方 ※参考は基礎Rails P26

WSL/UbuntuではVSCodeなどで操作するとファイルなどが壊れる可能性がある。

ln -s /mnt/c/Users/chobi/Desktop/scaffold_app ~/scaffold_app // 事前にデスクトップにscaffold_appを作成してシンボリックリンク作成
sudo apt-get realpath // 無効なる。。。
code . //VSCodeが起動する。

アプリケーション作成

①作成

rails new taskleaf -d postgresql
cd taskleaf
bin/rails db:create

②DB作成

bin/rails generate scaffold user name:string address:string age:integer
bin/rails db:migrate
bin/rails s

基礎Rails

Ubuntuの方で作成

rails new asagao -BCMT --skip-coffee -d sqlite3
bundle lock --add-platform x64-mingw32 x86-mingw32
>> Writing lockfile to /home/chobibi/rails/asagao/Gemfile.lock

躓いた点

✅railsをインストールしたはずなのにrailsコマンドが使えない

起因:管理者として実行していなかった

解決:sudoコマンドを使うか、管理者としてアプリを実行する。

参考:
管理者として実行する方法
管理者権限でファイルやフォルダーを開く

※rbenv rehashを打つと反応するようになるらしいが、効果得られなかった。

※curlコマンドはデータ転送で用いられるらしい。

✅rails generateするとrbenv: version `2.5.7′ not installedとなる

起因:Railsのバージョンが6.0.3の場合、教本通りの2.5.1は対応できないっぽい。

解決:rbenvをアップデート

rbenv install 2.5.7
~~上記一連の流れを再度実施・・・~~
bundle install

✅scaffold_appでgenerateできず/userにアクセスできない

起因:PostgreSQLがエラーっぽい ⇒railsはDBが生成できないとサーバー起動しないようなのでこれが原因ではなさそう。。。

解決:明示的にPostgreSQLのバージョンを10.5にする(下げる)

bin/rails db:create
>> WARNING: could not flush dirty data: Function not implemented
   Created database 'taskleaf_development'
   WARNING: could not flush dirty data: Function not implemented
   Created database 'taskleaf_test'

参考:Windows subsystem for Linux内でPostgresqlサーバを起動したいUbuntu(WSL)でpostgreSQLに接続できず、起動もしない

おわりに

久しぶりにRailsを触ってみた。

当時、訳も分からず書籍に従ってコマンドを打っていただけなのでアレンジしようにもRailsの仕組みはさっぱりだった。

ただ環境構築ができるようになった点だけは当時より成長を感じた。

が。うん、おとなしくLaravel勉強しよう。笑

コメントを残す