僕の世界観を変えてみる

文系男子が趣味でプログラミングを勉強していくブログです。他にも日常で起きたどうでもいいことや愚痴を書いていきたいです。座右の銘は和を以て貴しとなすです。仲良くやろうよ。

【Ruby on Rails】rails --server でサーバが起動しない件について

ruby on rails で少し遊ぼうと思ったが最初からエラーの連発で大変だったのでまとめようと思う。

環境

  • Vagran Ubuntu/trasty64

  • Ruby -v 2.7.1

railsのインストール

$ gem install rails
$ rails -v
>>
6.0.3.2

railsはデフォルトのデータベースにsqlite3を使用するようなのでsqlite3もインストールする。

$ sudo apt install sqlite3
$ 

rails newを実行するとBuildErrorが発生

ドットインストールに倣いmy_appという名前でアプリを作成してみる。

$ rails new my_app

>>
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing sassc (2.4.0), and Bundler cannot continue.
Make sure that `gem install sassc -v '2.4.0' --source 'https://rubygems.org/'` succeeds before
bundling.
Could not find gem 'sqlite3 (~> 1.4)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.

この時点でたくさんのエラーが表示されていた。

ドットインストールの補足にはGemfile内のsqlite3の記述部分を変更すると書かれていたが、大丈夫そうだったのでそのままにした。

bundle install

$ bundle install
>>
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.
An error occurred while installing sassc (2.4.0), and Bundler cannot continue.
Make sure that `gem install sassc -v '2.4.0' --source 'https://rubygems.org/'` succeeds before
bundling.

sqlite3に関するエラーは消えたがBuildエラーは出ていたのでMake sure thatgem install sassc -v '2.4.0' --source 'https://rubygems.org/'succeeds beforeこの部分を試してみる。

gem install sassc -v '2.4.0' --source 'https://rubygems.org/'

bundlerの実行ができなかったので次のコマンドを試すように促されている。

$ gem install sassc -v '2.4.0' --source 'https://rubygems.org/'
>>
Building native extensions. This could take a while...
Successfully installed sassc-2.4.0
Parsing documentation for sassc-2.4.0
Installing ri documentation for sassc-2.4.0
Done installing documentation for sassc after 0 seconds
1 gem installed

コマンドはうまく行ったようで、sasscのインストールが完了したらしい。

sasscを調べても速いぞ!って記事しか見つからなかったのでなんなのかわからないがsassのコンパイラかなにかだろうか。

railsサーバを起動してみる

rails newで作成したmy_appディレクトリに移動してサーバを起動してみる。

rails sでサーバを起動、-bでipアドレスを指定、-dでバックグラウンドでサーバを起動させるオプション。

$ cd my_app
$ rails s -b 192.168.33.10 -d

>>
Could not find gem 'sqlite3 (~> 1.4)' in any of the gem sources listed in your Gemfile.
Run `bundle install` to install missing gems.

またもsqlite3bundle installしろと表示がでてきた。

bundle updateしてみる

bundle, Gemfileについて調べていたらこんなQiitaが出てきた。

Bundler, Gemfile, Gemfile.lock について - Qiita

すでに用意された Gem に変更を加える場合は Gemfile.lock を修正し、 bundle update を行います。例えばバージョンの変更や不必要な Gem を削除したい時などです。

とあったのでbundle updateしてみる。

$ bundle update
>>
Bundle updated!

bundle updateはうまくいったようなのでもう一度サーバを起動させてみる。

$ rails s -b 192.168.33.10 -d

