🧗

Decidimでコンポーネントを追加する方法

2022/02/20に公開

Decidimは各コンポーネントやスペースがRails Engineとして実装されているということもあり、新しくコンポーネント等を追加したいと思っても、単純に「Gemfileに追加してbundle install」といったやり方では追加できません。というわけで、その手順をかんたんに書いておきます。

コンポーネントを追加する

やり方の基本としては Updating Decidimに書かれているアップデートのやり方と同様になります(gemを更新するのとgemを追加するのの違いになります)。

Gemfileにgemを追加する

Gemfileに追加したいコンポーネントのgemを、いつものgemの構文で追加します。
たとえば、Conferenceコンポーネントを追加したい場合、decidim-conferencesgemを以下のように追加します。

source "https://rubygems.org"
ruby RUBY_VERSION

gem "decidim", "0.24.3"
gem "decidim-conferences", "0.24.3"

# (以下略)

gemをインストールする

Bundlerのbundle installコマンドを使って追加したgemをインストールします。

bundle install

migrationファイルを生成する

ここがポイントです。
Decidimのコンポーネントのgemは新しくDBのテーブルを使うものがあるため、テーブルを作ったり変更したりするためのmigrationという作業が必要になります。このためのmigrationファイルを作成するコマンドがdecidim専用に設けてあるので、これを実行します。

bin/rails decidim:upgrade

こうすると、db/migrate/ディレクトリ以下にファイルが(場合によってはたくさん)作られます。これがmigrationファイルです。

migrationを実行する

migrationファイルを使ってテーブルの追加・変更を行います。

bin/rails db:migrate

動作確認する

これでセットアップが完了したかと思います。おつかれさまでした。
必要に応じて bin/rails sなどを実行し、動作確認してみてください。

おまけ

各コンポーネントごとにmigrationファイルを生成することもできるようです(例えば conferenceコンポーネントであれば bin/rails decidim_conferences:install:migrations と実行する)。が、おそらくdecidim:upgradeでまとめて実行する方が確実かと思われます。

なお、Decidim用に追加されたコマンドを確認するには、以下のように実行すると一覧されます。

bin/rails -T decidim

Discussion