rails-assets とサヨナラした話
Ruby
Published: 2020-09-01

やったこと

rails-assets を利用しているシステムから、切り離した時の話です。

調査

rails-assets とは

The solution to assets management in Rails

js, css の依存関係について、gem を介して解決します。

しかし、rails-assets は近年のシステムでフロントエンド、バックエンドを明確に分けるという流れもあり、メンテナンスされない事が決まっていました。

そのような背景もあり、高頻度でサービスに繋がらなくなることありました。

GitHub の issues の例 サービスが落ちる度に、issue が立ち上がっています。

16.38.07.png

rails-assets の gem を自前でホスティングするように変更

rails-assets 経由で、ダウンロードできる gem が欲しかったのですが、

このサイトでは調べる事ができないようでした。

rails-assets を Gemfile に書いてインストールされているものを gem にすれば OK と思っていたのですが、それで正しいのか不安でした。

本家の rails-assets をローカルで gem を生成する事ができると分かりました。

なので、下記の2つの差分を見比べて、ソースコードに差異がなければ OK ということにします。

1.rails-assets から gem を生成したもの

2.rails-assets を Gemfile に書いてインストールされたもの

2.rails-assets を Gemfile に書いてインストールされたもの

は、既に持っているので、

1.rails-assets から gem を生成したもの を頑張って作ります。

rails-assets から gem を生成する

tenex/rails-assets: The solution to assets management in Rails

基本的には、上記の README.md を見ながらセットアップすればOKです。

ここで注意があります。

メンテナンスされてないため、Ruby, npm のバージョンが新しいと動きません。

ハマったところを書いておきます。必要なバージョンは頑張ってインストールします。

  • Ruby 2.2.3 (.ruby-version)
  • npm 6.14.4

また foreman と postgresql を動かしておく必要があります。

$ foreman start
$ postgres -D /usr/local/var/postgres

今回は select2 の gem を生成してみましょう。

$ bin/rake 'component:convert[select2,4.0.3]'

これで gem が生成されます。

public/gems/rails-assets-select2-4.0.3.gem

生成した gem を展開します

$ gem unpack public/gems/rails-assets-select2-4.0.3.gem

差分を比較する

差分を確認してみます。

$ diff -r {1. rails-assets から gem を生成したもの} {2. rails-assets を Gemfile に書いてインストールされたもの}

動作確認

  • GitHub のリポジトリを新設
  • bundle install して動作確認

これで rails-assets の gem を使ってる箇所を確認できれば、OKです。

gem を生成した後、ローカルの gem を bundle install できるようにする

ここはおまけなので、別記事で書きます。(多分)

最後に

こういう作業は、もうやりたくないですね。

参考