現在Webエンジニアになるには学ぶ事が多すぎるに書いたように、今年初め新人にRuby on Rails教育を行いました。
その際には最新のRuby on Railsバージョン6.1を使ったのですが、このバージョンからRailsプロジェクト作成コマンドrails new
に--minimal
オプションが追加されました。
--minimal
オプションを付けてRailsプロジェクトを作成すると、Ruby on Railsバージョン1.Xのようなシンプルなプロジェクトを作成できます。
Ruby on Railsに追加された機能
Ruby on Railsバージョン1.Xでプロジェクトを作りscaffold
ジェネレーターを使うと、データベースの1つのテーブル対し一覧表示・詳細表示・作成・変更・削除が行えるWebアプリを生成してくれます。それ以外の機能はメール送信ぐらいでした。
その後Ruby on Railsが爆発的に使われるようになると、毎年のようにバージョンアップが行われて来ました。内部構造の改良も多く行われましたが、一般的なWebアプリで使うような機能が次々とRailsに追加されてきました。 WikipdiaのHistoryには各バージョンの変更点がわかりやすく書かれています。
バージョン6.1でrails new --help
を実行すると多数のオプションが表示されますが、以下のオプションは追加機能を入れないオプション指定です。
- —skip-action-mailer メール送信
- —skip-action-mailbox メール受信
- —skip-action-text リッチテキスト
- —skip-active-job バックグラウンドジョブ
- —skip-active-storage クラウドストレージサービス
- —skip-action-cable リアルタイム通信
- —skip-javascript JavaScript
- —skip-turbolinks ターボリンク
- —skip-jbuilder JSON API
- —skip-webpack-install webpack(モダンJS開発環境)
javascriptはバージョン1以前から?、action-mailerはバージョン2、turbolinksはバージョン4、jbuilderもバージョン4ですがJSON APIのサポートは(たぶん)バージョン2からありました。 それ以外はバージョン5以降の追加だと思われます。
EY-Officeの教育ではどうしていたのか
EY-OfficeのRuby on Rails教育では基本的には最新のRailsを使っていました。入門編ではrails new
コマンドでオプションを指定していませんでしたが、Gemfileのgem 'jbuilder'
をコメントアウトしJSON用コードがコントローラーに入らないようしていました。
- jbuilderが無効になっていると以下のようなcreate(作成)メソッドがコントローラーに生成されます
def create
@todo = Todo.new(todo_params)
if @todo.save
redirect_to @todo, notice: 'Todo was successfully created.'
else
render action: 'new'
end
end
- しかしjbuilderが有効になっていると同じcreateメソッドは以下のように謎コードになります。行数的にはたいしたことはありませんが、Ruby言語の初心者にはかなり手強いコードだと思います
def create
@todo = Todo.new(todo_params)
respond_to do |format|
if @todo.save
format.html { redirect_to @todo, notice: 'Todo was successfully created.' }
format.json { render action: 'show', status: :created, location: @todo }
else
format.html { render action: 'new' }
format.json { render json: @todo.errors, status: :unprocessable_entity }
end
end
end
また、active-jobやaction-cable等は概要を説明するのみで「後は気にしないように」と話して教育を進めています。
受講者の中にはこれらの部分が気になってしまう方もいますが、まずはRuby on Railsの基本を学ぶ事が重要ですと話していました・・・
—minimalオプションありがとう!
バージョン6.1になり、--minimal
オプションが追加されました。このオプションは --skip-spring --skip-listen --skip-bootsnap --skip-action-text --skip-active-storage --skip-action-cable --skip-action-mailer --skip-action-mailbox --skip-test --skip-system-test --skip-active-job --skip-javascript
をすべて指定したのと同等で、Rails1.Xのようなシンプルなプロジェクトを作成できます。
バージョン6.1を使ってRuby on Rails教育を行うことになり、バージョン6.1をインストールし--minimal
オプションを発見した時には小躍りしました😊
しかし --skip-javascript
でJavaScriptがまったく入らないため、Scaffoldが生成したコードでは削除(Destroy)が動作しません!
そこで、今年初めの教育ではRuby on Rails自身を教える事が目的ではなかったので、安易に jquery-ujs
(Rails用JavaScriptコード)、jQuery
を取り込むScriptタグを app/views/layouts/application.html.erb
(レイアウトのテンプレート・ファイル)に追加して対応しました。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.minjs"></script>
<script src=" https://cdnjs.cloudflare.com/ajax/libs/jquery-ujs/1.2.2/railsjs"></script>
正しくはjquery-ujsにあるように、jquery-rails
gemをインストールし設定ファイルを変更する事かもしれませんが・・・・