Libraries

最新コメント

Railsを用いた運用中のサービスのアップグレードの仕方

wakairo @wakairo
最終更新

まずはRubyをアップグレード

「RubyのアップグレードとRailsのアップグレードは別々に行うのがよい方法です。最初にRubyを可能な限り最新版にアップグレードし、それからRailsをアップグレードします。」 Railsガイドより

次にRailsを1つずつアップグレード

「Railsのバージョンを変更する場合、マイナーバージョンを1つずつゆっくりと上げながら、その都度表示される非推奨機能の警告メッセージを上手に利用するのがベストです。」Railsガイドより

具体的には、以下の手順を繰り返す。

  1. テストを書き、テストがパスすることを確認する。
  2. 現時点のバージョンのパッチバージョンを最新のパッチに移行する。
  3. テストを修正し、非推奨の機能を修正する。
  4. 次のマイナーバージョンの最新パッチに移行する。
0
Raw
https://www.techtips.page/ja/comments/160

qart.jsで作成したQRコードを紙に印刷して使う場合のノウハウ

wakairo @wakairo

QRコードのセル数を少なくするために(つまり、印刷されたときの1つのセルを大きくするために)Versionはできるだけ小さく、また、くっきりと印刷するためにSizeは大きめに設定すると良いようです。 ちなみに、合成したQRコードを家庭用プリンタで縦横4cm弱で印刷しましたが、Versionを10に設定した場合はときどきしか認識に成功しませんでした。そこで、Versionを4に設定したところ、認識率が大分改善しました。

0
Raw
https://www.techtips.page/ja/comments/87

ファイル名とクラス名の対応関係などが命名規則に従っているかのチェック方法

wakairo @wakairo
最終更新

Railsでは、自動で定数の読み込みと再読み込みが行われます。 この自動システムをきちんと動作させるには、ファイルパス・ファイル名とモジュール構造・クラス名を命名規則に従って対応させる必要があります

Railsガイドによれば、 以下のコマンドを実行することでこの命名規則に従っているかの確認を行えます。

bin/rails zeitwerk:check

このコマンドの実行結果の末尾に「All is good!」が表示されれば命名規則は守られています。

0
Raw
https://www.techtips.page/ja/comments/61

Rails7以降はZeitwerkに完全移行

wakairo @wakairo

Rails 6でZeitwerkが導入され、Rails 7でclassicと呼ばれる旧来のオートローダーは廃止されました。

以下は、 https://railsguides.jp/classic_to_zeitwerk_howto.html からの引用です。

Railsは最初期からRails 5まで、Active Supportで実装されたオートローダーを用いていました。このオートローダーはclassicと呼ばれ、Rails 6.xでは引き続き利用可能です。classicオートローダーはRails 7で廃止されました。

Rails 6から、より優れた新しいオートロード方法がRailsに搭載されました。これはZeitwerkというgemに一任されています。これがzeitwerkモードです。デフォルトでは、Railsフレームワーク6.0および6.1の読み込みはzeitwerkモードで実行され、Rails 7で利用できるのはzeitwerkモードのみとなります。

0
Raw
https://www.techtips.page/ja/comments/60

redirect_backよりもredirect_back_or_toを使った方が良さそう

wakairo @wakairo

以下のコードから分かるとおり、redirect_backredirect_back_or_toをラップしているだけです。

https://github.com/rails/rails/blob/v7.0.4/actionpack/lib/action_controller/metal/redirecting.rb#L96

普通はfallback_locationを指定する必要があるはずですので、第1引数にfallback_locationを指定してredirect_back_or_toを呼び出した方が素直のように思います。

0
Raw
https://www.techtips.page/ja/comments/24

unscopeはscope系以外の条件も外す

wakairo @wakairo
最終更新

RailsのActive Recordには、scopedefault_scopeという機能があり、SQLクエリの条件を指定してあらかじめ付けておくことが可能です。

unscopeunscopedは、これらのscope系で付けた条件を外すことが出来ます。
ただ、注意点として、scope系以外で付けた条件も外してしまいます

以下に例を示します。

irb(main):001:0> puts User.where(id: 1).all.to_sql
SELECT "users".* FROM "users" WHERE "users"."id" = 1
=> nil
irb(main):002:0> puts User.where(id: 1).unscope(:where).all.to_sql
SELECT "users".* FROM "users"
=> nil
irb(main):003:0> puts User.where(id: 1).unscoped.all.to_sql
SELECT "users".* FROM "users"
=> nil

unscopeunscopedが、直前のwhere句で指定した条件を外していることが確認できます。

確認した環境

  • Rails 7.0.4

参考

0
Raw
https://www.techtips.page/ja/comments/23

すぐに合成が可能

wakairo @wakairo
最終更新

GitHubのReadmeで紹介されている以下のリンク先で、すぐにこのライブラリを利用してQRコードと画像の合成が出来て便利です。

https://kciter.so/qart.js/

インストールしたりコードを書いたりしなくても利用でき、すぐに試せるのは嬉しいです。

0
Raw
https://www.techtips.page/ja/comments/21