はじめに
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勉強しよう。笑
コメントを残す