2019-01-01から1年間の記事一覧
Wheneverとは Rails上でcronによる定期実行バッチの処理時間を管理するためのライブラリ。crontabに記述する内容をruby言語で書ける セットアップ $ gem install whenever $ bundle exec wheneverize . コマンド 用途 コマンド Cronを書き換えずに更新内容を…
課題 Railsの 5.2.4がリリースされたのでupdateしようとしたところ、mysql2のアップデートでエラーになった。 /usr/bin/ld: cannot find -lssl /usr/bin/ld: cannot find -lcrypto collect2: error: ld returned 1 exit status Makefile:260: recipe for tar…
課題 値が変更されていた場合にのみ実行されるようなテストを書いたが、FactoryBotでcreateしたオブジェクトに _before_last_saveにFactoryBotでセットしていない値がセットされていて、調べるとDBのデフォルト値だった。 原因 FactoryBotでcreateしたオブジ…
課題 SPAサービスを作るにあたり、APIとWebでドメインが異なるのでCORS対応をしたい。 かつ検品環境なのでlocalホストからのアクセスも許可したい。 環境 nginx version: nginx/1.14.0 (Ubuntu) 対応 Access-Control-Allow-Origin に同時に複数のドメインを…
課題 Rubyで現在の日付を曜日付きのJPフォーマット 2019年11月15日(金) で返したい。 どうするのがよいか。 結論 I18nにそのものが定義されてた。 I18n.l Date.today, format: :long => "2019年11月15日(金)" フォーマットは strftime に従っているので ja.y…
課題 ある項目に対して数値チェックと存在チェックを行いたい。数値チェックがNGな時点で存在チェックを満たさないのは自明なので これをスキップしたい。どうするのが良いか。 対応 バリデーションがNGだった項目は errorsにaddされるので、その存在チェッ…
課題 バリデーションを共通化したい。Concernを使いたいがモデルごとに違う名前を割り当ててしまった。 カスタムバリデータは大げさなので使いたくない。どうすればよいか。 対応 ActiveRecordの has_attribute を使うと項目の有無をチェックしてくれるので…
課題 Mac上のRubyMineからRSpecを実行しているが、config内のファイルやModelクラスのvalidationなどを編集すると テストを実行しても途中で止まってしまい、RubyMineを再起動しないとテストが実行できなくなった。 原因 springのリロードがうまく機能してい…
課題 当日の日付との比較を行う処理を validates_timeliness の on_or_before を使って記述しているが、RSpecにテストを記述する際に日付の固定がうまくできず( Timecop も travel_to もNG )、現在日時との比較になってしまう。 # 未来日の入力はエラーと…
全文検索エンジンとかを使わない普通のRDBの従来のテーブル構成の場合。 気づくまで時間がかかったのでメモっておく。ER図もないので分かりにくいけど。。 課題 あるアイテムに複数のタグが関連テーブル経由の外部テーブルとして紐づいていいる。 選択された…
課題 MySQL8にDocker上に構築したRailsからアクセスしようとしたら以下のようなエラーが発生して接続できなかった。 Plugin caching_sha2_password could not be loaded: /usr/lib/x86_64-linux-gnu/mariadb19/plugin/caching_sha2_password.so: cannot open…
課題 JetBrailsのIDEにIdeaVimプラグインをインストールしているとエディタで複数行選択してからTabキーでインデントさせる処理が動作しない 対応 IdeaVimはVimでいうところの vimrc に相当する ideavimrc に対応しているらしい。.ideavimrc を起動時に読み…
課題 MySQLの生成カラムを使ったテーブル定義を行ったところ、構文内に含まれる文字列が schema.rbでエスケープされ、SQL実行時にエラーとなってしまう。 やりたかったこと(例) 年と月のカラムがあるのでdate型の生成カラムを作ってみた。 ALTER TABLE t1 …
課題 Rubyでこんな感じのオブジェクト配列があったとする。 "tags": [ { "id": 7, "name": "tag1" }, { "id": 8, "name": "tag2" }, { "id": 9, "name": "tag3" } ], これをStringの配列で返却したい。 "tags": [ "tag1", "tag2", "tag3" ] 対応 collectを使…
カレンダーの予定のような繰り返しのデータ定義を実装するにあたり、RFC5545(旧RFC2445)のRRULEというのがあるのを知ったので それについて調べたメモ。中でも 3.3.10. Recurrence Rule についてのみ取り扱っている。 RFC 5545 - Internet Calendaring and…