【結論】
・Railsにはrake db:seed
で初期データを投入する方法が標準で備わっている
・しかし、環境毎に内容を分けたり、一度作成したデータは投入しない様にしたりといった細かい調整が面倒
・seed-fu
というgemを用いれば、それらの設定を簡単に行える
【目次】
- 初期データの管理について
- 導入方法
- 環境毎に読み込むシードファイルを分ける
- データの更新したく無い場合
- Capistranoの自動デプロイと一緒に読み込む
- 参考情報
- 《今日の学習進捗(3年以内に10000時間に向けて)》
【本題】
初期データの管理について
Railsにはrake db:seed
で初期データを投入する方法が標準で備わっています。
しかし、下記の様に、細かく設定を行おうとすると、少し不便です。
環境ごとにデータの内容を変える
既に作成されたデータは再投入しない様にする
デプロイと一緒に初期データを投入したい
そんな時に役立つのがseed-fu
です。
これは、シードファイルの管理を容易に行う為のgemです。
導入方法
まずはgem本体をインストールします。
gem 'seed-fu'
環境毎に読み込むシードファイルを分ける
次にdb/fixtures
ディレクトリ配下にseedファイルを作成します。
この際、development
・production
というディレクトリを作成して、そこにseedファイルを格納すると、環境毎に読み込むseedファイルを切り替える事が可能です。
データの更新したく無い場合
一度初期データを作成した後に、再読み込みしたく無い場合は、seed_onceを利用します
Point.seed_once(:x, :y) do |s| s.x = 4 s.y = 7 s.name = "Home" end
Capistranoの自動デプロイと一緒に読み込む
config/deploy.rb
に下記を記述すれば、Capistranoで本番環境にデプロイした時に、同時に初期データを投入する事も可能です。
require 'seed-fu/capistrano' # Trigger the task after update_code after 'deploy:update_code', 'db:seed_fu'
参考情報
seed-fu を使い、Rails上で使うデータを設定する話 - Qiita
railsで初期データを入れる(seed-fuの使い方) - Qiita
Railsでseed-fuを使って初期データを作ろう! - bagelee(ベーグリー)
[Rails] seed-fu を使って初期データを作成する | DevelopersIO
seed-fuで始める効率的なRails Seed管理【Rails 4 x Ruby 2.1】 | 酒と涙とRubyとRailsと
《今日の学習進捗(3年以内に10000時間に向けて)》
別プロジェクトのインフラ構成について、担当者の方からレクチャーして貰ったが、知らないツールが多過ぎて理解が追い付かなかった。インフラ周りは、クラウドであればAWS・GCPがあって、AWSの中でも無数にサービスがあり、WebサーバーもNginxやpumaなど複数選択肢があり、更に自動デプロイのツールや監視サービスも含めると、網羅すべき範囲が非常に広大で、全てを把握するには、かなり時間を要すると感じている。まずは、どういった種類のツールやサービスがあって、それらの概要程度は理解しておきたい。また、TCP/IPなど知識を身に付けて、ツールやサービスの特徴をスムーズに理解できる土台を固めて行きたい。
学習開始からの期間 :165日
今日までの合計時間:1599h
一日あたりの平均学習時間:9.7h
今日までに到達すべき目標時間:1507h
目標との解離:92h
「10,000時間」まで、
残り・・・「8401時間!」