【本日の学習内容:Rakeタスクの実装】
引き続き、rakeタスクの実装をしました。
名前空間(name_space)
目的が一緒でも名前を区別したいタスクが複数存在するときがある。
例えば、「データベースにCSVデータを登録する」という目的は同じでも、「ユーザーデータを登録するタスク」と「商品データを登録するタスク」を定義する場合など。
いろんな目的を持ったタスクが大量に存在していると混乱してしまうので、
名前空間を利用することで大まかなグループ分けを行い、管理する。
CSVデータをデータベースに投入するアプリの作成流れ
アプリを作りたい場所に移動し、アプリの作成(rails new アプリ名 -d postgresql)
アプリの場所に移動し、アプリに対応するデータベースを作成(bundle exec rake db:create)
まずは、データを格納するためのテーブルを作成する必要があるので、
モデルとマイグレーションファイルの作成(rails g model モデル名)
マイグレーションファイルの編集
マイグレーションファイルの内容が反映されたテーブルの作成(bundle exec rake db:migrate)
無事にテーブルが作成できたら、
rakeファイルの作成(rails g task ファイル名)
rakeファイルへCSVインポート機能を記述
- 名前空間
- タスクの説明
- タスクの名前
- 実行したい処理
CSVファイルを保管するディレクトリの作成し、CSVデータを記述
定義したrakeタスクコマンドを実行(CSVデータをデータベースに投入)(定義したrakeタスクはrake -Tコマンドで確認できる)
Rails環境のコンソールを立ち上げ、ユーザーのデータが存在するかどうか確認(テーブル名.all)
ドランザクション制御
データベースへの変更を反映させるタイミングを制御するもの。
一連の処理が完了するまでデータベースに変更を反映させないようにすれば、処理が成功した時だけデータベースが変更されるようになる。
colorize(gem)
処理結果を色で分けることができる。
gem 'colorize' をGemfileに追加し、
bundle install コマンドでgemをインストールする。
出力する文字を赤に変えたい場合は"hoge".red、緑に変えたい場合は"fuga".greenとコードを書く。
ちなみに、
CSVとは Comma Separated Value の略で、Comma(カンマ)で値を区切ったデータ形式のことらしい。