>>
in `rescue in load': Webpacker configuration file not found /home/vagrant/workspace/ruby/rails_lessons/my_app/config/webpacker.yml. Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - /home/vagrant/workspace/ruby/rails_lessons/my_app/config/webpacker.yml (RuntimeError)  

ずらずらと文字が出てきて最終的にrails webpacker:installするように促された。

rails webpacker:installしてみる

$ rails webpacker:install

>>
sh: 1: node: not found
sh: 1: nodejs: not found
Node.js not installed. Please download and install Node.js https://nodejs.org/en/download/

と、nodeがないからインストールするように言われる。

nodeとnodejsと一応npmをインストールする
$ sudo apt-get install nodejs npm node
$ rails webpacker:install
>>
Webpacker requires Node.js >= 8.16.0 and you are using 0.10.25
Please upgrade Node.js https://nodejs.org/en/download/

(え、nodeとnodejsの違いがわからない…)

一通りエラーもなくインストールできたのであらためてrails webpackerをインストールしてみると今度はNode.jsのバージョンをあげるように言われた。

nodejsのアップデート

nodejs ubuntu アップデートで検索したところnと呼ばれるパッケージを使ってアップデートできると記事があったので試してみる。

$ sudo npm install n -g
>>
npm ERR! If you need help, you may report this log at:
npm ERR!     <http://github.com/isaacs/npm/issues>

npmのエラーが連発していて、今度はgithubのissuesを見るように促されたのでアクセスしてみる。

インストールについてnpm ERR! Error: ENOENT, open ~ /gulp/package.json · Issue #2 · inc2734/mimizuku-child · GitHub

どうやらnodeとnpmのバージョンが古いことが原因らしい。

node -v v0.10.25 npm -v 1.3.10

激古

ということなのでいったんnpmのバージョンアップをしてnodeのバージョンアップを試みる。

npm update -g npm してみる

npmを使ってnpm自身をアップデートできるらしい。

$ npm update -g npm

さて、このコマンドを実行しても反応がない。

npm -vしてみてもバージョンアップは1.3.10のまま。

と、ここでふと思ったのがアップデートする順番ってnode.jsが先じゃない?

nvmでNode.jsのバージョン管理

githubのissuesにあったようにnvmを使ってnodeのバージョンアップをしてみる。

※あとで知ったけどバージョン管理はnvmのほかにnodenvnodist, nなどあるらしい。

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/master/install.sh | bash

これでnvmのインストールができた。

sourceコマンドでbashrcディレクトリを更新してnvmのバージョンを確認してみる。

$ source ~/.bashrc
$ nvm --version

>>
0.35.2

次にnodeのバージョンを上げる

nvm ls-remoteコマンドでnodeのバージョン一覧を確認できるが、もう安定板でいい。

$ nvm install stable


>>
Now using node v14.6.0 (npm v6.14.6)
Creating default alias: default -> stable (-> v14.6.0)

nodeのバージョンアップをしたことでnpmもバージョンアップできたっぽい。

yarnをインストールする

npmのバージョンアップができたのでwebpackerのインストールをもう一度試みる。

$ rails webpacker:install
>>
Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/

すると今度はyarnをインストールするように言われた。

yarnとはnpmと同様パッケージマネージャーらしい。 ▼パッケージマネージャとは

$ sudo apt install yarn
>>
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package yarn

むむ、apt曰くyarnが見つからないらしいのでyarnの公式を見てみる。

Installation | Yarn

どうやらリポジトリの設定をしてからでないとインストールできないようだ。

公式サイトにあるようにコマンドを実行していく。

$ curl -sS https://dl.yarnpkg.com
/debian/pubkey.gpg | sudo apt-key add -

>>OK
$ echo "deb https://dl.yarnpkg.co
m/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list

>>deb https://dl.yarnpkg.com/debian/ stable main

リポジトリの設定が終わったのでyarnをインストールをしていく。

$ sudo apt update && sudo apt install yarn

>>Setting up yarn (1.22.4-1) ...

yarnのインストールも終わったようだ。

rails webpacker:installを再度試す

rails webpacker:installに戻る。

$ rails webpacker:install

>>
run  yarn add --dev webpack-dev-server from "."
info No lockfile found.
An unexpected error occurred: "EPROTO: protocol error, symlink...
Webpacker successfully installed �🎉

webpackerのインストールは成功。

しかし、yarnのほうでエラーがでていた。

このままサーバを起動してみてもうまくいくが、yarnのエラーが気になるので直そう。

yarn add --dev webpack-dev-serverを追加するようにと、yarnのlockfileがないのと、symlinkで予期せぬエラーが発生したということ。

symlinkはホストOSとゲストOSとのファイル共有のことらしいのでrootに移動してから(今はrails newで作成したmy_appディレクトリにいるので)yarn add --dev webpack-dev-serverコマンドを試してみる。

$ yarn add --dev webpack-dev-server`

>>
success Saved lockfile.
success Saved 253 new dependencies.
.
.
.
Done in 3.87s.

いくつかwarningはでているがうまく行ったらしい。

railsサーバを起動してみる

$ $ rails s -b 192.168.33.10 -d   

>>
=> Booting Puma
=> Rails 6.0.3.2 application starting in development
=> Run `rails server --help` for more startup options

エラーもでないので192.168.33.10:3000にアクセスしてみる。

f:id:htmllifehack:20200726033306p:plain
rails server

まとめ

環境構築が一番大変。