module Printable extend ActiveSupport::Concern def print_id puts self.id end def print_name puts self.name end end そのような場合、どのようにspecを書くのが良いでしょうか。 何も考えずにやるなら既存のActiveRecordのModelを利用することでしょうか。
module Printable extend ActiveSupport::Concern def print_id puts self.id end def print_name puts self.name end end そのような場合、どのようにspecを書くのが良いでしょうか。 何も考えずにやるなら既存のActiveRecordのModelを利用することでしょうか。
自己紹介 初カキコども 医師でエンジニア?もどきのikoraです pythonについては今まで趣味程度しか触ったことがなく、またFastAPIをこの一ヶ月前くらいから触り始めました。 エンジニアの方々にとっては当たり前の非同期処理というものについてあまり理解できてなかったので、FastAPIの挙動と共に理解しようということで忘備録的に書きました。 一応後半では、真面目に実験しているのでなにかの参考になるかなと思います。 素人に毛が生えたようなものなので、もし間違い等あったら優しめにご指摘いただくと嬉しいです☺️ 始めての技術記事で拙いかもしれませんが、参考になりましたら幸いです。 まず結論 FastAPIのマルチタスク性能・高速性は非同期処理によって実現されている 従ってAPI Endpoint配下の関数(パスオペレーション関数)の書き方で速さが変わり 非同期処理 >>> 同期処理 >>>
1. 概要 sidekiqプロセスのメモリ使用率が元に戻らない悩みを解消するためのイチ手段として、 gem「sidekiq-worker-killer」を使う がある。 残念ながら、上記GitHubのReadmeのみでは、その詳細な挙動を知ることは難しい。 そこで本記事では、sidekiq-worker-killerのソースコード(ver.1.0.0)、およびその他関連情報を調査し、sidekiq-worker-killerの設定項目・挙動について全体的にまとめた。 sidekiq-worker-killerの設定の意味・設定方法 sidekiq-worker-killerの処理開始タイミング sidekiq-worker-killerの処理開始後の挙動 2. sidekiq-worker-killerの設定の意味・設定方法 sidekiq-worker-killerのオプション設定につい
はじめに CaaS(Container as a Service)を使った開発は増えてきていることと思います。 私自身もCaaS環境にてリリースを行うプロダクトを複数持っています。 そしてプロダクトを設計していくときに大事なのが、ネットワークですね。 マイクロサービス化していく中で、サービス同士での通信をする機会というのは増えていくと思います。 なので、今回Caas環境のサービスであるKubernetesの通信をまとめます。 なお、この記事に書くにあたり作成したコードは全て walk8243/kubernetes-communication にあります。 まとめる通信 まとめる対象の通信は以下の画像にある通りです。 通信は、緑の四角のコンテナから、青の四角のコンテナに向けて送信します。 デプロイファイル Kubernetesにデプロイする際に使用するコードは全て、 walk8243/kub
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに Pods は Kubernetes の中でもっとも重要なリソースです。複数のコンテナとボリュームの組み合わせで Kubernetes におけるスケールの最小単位であり、アプリケーションコンテナは必ず Pods としてデプロイされます。 ここでは Pods の終了の流れについて詳しく扱います。Deployments の更新などで新しいバージョンのアプリケーションをデプロイするとき、既存の Pods は終了されます。このとき正しく Pods の終了処理を準備できていないと、ユーザのリクエストが正しく処理されずエラーが出力されている
この記事は クラウドワークスアドベントカレンダー2019 12日目の記事です。 概要 こんにちは、怒り駆動リファクタリングを生業としている @MinoDriven です。 弊社リファクタリング専門チーム「バグハンター」で現在実施中のリファクタリング設計について紹介致します。 ドメイン駆動設計 を用い、Railsレガシーコードに対しViewとControllerを ActiveRecord非依存 に変更する設計です。 状況 弊社ブログの過去エントリにあるように、弊社サービスcrowdworks.jpはサービスインから8年経過し、 30万行 を超えるモノリシックRailsアプリになっています。 開発生産性が低下してきています 。 生産性低下の課題を解決しようにも、大規模な上に複雑かつ密結合な構造になっており、 マイクロサービスへの移行も、リプレイスも困難な制約 があります。 そこで半年前にリフ
最近何かと騒がしいクリーンアーキテクチャですが、丁度プロダクトで採用したところだったので折角なので情報共有ということで Qiita の初記事にしてみようと思います。 こちらの記事は GUI や CUI のアプリケーションを対象にしています。 Java コードの記事リンク:https://nrslib.com/clean-architecture-with-java/?preview_id=1263&preview_nonce=542ba7b70f&_thumbnail_id=1293&preview=true その他解説もしています。もしよろしければチャンネル登録をお願いいたします。 より実践的なコード(WEBアプリケーション): https://github.com/nrslib/itddd/tree/master/CleanLike YouTube での解説(WEBアプリケーション):
はじめに Railsアプリケーションを長く運用していると避けて通れないのがRailsのバージョンアップです。 古いバージョンのRailsは順次サポートの対象から外れていく(=不具合修正やセキュリティ対応がされなくなる)ため、バージョンアップをせずに運用するわけにはいきません。 そこでこの記事では僕・伊藤淳一がRailsアプリのバージョンをアップグレード(アップデート)する手順を紹介します。 この手順はこれまで何度もRailsアプリケーションをアップグレードしてきた僕の知見が詰まった、いわば「秘伝のタレ」的なアップグレード手順です。 想定するRailsアプリケーション この記事で想定しているのは以下のようなRailsアプリケーションです。 開発者1人でもなんとか面倒が見れるレベルの規模(=アップグレードは1人で作業する想定) 趣味で作っているのではなく、外部のユーザーがいるRailsアプリ(
DDD連載記事 なぜDDD初心者はググリ出してすぐに心がくじけてしまうのか ドメイン駆動設計の定義についてEric Evansはなんと言っているのか モデルでドメイン知識を表現するとは何か ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何か ドメイン駆動 + オニオンアーキテクチャ概略 背景 ドメイン駆動設計で実装を始めるのに一番とっつきやすいアーキテクチャは何かの記事で、オススメしていたのはオニオンアーキテクチャでした。 今回は、オニオンアーキテクチャについて詳しく説明したいと思います。 上述の記事でも書いた通り、「ヘキサゴナル、オニオン、クリーン」の3つは、本質的には全く同じで、思想としてはヘキサゴナルで完成されているのですが、より具体的に説明されているオニオンアーキテクチャから説明を読んだ方が理解がしやすいと思います。 その後にヘキサゴナルの説明を読むと「なるほ
よく見かけるRepositoryパターンのアンチパターンの紹介と対策です。 Repositoryパターンとは Repositoryパターンとは永続化を隠蔽するためのデザインパターンで、DAO(DataAccessObject)パターンに似ていますが、より高い抽象度でエンティティの操作から永続化ストレージを完全に隠蔽します。 例えばDBコネクションやストレージのパス等はReposiotoryのインターフェースからは隠蔽され、Repositoryのユーザは永続化ストレージが何であるか(例えばMySQLやRedis等)を意識することなく保存や検索の操作を行うことができるようになります。 これによりRepositoryを利用するロジックは業務的な操作に集中できるようになる他、データベースの移行等の永続化層の変更が発生した際にロジックへの影響を切り離すことができるようになります。 // 例) ユーザ
(prefer-coding-system 'utf-8) (setq coding-system-for-read 'utf-8) (setq coding-system-for-write 'utf-8) これでOK。 別の文字エンコーディングで開きたい時は revert-buffer-with-coding-system とか使ってかえましょう。 参考 encoding - Change Emacs Default Coding System - Stack Overflow http://stackoverflow.com/questions/1785200/change-emacs-default-coding-system Register as a new user and use Qiita more conveniently You get articles that m
Started DELETE "/api/v1/users/sign_out" for 127.0.0.1 at 2018-11-29 11:26:51 +0900 Processing by Users::SessionsController#destroy as JSON Parameters: {"session"=>{}} User Load (2.2ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 ORDER BY `users`.`id` ASC LIMIT 1 ↳ /Users/xxx/.rbenv/versions/2.5.3/lib/ruby/gems/2.5.0/gems/activerecord-5.2.1/lib/active_record/log_subscriber.rb:98 HTTP Origi
#はじめに scopeやnamespaceを使用してルーティングを設定する機会があった。 これまでresoucesくらいの基礎的なルーティング設定しかしたことがなく、色々調べたのでまとめてみる。 #目次 resource namespace scopeとmodule concerns member collection shallow(オプション) as(オプション) params(オプション) ##resource resourceは単数形リソースと呼ばれる。 場合によっては、ユーザーがページを表示する時にidを参照することのないリソースが使用されることがある。たとえば、マイページ(ここでは/profileとする)のように「現在ログインしているユーザー自身」のプロファイルを表示し、他のユーザーidを参照する必要がない場合には、単数形リソースを使用してshowアクションに (/profil
RailsのローカルだってSSL/HTTPSにしたい サードパーティなJSライブラリを入れると、HTTPS環境もしくはlocalhostじゃないと動かないよとか、ServiceWorkerを動かしたいけどlocalhost以外の名前でアクセスしたいよとか、色々と要望はあると思います。なので、Rails5 + pumaで設定してみました。簡単です。 証明書の作成 プロダクション用の本物証明書を使ってもいいですし、ローカルでHTTPSになっていれば良いやって言う場合はオレオレ証明書を作ってブラウザで例外追加してもいいです。オレオレ証明書は下記コマンドでさくっと作れます。 $ openssl genrsa 2048 > server.key $ openssl req -new -key server.key > server.csr $ openssl x509 -days 3650 -req
概要 Ionic製のクライアントアプリにて、Rails製のAPIサーバーからのレスポンスヘッダが一部取得できなかった。 「追加したヘッダがなんでクライアント側で見えないんだよ(泣」 ってなっていたものの、解決できたので備忘録として残すことにした。 RailsのAPIモードで、 rack-cors でCORS設定をいい感じにすることによって、api-pagination によりヘッダが追加されたリソースをクライアントで取得できるようにするまでを書いていく。 なんでヘッダが取得できなかったか CORSの設定が足りなかったから。 APIサーバとWebクライアント、みたいな構成の場合、それぞれ異なるドメイン下に置くことも多いと思います。 あるいはスマホアプリのクライアントとAPIサーバー、みたいな場合とか。 僕もそういう状況でした。 こういった場合、異なるオリジン間でのリクエストということで制限が
先日、Google Cloud BuildとGithubの連携が発表され、CIの実現がより簡単になりました。 この記事では、簡単なRailsアプリケーションを用意して、GithubのPull Request時にRSpecでテストを実行し、パスした場合にContainer RegistryにPushするまでの流れをまとめてみました。 前提 以下のコマンドを使用します。 docker (18.06.0-ce) gcloud (Google Cloud SDK 210.0.0) RailsアプリのDocker化 まずはRailsアプリケーションをDocker環境で準備します。 普段はDocker Composeを使って、アプリケーションとDB、KVSなどをそれぞれのコンテナで準備するのですが、今回はCI上で実行しやすいよう、1イメージにRubyとMySQLを含めます。 なお、各バージョンについて
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く