Rails
たまたま、DateとTimeを意図せず比較している処理があったので調べてみた。 Date同士の比較であれば日付があっていれば 等しくなるので当たり前だけど Date.new(2023, 1, 1) == Date.new(2023, 1, 1) # true これが片方が Timeの場合 Date.new(2023, 1, 1) =…
イントロ パーフェクト Ruby on Rails 【増補改訂版】を読みました。 Rails本の中では異質な量と質ではないかとおもいます。 誰が読むべきか 最近のRailsをキャッチアップしたい方 Railsをある程度は長く使っている方 よりRailsを理解したい方 Rails初心者の…
イントロ RSpecの初心者向け勉強会が紹介されていました。 blog.jnito.com 勉強会の内容を動画で公開してくれています。 最近RSpecをあまり書いておらずトレンドも追えてなかったのでとても為になる内容でした。 気になった内容 テストの書くべきところ 動画…
イントロ Railsのmigationを実行する機会はそこまで多くはないと思うのですが、 generateしてつくったあとにVERSIONの選択が意外と面倒だったりします。 以前の記事 hotoolong.hatenablog.com でgit statusをfzfのpreviewやbindを使って操作しやすくしました…
いつものようにRailsのRubyバージョンを上げていこうかと思います。 まずはruby-buildの最新化します。 $ brew upgrade ruby-build rubyをrbenvで管理しているのでrbenvで2.7.1をビルドします。 $ rbenv install 2.7.1 Rails root の.ruby-version を 2.7.1 …
概要 Railsのバージョンが6.0.2.2に上がっています。 weblog.rubyonrails.org CVE-2020-5267 の脆弱性が含まれていました。 詳細はこちらを確認することでできます. github.com 適応 Rails6.0.2.1を使っていたため Gemfileを変更して 6.0.2.1を6.0.2.2に変更…
Search Consoleのエラーでソフト404が表示されることが度々あり、対応方法を考えてみました。 support.google.com 本来であれば、sitemap.xmlで送信しているURLから削除するなどの対応をすべきです。 ただ、検索ページなどで動的に変化する場合、 ページ内も…
数字順で昇順、降順で並び替えるのはよくありますが、 カラムに文字列を設定してしまっていると、並び替えたくなったときにすこし不便ですね。 そんなときにはfieldを使うとうまく並び替えれます。 select id, name from items order by field(items.size, '…
change_column change_column_null change_column_comment change_column_default change_column Railsのmigrationでカラムの情報を変更したい場合によく使うchange_columnですが、 change_column(table_name, column_name, type, options = {}) と変更した…
少し複雑なSQLのOR文をActiveRecordで作るときにはすこし億劫になりますね。 ArgumentError: Relation passed to #or must be structurally compatible. Incompatible values: [:joins, :references] とエラーが出てしまったのでいろいろ調べてみました。 今…
タイトルどおりなのですが、 目からウロコだったので、メモとして残しておきます。 Circle CI 2.0 でstore_cache、 restore_cache を使って、Bundler の gem をキャッシュしていたので、 とても参考になります。 ローカル環境でも --clean を付けてもいいの…
RSpecでCapybaraのテストをしてたのですが、 select '東京都', from: '都道府県' と記載している箇所で Capybara::Ambiguous: Ambiguous match, found 2 elements matching visible option "東京都" within #<Capybara::Node::Element tag="select" path="/html/body/div/div/div[3]/div[2]/div/div/form/div[8]/select"> のようなエラーが出てしまいました。 FactoryBot</capybara::node::element>…
気づけばもう3月ひな祭りですね。 デバックのため、ステージングのサーバを手で上げたくなったときに引数がわからなくなったので ほぼドキュメントなのですが、備忘録として残しておきます。 rbenv exec bundle exec rails s -e staging -p 8080 みたいにし…
topページヘのアクセスでたまに変なExceptionが出てたのです。 ActionView::MissingTemplate (Missing template pages/top, application/top with {:locale=>[:ja], :formats=>["*/*;"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :slim, :c…
2016年はじまってもう2月になってしまいました。 遅ればせながら、あけましておめでとうございます。 昨年から相当ハードなスケジュールでなかなかブログが書けてないですが、 今年はもう少し書く時間を確保したいところ。 頑張ります。。 今日のお題は SQL…
4.2系も続けてバージョンアップされているので ココらへんでメモ やることは Gemfileのrailsバージョン変更 bundle update bundle install ./bin/rake rails:update テストを流してエラー箇所を修正 bundle updateはまとめて gemのバージョンを上げてしまう…
Apache → Passenger 環境 を unicorn に入れ替える Gemfileに gem 'unicorn' を追加 bundle installする bundle binstubs unicorn で unicorn、unicorn_rails を bin配下に作成 init.dに起動シェル作成しておいて ${RAILS_ROOT}/bin/unicorn_rails -c config…
仕事が忙しくなってきました。少し大変です。 少しのアイドルがある環境で過ごしたいなと贅沢なことを考えながら、 周りからモチベーションを落とされるというよくわからない状況を奮起しながら程良く頑張っています。さて本題です。 最近カレンダーを出力し…
Ruby(Rails)で大小比較してどちらかの値と取りたい場合にどうやって書くのか という素朴な疑問なのですが、 最近私の中でのトレンドがありまして、 比較しながら検証していきたいと思うのです。 前提条件 例えば、日付型の2変数が用意されていて、小さい値を…
最近はバックエンドの処理を捌く場合に、Railsを意識してるとなかなかパフォーマンスが出なかったのが、 find_in_batchesとupdate_allの組み合わせで意外とパフォーマンスが出たので、メモメモ。今回の件は、かなりデータ数が多くなりすぎて絞り込んでもLock…
Railsでバッチ処理したい時に既存の ActiveRecord::Base#findを使いたいけど、処理件数が多くなりすぎるとメモリ食い過ぎて大変。 なんてことになりそうな場合は、今まではActiveRecord::Base#connectionで直接SQL文を実行してました。 ActiveRecord::Base#c…
仕事でRuby1.8、Rails2.3とか使ってます。たとえば、30文字以上はカットとかバイト数でじゃない場合、 マルチバイトを文字数でカットしたいときにいいものを教えてもらったので、メモメモ ActiveSupportを利用 Railsの場合ですが、結構簡単にマルチバイト対…