やったこと
rails-assets を利用しているシステムから、切り離した時の話です。
調査
rails-assets とは
The solution to assets management in Rails
js, css の依存関係について、gem を介して解決します。
しかし、rails-assets は近年のシステムでフロントエンド、バックエンドを明確に分けるという流れもあり、メンテナンスされない事が決まっていました。
そのような背景もあり、高頻度でサービスに繋がらなくなることありました。
GitHub の issues の例 サービスが落ちる度に、issue が立ち上がっています。
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 できるようにする
ここはおまけなので、別記事で書きます。(多分)
最後に
こういう作業は、もうやりたくないですね。