CubicLouve

Spring_MTの技術ブログ

rails

ActiveRecordのcallbackの実装を調べたときのメモ

Railsのcallbackの実体 callbackはActiveSupport::Callbacksを使って定義されます。 github.com ActiveRecordのcallback ActiveRecord::Callbacksに定義があります。 github.com ここでcreateなどが定義されます。 github.com define_model_callbacksは下記…

Railsのrspecのrequest specについて

rspec.info 上記の記事にあるように、Rails 5以降ではrails-controller-testing gemをアプリケーションに追加することは推奨されておらず、RSpecコアチームはrequest specsを書くことを推奨しています。 その理由として、request specでは、単一のcontroller…

Rails 5.2以降のRails 5系でDBに都度接続している場合においてはdatabase.ymlで `reaping_frequency: null` を設定する

Rails 5.2以降でDBに都度接続している場合においてはdatabase.ymlで reaping_frequency: null を設定しないと、スレッドが枯渇してサーバーにsshすらできなくなりサーバーの再起動が必要になります。 sshはこんなエラーになります。 shell request failed on…

Railsのforce_sslとssl_optionsについて

Railsの force_ssl と ssl_options について知らないことが多かったのでまとめてみます。 railsguides.jp force_ssl force_ssl を有効にすると、ActionDispatch::SSL がミドルウェアとして差し込まれます。 rails/default_middleware_stack.rb at 5394c94a2b…

ADMIN PINGとは

前提 Railsのバージョン https://github.com/rails/rails/tree/v4.2.6 ADMIN PINGの正体 ADMIN PINGというコマンドはありません。 実態はMySQLのCOM_PINGというコマンドになります。 https://dev.mysql.com/doc/refman/5.6/ja/mysql-ping.html https://githu…

Cloud Traceを使ってGKE上で動いているモノリシックなRailsアプリのパフォーマンスを分析する

Cloud TraceはGCPが提供するマネージドな分散トレースシステムです。 cloud.google.com Cloud Traceはマイクロサービスのような分散アーキテクチャで便利に使えるものですが、もちろんモノリシックなアプリケーションでも十分に使う価値があるサービスです。…

GKE上で動いているRailsアプリでアクセスログとアプリケーションログをCloud Loggingでグルーピングする

medium.com こちらに書いてある内容をRailsで実現するためにやったことを書きます。 StackdriverはOperation Suiteと名前が変わっており、それに伴ってStackdriver loggingも Cloud Logging と名前を変えています。 GKEで動かしているアプリケーションのログ…

2020/06/16 気になった記事メモ

1 Rails 6系へのアップデートはRails 6.1のリリースまで待つようにしたのですが、ハマりどころを調査中 github.com blog.kamipo.net 2 cloud.google.com BQがまだうまく使いこなせてないので、もう少し調べてみる 3 engineer.recruit-lifestyle.co.jp A / B…

2020/06/12 気になった記事メモ

1 dave.cheney.net yakst.com dev.classmethod.jp ロギングのwarnningに関しては、色々意見が割れているんだよなあ。 自分は問題が起きていることを量で把握した場合にwarnningを使う。 例 : HTTP Stausが400系を返した場合のログ 2 cloud.google.com CPAっ…

2020/06/10 気になった記事メモ

1 medium.com techracho.bpsinc.jp 依存性逆転の原則がなかなか手にしっくり来てないことが多いので見直し。 2 bliki-ja.github.io ダイナマイトという比喩が面白い。 確かにうまく扱えなくて爆死するのを見てきた気がする。 自分はうまく扱えているのだろう…

2020/05/27 気になった記事のメモ

1 blog.yuuk.io arx.appi.keio.ac.jp SLOの過剰達成に関しては、今のプロジェクトでも注意して見ておく必要があるなあ。 工学 engineering を組織的,計画的に目的を達成する行為と考える。 2 speakerdeck.com 今読んでも勉強になる。 集約はドメイン駆動設…

CloudNative Days Tokyo 2019 で「Deep Environment Parity 環境の一致について」というタイトルで発表しました

CloudNative Days Tokyo 2019 で「Deep Environment Parity 環境の一致について」というタイトルで発表しました。 運営の皆様、発表する機会をいただき本当にありがとうございました! また、スタッフ、スポンサーの皆様お疲れ様でした! 発表資料は以下です…

JapanContainerDays v18.12で「1人でできる
Docker Kubernetes(GKE)を
使った新規サービス立ち上げ」というタイトルでRailsアプリをGKE上で運用した事例の紹介をしました

JapanContainerDays v18.12 で「1人でできる Docker Kubernetes(GKE)を 使った新規サービス立ち上げ」というタイトルでRailsアプリをGKE上で運用した事例の紹介をしました。 運営の皆様、発表する機会をいただき本当にありがとうございました! また、スタッ…

railsで特定のモデルに対してbelongs_toで参照先を設定しているモデルを取り出す

まあ、いろいろ調べる必要がありまして。。。 ざっくりとこんな感じでとれた。 # production環境では要らないが、development環境では必要かと Dir.glob(File.expand_path('./app/models/*.rb', Rails.root)).each do |f| require f end # 定数を全部取得 co…

railsでSSL

アプリ側で特に何も設定してないけど、https化されてるなあって思ったら、 X-Forwarded-Proto: https がrequest headerに入ってた。 忘れそうなのでメモ

rails4.1のmigrationでundefined method `add_column_options!'ってでたら

rails4.1でmigration走らせたら、 % bundle exec rake db:migrate == 20140501144914 AddColumnsForHoge: migrating ========================== -- change_column(:foo, :bar, :integer, {:unsigned=>true, :limit=>8, :null=>true}) rake aborted! Standar…

acts-as-taggable-onでMysql2::Error: Specified key was too long; max key length is 767 bytesって怒られたら

MySQLのencodingをutf8mb4にしています。 なので、 varchar(255)のカラムにindexを貼ろうとすると、MySQLから怒られます。 MySQL(InnoDB) で "Index column size too large. The maximum column size is 767 bytes." いわれるときの対策 acts-as-taggable-on…

Rails4のtransactionでハマった <- これは私の間違いでした

申し訳ありません この記事完全に自分の間違いでした。 まず、自分のrailsアプリでは、、もろもろの深淵な理由で、モデルを作るときにActiveRecord::Baseを直接継承せずに、全てのモデルに共通で使うモデルを再定義しています。 なぜこんな事をしているかと…

rails 4.1.0にあげたらJSON::ParserErrorになった問題

rails 4.1.0に上げてみました。 Gemfileを書いて、 bundle update して、 bundle exec rake rails:update でひたすらYを選択しています。 ちょこちょこ直して、立ち上げてみると、 JSON::ParserError - 795: unexpected token at I"session_id: とかでた。。…