railsの6.0.1(2019年秋時点最新版)をインストールしました。
結果として、今まで(5.3)の手順通りだとrailsのプロジェクトが立ち上がらなかったので、紆余曲折した新たな手順を記載します。WebpackerとそれにともなってYarnのインストール(Ubuntu版)について、更に最後に悩まされた「Don’t know how to build task ‘default’」エラーへの対応を記述します。
目次
環境
OS:Ubuntu(Windows Subsystem for Linux/Windows10)
Ruby:2.6.4p
Rails:6.0.1
新規プロジェクトの初期立ち上げ手順新旧比較(5.3→6.0)
旧手順(5.3)
rails2.5.3の時まではrailsプロジェクトの初期セットアップは以下の手順でした
(dbをPostgresqlの場合)
- $ rails new [プロジェクト名] -T -d postgresql
- $ cd [プロジェクト名]
- $ sudo service postgresql start ←ただし、すでにpostgresqlが立ち上がっていれば不要
- $ bin/rails db:create
- $ bin/rails s
上記の⑤のステップ後にブラウザで「localhost:3000」アドレスを開くと、おなじみのtop画面が出るはずでした…
新手順(6.0)
- $ rails new [プロジェクト名] -T -d postgresql
- $ cd [プロジェクト名]
- $ sudo service postgresql start ←ただし、すでにpostgresqlが立ち上がっていれば不要
- $ bin/rails db:create
- [yarnのインストール]( 詳細手順後述)
- webpackerのインストール(詳細手順後述)
- $ bin/rails db:migrate
- $ bin/rails s
⑤、⑥、⑦の手順を新たに行わないといけなくなったようです
ちなみに、⑤、⑥、⑦を入れないと以下のようなエラーが出ます
(前略) Please run rails webpacker:install Error: No such file or directory @ rb_sysopen - [作業フォルダ]/[プロジェクト名]/config/webpacker.yml (RuntimeError)
webpacker.ymlがないので、「rails webpacker:install」を実行しろと出たので実行ました。(以下すべての実行は、[プロジェクト名]のフォルダ内
$ bin/rails webpacker:install Yarn not installed. Please download and install Yarn from https://yarnpkg.com/lang/en/docs/install/
「Yarn」がインストールされていないとメッセージが。
そろそろ、そもそもwebpackerとか、Yarnってなんだよと思いはじめたので、ネットで検索
WebPacker/Yarnとは何か
こんにちは!システムエンジニアのオオイシです。 Ruby on RailsのWebpackerをご存知ですか!? Webpackerを使うとフロントエンド開発で有名なWebpackがRuby on Railsで使えるようになります。 「そもそも、フロントエンド開発はよくわからない・・・」 「Webpackはなにに使うの?」 というそんなあなたにも、今回は以下の内容について解説していきます! 【基礎】Webpackerとは 【基礎】Webpackの特徴 【基礎】Webpackerのインストール方法 【発展】Webpackerで追加されたファイル一覧 【発展】webpacker.ymlの設定とエントリーポイン... 【Rails入門】Webpackerではじめるフロントエンド開発!Rails5.1対応 | 侍エンジニ... - 侍エンジニア塾Blog |
Webpackerとは、モダンなフロントエンド開発を強力にサポートするWebpackをRuby on Railsで使うためのgemパッケージです。
Ruby 5.1から標準でサポートされるようになりました。
Webpackとは、CSS、JavaScript、画像などを1つのファイルとしてまとめるためのモジュールバンドラーで、node.jsのモジュールの1つです。
railsの5.3で勉強を始めたのですが、このパッケージは、5.1から利用できるようになっていたようです。
どうやらそれが、6.0から標準で必要になったようです。ちなみに、Yarnは同じ記事に以下のように記載されています
Webpackerはyarn(ヤーン)を使います。
yarnとは、Facebookが開発したnode.jsのパッケージマネージャです。
node.jsにはnpmという標準のパッケージマネージャがありますが、yarnの場合は、
モジュールのインストールがとにかく早い!
yarn.lockというバージョン固定の仕組みがある
package.json(node.jsの依存関係解決)をそのまま使える
などの特徴があります。
こっちはパッケージマネージャ。ふーん( 分かってない😅)
Yarnのインストール
上記の記事には、YarnのインストールについてはMac版とWindows版しか書いてありませんが、私の開発環境はUbuntuです(Windows10のWSL上)
そのため、どちらも参考にならず、とりあえず他のパッケージと同じ方法(apt)でインストールを試みました
$sudo apt update $sudo apt-get install yarn
正常にインストールされたのですが、インストールされたyarnのバージョン(yarn –versionで確認)では、0.32とのこと
この状態で再びwebpackerのインストールコマンドを実行すると以下のようになります(作成したプロジェクト上)
$bin/rails webpacker:install Webpacker requires Yarn >= 1.0.0 and you are using 0.32 Please upgrade Yarn https://yarnpkg.com/lang/en/docs/install/
Yarnが古いと言われます。最初は、aptのリストが古いのかと思い(上記のupdateをしていなかった)Update後に再度実行しましたが、できません。
結局、エラーメッセージにある https://yarnpkg.com/lang/en/docs/install/に行きました( 英語かぁ)
トップ画面の中にオペレーションシステムを選択する欄があります(以下の図の赤枠)
結局、Curlでファイルを取り込んだ上で、teeコマンドで、aptのソースリストを自力で更新する必要があります
上記のsiteのコマンドをコピペして以下を実行
$curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - OK $echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list deb https://dl.yarnpkg.com/debian/ stable main
この後で改めてapt installを実行
$sudo apt update $sudo apt install yarn
ちなみに、apt updateはもう一回行わないとyarnは古いものしかインストールされません(さっきやったからいいやと思いましたがだめでした)
yarnのバージョン確認
$yarn --version 1.19.1
上記は、2019/11/23現在です
webpakerのインストール
ここまでくれば、次の手順は簡単でした
$ bin/rails webpacker:install create config/webpacker.yml (後略)
とりあえず、最初に立ち上げた時に見つからないといわれたconfig配下のwebpacker.ymlも生成されたようですし、その他色々インストールされ、プロジェクト内にファイルが作成されます
db:migrateの実行
よーし、終わった。さぁ、起動!
といさんで、「bin/rails s」を実行しましたが、また不穏なエラーが。
rails aborted! Don't know how to build task 'default' (See the list of available tasks with `rails --tasks`) /mnt/c/Users/kseik/Dropbox/dev/rails/moyorieki/bin/rails:9:in `' /mnt/c/Users/kseik/Dropbox/dev/rails/moyorieki/bin/spring:15:in `' bin/rails:3:in `load' bin/rails:3:in `' (See full trace by running task with --trace)
ネット検索で、以下のページにたどり着きました
はじめに初歩的なエラーかと思いますが、私が初心者のため備忘録を含め記録として残したいと思います。結論:rails db: migrateではなく、rails db:migrateを実行する。ターミナルで$ rails... Rails:[Don't know how to build task 'db:']の対処方法 - Qiita - Qiita |
なんか、起きている事例はちょっと違いますが、確かにdb:migrateは実行していなかったなと思い実行後、再度起動
$ bin/rails db:migrate $ bin/rails s
ほんの数ヶ月触ってなかっただけで、またこんなに苦労するとは思いませんでした。
webpackなどは、使うと便利そうな機能なのでこれから勉強ですorz
railsの勉強は以下の2つの本を見てやっています。
以上 Rails6.0におけるプロジェクト初期セットアップ手順新旧比較記事でした
ちなみに数ヶ月前に書いた記事は、以下。この後、旅行行ったりなんかで色々していたら結構忘れてしまっていました
Ruby on Railsの開発において、利用者のサインアップ機能を実装しようとしていろいろ試行錯誤しながらなんとか形になったので、備忘録的に記事にしますまだ、初学者でマイナビ出版の「現場で使える Ruby on Rails5 速習実践ガイド」を元に開発したTaskLeafの利用者管理機能に対して、利用者が自ら自身の情報を登録するところまでの実装です管理者以外が利用者が自分でユーザー登録する機能を実装したい前提として、この記事は上記の「現場で使える Ruby on Rails5 速習実践ガイド」内で作成するTask管理アプリケーションをベースにして... [Rails]Ruby on Railsで利用者サインアップ機能を実装する - 演劇とかの感想文ブログ |