作業履歴 2025-04-24¶
概要¶
2025-04-24の作業内容をまとめています。このジャーナルでは、システムの現状分析として「アーキテクチャ概要」と「ユースケース」の2つの重要なドキュメントを作成しました。これらのドキュメントは、Baukis-Kaiシステムの構造、機能、および利用パターンを包括的に説明し、開発チームや新しいメンバーがシステムを理解するための基盤となります。
コミット: 49163f7 - システムドキュメントの作成¶
概要¶
システムの現状分析として、アーキテクチャとユースケースに関する詳細なドキュメントを作成しました。これらのドキュメントは、システムの全体像を把握し、今後の開発や保守作業の指針となることを目的としています。
技術的詳細¶
- アーキテクチャ概要: システムの構造、層、コンポーネント間の関係を詳細に説明
- システム概要と主要機能
- 3つの主要サブシステム(スタッフ、顧客、管理者インターフェース)
- アプリケーション層構造(MVC拡張)
- 名前空間とインターフェース構造
- データモデルとその関連
- ビジネスフロー
- 認証・認可システム
- 配置アーキテクチャ
-
開発ガイドライン
-
ユースケース: システムの利用パターンを詳細に説明
- アクター(職員、顧客、管理者)の定義
- 各アクターのユースケース詳細
- ユースケース関連図
メッセージ¶
docs:現状分析
変更されたファイル¶
- A "docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md"
- A "docs/\343\203\246\343\203\274\343\202\271\343\202\261\343\203\274\343\202\271.md"
変更内容¶
commit 49163f777eaed28780efdfe817f6749908e196cd
Author: k2works <kakimomokuri@gmail.com>
Date: Thu Apr 24 18:47:02 2025 +0900
docs:現状分析
diff --git "a/docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md" "b/docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md"
new file mode 100644
index 0000000..d91f3e0
--- /dev/null
+++ "b/docs/\343\202\242\343\203\274\343\202\255\343\203\206\343\202\257\343\203\201\343\203\243\346\246\202\350\246\201.md"
@@ -0,0 +1,412 @@
+# Baukis-Kai システムアーキテクチャ概要
+
+## 1. システム概要
+
+Baukis-Kaiは顧客管理システムで、主に以下の機能を提供します:
+
+- スタッフによる顧客情報管理
+- 顧客のプログラム予約および参加管理
+- 顧客とスタッフ間のメッセージングシステム
+- 管理者によるスタッフ管理とシステム設定
+
+## 2. システム構成
+
+システムは以下の3つの主要なサブシステムに分かれています:
+
+1. **スタッフインターフェース**: スタッフが顧客情報やプログラムを管理するためのインターフェース
+2. **顧客インターフェース**: 顧客が自身の情報、予約、メッセージを管理するためのインターフェース
+3. **管理者インターフェース**: システム全体とスタッフを管理するための管理者用インターフェース
+
+## 3. アプリケーション層構造
+
+Railsアプリケーションの拡張版MVCアーキテクチャに基づいており、以下の層に分かれています:
+
+<img src="data:image/svg+xml;base64,PCFkb2N0eXBlIGh0bWw+PGh0bWwgbGFuZz0iZW4iPjxoZWFkPjxzY3JpcHQ+dmFyIF9fZXpIdHRwQ29uc2VudD17c2V0QnlDYXQ6ZnVuY3Rpb24oc3JjLHRhZ1R5cGUsYXR0cmlidXRlcyxjYXRlZ29yeSxmb3JjZSxjdXN0b21TZXRTY3JpcHRGbj1udWxsKXt2YXIgc2V0U2NyaXB0PWZ1bmN0aW9uKCl7aWYoZm9yY2V8fHdpbmRvdy5lelRjZkNvbnNlbnRbY2F0ZWdvcnldKXtpZih0eXBlb2YgY3VzdG9tU2V0U2NyaXB0Rm49PT0nZnVuY3Rpb24nKXtjdXN0b21TZXRTY3JpcHRGbigpO31lbHNle3ZhciBzY3JpcHRFbGVtZW50PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnVHlwZSk7c2NyaXB0RWxlbWVudC5zcmM9c3JjO2F0dHJpYnV0ZXMuZm9yRWFjaChmdW5jdGlvbihhdHRyKXtmb3IodmFyIGtleSBpbiBhdHRyKXtpZihhdHRyLmhhc093blByb3BlcnR5KGtleSkpe3NjcmlwdEVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSxhdHRyW2tleV0pO319fSk7dmFyIGZpcnN0U2NyaXB0PWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKHRhZ1R5cGUpWzBdO2ZpcnN0U2NyaXB0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHNjcmlwdEVsZW1lbnQsZmlyc3RTY3JpcHQpO319fTtpZihmb3JjZXx8KHdpbmRvdy5lelRjZkNvbnNlbnQmJndpbmRvdy5lelRjZkNvbnNlbnQubG9hZGVkKSl7c2V0U2NyaXB0KCk7fWVsc2UgaWYodHlwZW9mIGdldEV6Q29uc2VudERhdGE9PT0iZnVuY3Rpb24iKXtnZXRFekNvbnNlbnREYXRhKCkudGhlbihmdW5jdGlvbihlelRjZkNvbnNlbnQpe2lmKGV6VGNmQ29uc2VudCYmZXpUY2ZDb25zZW50LmxvYWRlZCl7c2V0U2NyaXB0KCk7fWVsc2V7Y29uc29sZS5lcnJvcigiY2Fubm90IGdldCBleiBjb25zZW50IGRhdGEiKTtmb3JjZT10cnVlO3NldFNjcmlwdCgpO319KTt9ZWxzZXtmb3JjZT10cnVlO3NldFNjcmlwdCgpO2NvbnNvbGUuZXJyb3IoImdldEV6Q29uc2VudERhdGEgaXMgbm90IGEgZnVuY3Rpb24iKTt9fSx9Ozwvc2NyaXB0Pgo8c2NyaXB0PnZhciBlelRjZkNvbnNlbnQ9d2luZG93LmV6VGNmQ29uc2VudD93aW5kb3cuZXpUY2ZDb25zZW50Ontsb2FkZWQ6ZmFsc2Usc3RvcmVfaW5mbzpmYWxzZSxkZXZlbG9wX2FuZF9pbXByb3ZlX3NlcnZpY2VzOmZhbHNlLG1lYXN1cmVfYWRfcGVyZm9ybWFuY2U6ZmFsc2UsbWVhc3VyZV9jb250ZW50X3BlcmZvcm1hbmNlOmZhbHNlLHNlbGVjdF9iYXNpY19hZHM6ZmFsc2UsY3JlYXRlX2FkX3Byb2ZpbGU6ZmFsc2Usc2VsZWN0X3BlcnNvbmFsaXplZF9hZHM6ZmFsc2UsY3JlYXRlX2NvbnRlbnRfcHJvZmlsZTpmYWxzZSxzZWxlY3RfcGVyc29uYWxpemVkX2NvbnRlbnQ6ZmFsc2UsdW5kZXJzdGFuZF9hdWRpZW5jZXM6ZmFsc2UsdXNlX2xpbWl0ZWRfZGF0YV90b19zZWxlY3RfY29udGVudDpmYWxzZSx9O2Z1bmN0aW9uIGdldEV6Q29uc2VudERhdGEoKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZXpDb25zZW50RXZlbnQiLGZ1bmN0aW9uKGV2ZW50KXt2YXIgZXpUY2ZDb25zZW50PWV2ZW50LmRldGFpbC5lelRjZkNvbnNlbnQ7cmVzb2x2ZShlelRjZkNvbnNlbnQpO30pO30pO308L3NjcmlwdD4KPHNjcmlwdD5pZih0eXBlb2YgX3NldEV6Q29va2llcyE9PSdmdW5jdGlvbicpe2Z1bmN0aW9uIF9zZXRFekNvb2tpZXMoZXpDb25zZW50RGF0YSl7dmFyIGNvb2tpZXM9d2luZG93LmV6Q29va2llUXVldWU7Zm9yKHZhciBpPTA7aTxjb29raWVzLmxlbmd0aDtpKyspe3ZhciBjb29raWU9Y29va2llc1tpXTtpZihlekNvbnNlbnREYXRhJiZlekNvbnNlbnREYXRhLmxvYWRlZCYmZXpDb25zZW50RGF0YVtjb29raWUudGNmQ2F0ZWdvcnldKXtkb2N1bWVudC5jb29raWU9Y29va2llLm5hbWUrIj0iK2Nvb2tpZS52YWx1ZTt9fX19CndpbmRvdy5lekNvb2tpZVF1ZXVlPXdpbmRvdy5lekNvb2tpZVF1ZXVlfHxbXTtpZih0eXBlb2YgYWRkRXpDb29raWVzIT09J2Z1bmN0aW9uJyl7ZnVuY3Rpb24gYWRkRXpDb29raWVzKGFycil7d2luZG93LmV6Q29va2llUXVldWU9Wy4uLndpbmRvdy5lekNvb2tpZVF1ZXVlLC4uLmFycl07fX0KYWRkRXpDb29raWVzKFtdKTtpZih3aW5kb3cuZXpUY2ZDb25zZW50JiZ3aW5kb3cuZXpUY2ZDb25zZW50LmxvYWRlZCl7X3NldEV6Q29va2llcyh3aW5kb3cuZXpUY2ZDb25zZW50KTt9ZWxzZSBpZih0eXBlb2YgZ2V0RXpDb25zZW50RGF0YT09PSJmdW5jdGlvbiIpe2dldEV6Q29uc2VudERhdGEoKS50aGVuKGZ1bmN0aW9uKGV6VGNmQ29uc2VudCl7aWYoZXpUY2ZDb25zZW50JiZlelRjZkNvbnNlbnQubG9hZGVkKXtfc2V0RXpDb29raWVzKHdpbmRvdy5lelRjZkNvbnNlbnQpO31lbHNle2NvbnNvbGUuZXJyb3IoImNhbm5vdCBnZXQgZXogY29uc2VudCBkYXRhIik7X3NldEV6Q29va2llcyh3aW5kb3cuZXpUY2ZDb25zZW50KTt9fSk7fWVsc2V7Y29uc29sZS5lcnJvcigiZ2V0RXpDb25zZW50RGF0YSBpcyBub3QgYSBmdW5jdGlvbiIpO19zZXRFekNvb2tpZXMod2luZG93LmV6VGNmQ29uc2VudCk7fTwvc2NyaXB0Pjx0aXRsZT5IVFRQIFN0YXR1cyA0MDAg4oCTIEJhZCBSZXF1ZXN0PC90aXRsZT48c3R5bGUgdHlwZT0idGV4dC9jc3MiPmJvZHkge2ZvbnQtZmFtaWx5OlRhaG9tYSxBcmlhbCxzYW5zLXNlcmlmO30gaDEsIGgyLCBoMywgYiB7Y29sb3I6d2hpdGU7YmFja2dyb3VuZC1jb2xvcjojNTI1RDc2O30gaDEge2ZvbnQtc2l6ZToyMnB4O30gaDIge2ZvbnQtc2l6ZToxNnB4O30gaDMge2ZvbnQtc2l6ZToxNHB4O30gcCB7Zm9udC1zaXplOjEycHg7fSBhIHtjb2xvcjpibGFjazt9IC5saW5lIHtoZWlnaHQ6MXB4O2JhY2tncm91bmQtY29sb3I6IzUyNUQ3Njtib3JkZXI6bm9uZTt9PC9zdHlsZT48L2hlYWQ+PGJvZHk+PGgxPkhUVFAgU3RhdHVzIDQwMCDigJMgQmFkIFJlcXVlc3Q8L2gxPjxociBjbGFzcz0ibGluZSIgLz48cD48Yj5UeXBlPC9iPiBFeGNlcHRpb24gUmVwb3J0PC9wPjxwPjxiPk1lc3NhZ2U8L2I+IFJlcXVlc3QgaGVhZGVyIGlzIHRvbyBsYXJnZTwvcD48cD48Yj5EZXNjcmlwdGlvbjwvYj4gVGhlIHNlcnZlciBjYW5ub3Qgb3Igd2lsbCBub3QgcHJvY2VzcyB0aGUgcmVxdWVzdCBkdWUgdG8gc29tZXRoaW5nIHRoYXQgaXMgcGVyY2VpdmVkIHRvIGJlIGEgY2xpZW50IGVycm9yIChlLmcuLCBtYWxmb3JtZWQgcmVxdWVzdCBzeW50YXgsIGludmFsaWQgcmVxdWVzdCBtZXNzYWdlIGZyYW1pbmcsIG9yIGRlY2VwdGl2ZSByZXF1ZXN0IHJvdXRpbmcpLjwvcD48cD48Yj5FeGNlcHRpb248L2I+PC9wPjxwcmU+amF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogUmVxdWVzdCBoZWFkZXIgaXMgdG9vIGxhcmdlCglvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExSW5wdXRCdWZmZXIuZmlsbChIdHRwMTFJbnB1dEJ1ZmZlci5qYXZhOjc3OCkKCW9yZy5hcGFjaGUuY295b3RlLmh0dHAxMS5IdHRwMTFJbnB1dEJ1ZmZlci5wYXJzZVJlcXVlc3RMaW5lKEh0dHAxMUlucHV0QnVmZmVyLmphdmE6NDQyKQoJb3JnLmFwYWNoZS5jb3lvdGUuaHR0cDExLkh0dHAxMVByb2Nlc3Nvci5zZXJ2aWNlKEh0dHAxMVByb2Nlc3Nvci5qYXZhOjI1NikKCW9yZy5hcGFjaGUuY295b3RlLkFic3RyYWN0UHJvY2Vzc29yTGlnaHQucHJvY2VzcyhBYnN0cmFjdFByb2Nlc3NvckxpZ2h0LmphdmE6NjMpCglvcmcuYXBhY2hlLmNveW90ZS5BYnN0cmFjdFByb3RvY29sJENvbm5lY3Rpb25IYW5kbGVyLnByb2Nlc3MoQWJzdHJhY3RQcm90b2NvbC5qYXZhOjkzNykKCW9yZy5hcGFjaGUudG9tY2F0LnV0aWwubmV0Lk5pb0VuZHBvaW50JFNvY2tldFByb2Nlc3Nvci5kb1J1bihOaW9FbmRwb2ludC5qYXZhOjE3OTEpCglvcmcuYXBhY2hlLnRvbWNhdC51dGlsLm5ldC5Tb2NrZXRQcm9jZXNzb3JCYXNlLnJ1bihTb2NrZXRQcm9jZXNzb3JCYXNlLmphdmE6NTIpCglvcmcuYXBhY2hlLnRvbWNhdC51dGlsLnRocmVhZHMuVGhyZWFkUG9vbEV4ZWN1dG9yLnJ1bldvcmtlcihUaHJlYWRQb29sRXhlY3V0b3IuamF2YToxMTkwKQoJb3JnLmFwYWNoZS50b21jYXQudXRpbC50aHJlYWRzLlRocmVhZFBvb2xFeGVjdXRvciRXb3JrZXIucnVuKFRocmVhZFBvb2xFeGVjdXRvci5qYXZhOjY1OSkKCW9yZy5hcGFjaGUudG9tY2F0LnV0aWwudGhyZWFkcy5UYXNrVGhyZWFkJFdyYXBwaW5nUnVubmFibGUucnVuKFRhc2tUaHJlYWQuamF2YTo2MykKCWphdmEuYmFzZSYjNDc7amF2YS5sYW5nLlRocmVhZC5ydW4oVGhyZWFkLmphdmE6ODI5KQo8L3ByZT48cD48Yj5Ob3RlPC9iPiBUaGUgZnVsbCBzdGFjayB0cmFjZSBvZiB0aGUgcm9vdCBjYXVzZSBpcyBhdmFpbGFibGUgaW4gdGhlIHNlcnZlciBsb2dzLjwvcD48aHIgY2xhc3M9ImxpbmUiIC8+PGgzPkFwYWNoZSBUb21jYXQvOS4wLjk1PC9oMz48c2NyaXB0IGRhdGEtY2Zhc3luYz0iZmFsc2UiPmZ1bmN0aW9uIF9lbWl0RXpDb25zZW50RXZlbnQoKXt2YXIgY3VzdG9tRXZlbnQ9bmV3IEN1c3RvbUV2ZW50KCJlekNvbnNlbnRFdmVudCIse2RldGFpbDp7ZXpUY2ZDb25zZW50OndpbmRvdy5lelRjZkNvbnNlbnR9LGJ1YmJsZXM6dHJ1ZSxjYW5jZWxhYmxlOnRydWUsfSk7ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudCk7fQooZnVuY3Rpb24od2luZG93LGRvY3VtZW50KXtmdW5jdGlvbiBfc2V0QWxsRXpDb25zZW50VHJ1ZSgpe3dpbmRvdy5lelRjZkNvbnNlbnQubG9hZGVkPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5zdG9yZV9pbmZvPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5kZXZlbG9wX2FuZF9pbXByb3ZlX3NlcnZpY2VzPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5tZWFzdXJlX2FkX3BlcmZvcm1hbmNlPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5tZWFzdXJlX2NvbnRlbnRfcGVyZm9ybWFuY2U9dHJ1ZTt3aW5kb3cuZXpUY2ZDb25zZW50LnNlbGVjdF9iYXNpY19hZHM9dHJ1ZTt3aW5kb3cuZXpUY2ZDb25zZW50LmNyZWF0ZV9hZF9wcm9maWxlPXRydWU7d2luZG93LmV6VGNmQ29uc2VudC5zZWxlY3RfcGVyc29uYWxpemVkX2Fkcz10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQuY3JlYXRlX2NvbnRlbnRfcHJvZmlsZT10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQuc2VsZWN0X3BlcnNvbmFsaXplZF9jb250ZW50PXRydWU7d2luZG93LmV6VGNmQ29uc2VudC51bmRlcnN0YW5kX2F1ZGllbmNlcz10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQudXNlX2xpbWl0ZWRfZGF0YV90b19zZWxlY3RfY29udGVudD10cnVlO3dpbmRvdy5lelRjZkNvbnNlbnQuc2VsZWN0X3BlcnNvbmFsaXplZF9jb250ZW50PXRydWU7fQpmdW5jdGlvbiBfY2xlYXJFekNvbnNlbnRDb29raWUoKXtkb2N1bWVudC5jb29raWU9ImV6Q01QQ29va2llQ29uc2VudD10Y2YyO0RvbWFpbj0ucGxhbnR1bWwuY29tO1BhdGg9LztleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDAgR01UIjt9Cl9jbGVhckV6Q29uc2VudENvb2tpZSgpO2lmKHR5cGVvZiB3aW5kb3cuX190Y2ZhcGkhPT0idW5kZWZpbmVkIil7d2luZG93LmV6Z2NvbnNlbnQ9ZmFsc2U7dmFyIGFtYXpvbkhhc1J1bj1mYWxzZTtmdW5jdGlvbiBfZXpBbGxvd2VkKHRjZGF0YSxwdXJwb3NlKXtyZXR1cm4odGNkYXRhLnB1cnBvc2UuY29uc2VudHNbcHVycG9zZV18fHRjZGF0YS5wdXJwb3NlLmxlZ2l0aW1hdGVJbnRlcmVzdHNbcHVycG9zZV0pO30KZnVuY3Rpb24gX2hhbmRsZUNvbnNlbnREZWNpc2lvbih0Y2RhdGEpe3dpbmRvdy5lelRjZkNvbnNlbnQubG9hZGVkPXRydWU7aWYoIXRjZGF0YS52ZW5kb3IuY29uc2VudHNbIjM0NyJdJiYhdGNkYXRhLnZlbmRvci5sZWdpdGltYXRlSW50ZXJlc3RzWyIzNDciXSl7d2luZG93Ll9lbWl0RXpDb25zZW50RXZlbnQoKTtyZXR1cm47fQp3aW5kb3cuZXpUY2ZDb25zZW50LnN0b3JlX2luZm89X2V6QWxsb3dlZCh0Y2RhdGEsIjEiKTt3aW5kb3cuZXpUY2ZDb25zZW50LmRldmVsb3BfYW5kX2ltcHJvdmVfc2VydmljZXM9X2V6QWxsb3dlZCh0Y2RhdGEsIjEwIik7d2luZG93LmV6VGNmQ29uc2VudC5tZWFzdXJlX2NvbnRlbnRfcGVyZm9ybWFuY2U9X2V6QWxsb3dlZCh0Y2RhdGEsIjgiKTt3aW5kb3cuZXpUY2ZDb25zZW50LnNlbGVjdF9iYXNpY19hZHM9X2V6QWxsb3dlZCh0Y2RhdGEsIjIiKTt3aW5kb3cuZXpUY2ZDb25zZW50LmNyZWF0ZV9hZF9wcm9maWxlPV9lekFsbG93ZWQodGNkYXRhLCIzIik7d2luZG93LmV6VGNmQ29uc2VudC5zZWxlY3RfcGVyc29uYWxpemVkX2Fkcz1fZXpBbGxvd2VkKHRjZGF0YSwiNCIpO3dpbmRvdy5lelRjZkNvbnNlbnQuY3JlYXRlX2NvbnRlbnRfcHJvZmlsZT1fZXpBbGxvd2VkKHRjZGF0YSwiNSIpO3dpbmRvdy5lelRjZkNvbnNlbnQubWVhc3VyZV9hZF9wZXJmb3JtYW5jZT1fZXpBbGxvd2VkKHRjZGF0YSwiNyIpO3dpbmRvdy5lelRjZkNvbnNlbnQudXNlX2xpbWl0ZWRfZGF0YV90b19zZWxlY3RfY29udGVudD1fZXpBbGxvd2VkKHRjZGF0YSwiMTEiKTt3aW5kb3cuZXpUY2ZDb25zZW50LnNlbGVjdF9wZXJzb25hbGl6ZWRfY29udGVudD1fZXpBbGxvd2VkKHRjZGF0YSwiNiIpO3dpbmRvdy5lelRjZkNvbnNlbnQudW5kZXJzdGFuZF9hdWRpZW5jZXM9X2V6QWxsb3dlZCh0Y2RhdGEsIjkiKTt3aW5kb3cuX2VtaXRFekNvbnNlbnRFdmVudCgpO30KZnVuY3Rpb24gX2hhbmRsZUdvb2dsZUNvbnNlbnRWMih0Y2RhdGEpe2lmKCF0Y2RhdGF8fCF0Y2RhdGEucHVycG9zZXx8IXRjZGF0YS5wdXJwb3NlLmNvbnNlbnRzKXtyZXR1cm47fQp2YXIgZ29vZ0NvbnNlbnRWMj17fTtpZih0Y2RhdGEucHVycG9zZS5jb25zZW50c1sxXSl7Z29vZ0NvbnNlbnRWMi5hZF9zdG9yYWdlPSdncmFudGVkJztnb29nQ29uc2VudFYyLmFuYWx5dGljc19zdG9yYWdlPSdncmFudGVkJzt9CmlmKHRjZGF0YS5wdXJwb3NlLmNvbnNlbnRzWzNdJiZ0Y2RhdGEucHVycG9zZS5jb25zZW50c1s0XSl7Z29vZ0NvbnNlbnRWMi5hZF9wZXJzb25hbGl6YXRpb249J2dyYW50ZWQnO30KaWYodGNkYXRhLnB1cnBvc2UuY29uc2VudHNbMV0mJnRjZGF0YS5wdXJwb3NlLmNvbnNlbnRzWzddKXtnb29nQ29uc2VudFYyLmFkX3VzZXJfZGF0YT0nZ3JhbnRlZCc7fQppZihnb29nQ29uc2VudFYyLmFuYWx5dGljc19zdG9yYWdlPT0nZGVuaWVkJyl7Z3RhZygnc2V0JywndXJsX3Bhc3N0aHJvdWdoJyx0cnVlKTt9Cmd0YWcoJ2NvbnNlbnQnLCd1cGRhdGUnLGdvb2dDb25zZW50VjIpO30KX190Y2ZhcGkoImFkZEV2ZW50TGlzdGVuZXIiLDIsZnVuY3Rpb24odGNkYXRhLHN1Y2Nlc3Mpe2lmKCFzdWNjZXNzfHwhdGNkYXRhKXt3aW5kb3cuX2VtaXRFekNvbnNlbnRFdmVudCgpO3JldHVybjt9CmlmKCF0Y2RhdGEuZ2RwckFwcGxpZXMpe19zZXRBbGxFekNvbnNlbnRUcnVlKCk7d2luZG93Ll9lbWl0RXpDb25zZW50RXZlbnQoKTtyZXR1cm47fQppZih0Y2RhdGEuZXZlbnRTdGF0dXM9PT0idXNlcmFjdGlvbmNvbXBsZXRlInx8dGNkYXRhLmV2ZW50U3RhdHVzPT09InRjbG9hZGVkIil7aWYodHlwZW9mIGd0YWchPSd1bmRlZmluZWQnKXtfaGFuZGxlR29vZ2xlQ29uc2VudFYyKHRjZGF0YSk7fQpfaGFuZGxlQ29uc2VudERlY2lzaW9uKHRjZGF0YSk7aWYodGNkYXRhLnB1cnBvc2UuY29uc2VudHNbIjEiXT09PXRydWUmJnRjZGF0YS52ZW5kb3IuY29uc2VudHNbIjc1NSJdIT09ZmFsc2Upe3dpbmRvdy5lemdjb25zZW50PXRydWU7KGFkc2J5Z29vZ2xlPXdpbmRvdy5hZHNieWdvb2dsZXx8W10pLnBhdXNlQWRSZXF1ZXN0cz0wO30KaWYod2luZG93Ll9fZXpjb25zZW50KXtfX2V6Y29uc2VudC5zZXRFem9pY0NvbnNlbnRTZXR0aW5ncyhlekNvbnNlbnRDYXRlZ29yaWVzKTt9Cl9fdGNmYXBpKCJyZW1vdmVFdmVudExpc3RlbmVyIiwyLGZ1bmN0aW9uKHN1Y2Nlc3Mpe3JldHVybiBudWxsO30sdGNkYXRhLmxpc3RlbmVySWQpO2lmKCEodGNkYXRhLnB1cnBvc2UuY29uc2VudHNbIjEiXT09PXRydWUmJl9lekFsbG93ZWQodGNkYXRhLCIyIikmJl9lekFsbG93ZWQodGNkYXRhLCIzIikmJl9lekFsbG93ZWQodGNkYXRhLCI0IikpKXtpZih0eXBlb2YgX19lej09Im9iamVjdCImJnR5cGVvZiBfX2V6LmJpdD09Im9iamVjdCImJnR5cGVvZiB3aW5kb3dbIl9lemFxIl09PSJvYmplY3QiJiZ0eXBlb2Ygd2luZG93WyJfZXphcSJdWyJwYWdlX3ZpZXdfaWQiXT09InN0cmluZyIpe19fZXouYml0LkFkZCh3aW5kb3dbIl9lemFxIl1bInBhZ2Vfdmlld19pZCJdLFtuZXcgX19lekRvdERhdGEoIm5vbl9wZXJzb25hbGl6ZWRfYWRzIix0cnVlKSxdKTt9fX19KTt9ZWxzZXtfc2V0QWxsRXpDb25zZW50VHJ1ZSgpO3dpbmRvdy5fZW1pdEV6Q29uc2VudEV2ZW50KCk7fX0pKHdpbmRvdyxkb2N1bWVudCk7PC9zY3JpcHQ+PC9ib2R5PjwvaHRtbD4=" class="uml" alt="uml diagram" title="" />
## コミット: f6d663a
### メッセージ
### 変更されたファイル
- M .devcontainer/devcontainer.json
- M Dockerfile
- A Dockerfile-base
- M README.md
- M docker-compose.yml
### 変更内容
```diff
commit f6d663a639d8545e7b41788280fa5da2561c8291
Author: k2works <kakimomokuri@gmail.com>
Date: Thu Apr 24 17:13:56 2025 +0900
build:レストア
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 52f7251..55a3816 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -2,7 +2,6 @@
// README at: https://github.com/devcontainers/templates/tree/main/src/docker-in-docker
{
"name": "Docker in Docker",
- // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
"image": "baukis-kai",
"features": {
diff --git a/Dockerfile b/Dockerfile
index 91daa36..c68b6cd 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,90 +1,4 @@
-FROM ubuntu:18.04
-
-# Setup locale
-RUN \
-apt-get -yq update && \
-apt-get install -y language-pack-ja-base language-pack-ja
-RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
-ENV LANG=ja_JP.UTF-8
-ENV LC_ALL=ja_JP.UTF-8
-ENV LC_CTYPE=ja_JP.UTF-8
-
-RUN apt-get update && \
- apt-get install -y \
- sudo \
- build-essential \
- zip \
- unzip \
- git \
- curl \
- wget \
- git-core \
- libssl-dev \
- libqt4-dev \
- libc6-dev \
- automake \
- libtool \
- libyaml-dev \
- zlib1g \
- zlib1g-dev \
- openssl \
- libreadline-dev \
- libxml2-dev \
- libxslt1-dev \
- libncurses5-dev \
- pkg-config \
- chrpath \
- libfontconfig1-dev \
- libxft-dev \
- libpq-dev \
- libsqlite3-dev \
- libmysqlclient-dev \
- default-mysql-client \
- postgresql-client \
- xvfb \
- qtbase5-dev \
- libqt5webkit5-dev \
- libqtwebkit-dev \
- xauth \
- libcurl4-openssl-dev \
- software-properties-common \
- libffi-dev \
- libgdbm5 \
- libgdbm-dev \
- libdb-dev \
- lsof \
- vim
-
-# Ruby
-ENV RUBY_VER 2.4.0
-ENV BUNDLER_VER 1.13.7
-RUN rm -rf ~/.rbenv
-RUN git clone https://github.com/sstephenson/rbenv ~/.rbenv
-RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
-RUN ~/.rbenv/plugins/ruby-build/install.sh
-RUN echo 'export PATH="/$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
-RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
-RUN . ~/.bash_profile && \
- rbenv install $RUBY_VER && \
- rbenv global $RUBY_VER
-ENV PATH ~/.rbenv/shims:$PATH
-RUN ~/.rbenv/shims/gem install bundler:$BUNDLER_VER
-
-# Node
-ENV NODE_VER 16
-RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
-RUN . $HOME/.nvm/nvm.sh && \
- nvm install $NODE_VER && \
- nvm use $NODE_VER && \
- node -v && npm -v && \
- npm i -g yarn
-RUN apt install -y nodejs
-
-# Workaround for Ruby
-RUN apt-get install -y libmysqlclient-dev
-RUN ~/.rbenv/shims/gem install mysql2 -v '0.4.5' --source 'https://rubygems.org/'
-RUN apt-get install -y libssl1.0-dev
-RUN ~/.rbenv/shims/gem install puma -v '3.6.0' --source 'https://rubygems.org/'
+FROM baukis-kai
# Bundle install
WORKDIR /srv
@@ -92,4 +6,6 @@ COPY Gemfile /srv/Gemfile
COPY Gemfile.lock /srv/Gemfile.lock
RUN ~/.rbenv/shims/bundle install
-SHELL ["/bin/bash", "-c"]
\ No newline at end of file
+COPY . /srv
+
+CMD ["bash", "-c", "bundle exec rake assets:precompile && bundle exec rake db:migrate && bundle exec rails server -b 0.0.0.0"]
diff --git a/Dockerfile-base b/Dockerfile-base
new file mode 100644
index 0000000..91daa36
--- /dev/null
+++ b/Dockerfile-base
@@ -0,0 +1,95 @@
+FROM ubuntu:18.04
+
+# Setup locale
+RUN \
+apt-get -yq update && \
+apt-get install -y language-pack-ja-base language-pack-ja
+RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
+ENV LANG=ja_JP.UTF-8
+ENV LC_ALL=ja_JP.UTF-8
+ENV LC_CTYPE=ja_JP.UTF-8
+
+RUN apt-get update && \
+ apt-get install -y \
+ sudo \
+ build-essential \
+ zip \
+ unzip \
+ git \
+ curl \
+ wget \
+ git-core \
+ libssl-dev \
+ libqt4-dev \
+ libc6-dev \
+ automake \
+ libtool \
+ libyaml-dev \
+ zlib1g \
+ zlib1g-dev \
+ openssl \
+ libreadline-dev \
+ libxml2-dev \
+ libxslt1-dev \
+ libncurses5-dev \
+ pkg-config \
+ chrpath \
+ libfontconfig1-dev \
+ libxft-dev \
+ libpq-dev \
+ libsqlite3-dev \
+ libmysqlclient-dev \
+ default-mysql-client \
+ postgresql-client \
+ xvfb \
+ qtbase5-dev \
+ libqt5webkit5-dev \
+ libqtwebkit-dev \
+ xauth \
+ libcurl4-openssl-dev \
+ software-properties-common \
+ libffi-dev \
+ libgdbm5 \
+ libgdbm-dev \
+ libdb-dev \
+ lsof \
+ vim
+
+# Ruby
+ENV RUBY_VER 2.4.0
+ENV BUNDLER_VER 1.13.7
+RUN rm -rf ~/.rbenv
+RUN git clone https://github.com/sstephenson/rbenv ~/.rbenv
+RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
+RUN ~/.rbenv/plugins/ruby-build/install.sh
+RUN echo 'export PATH="/$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
+RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
+RUN . ~/.bash_profile && \
+ rbenv install $RUBY_VER && \
+ rbenv global $RUBY_VER
+ENV PATH ~/.rbenv/shims:$PATH
+RUN ~/.rbenv/shims/gem install bundler:$BUNDLER_VER
+
+# Node
+ENV NODE_VER 16
+RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
+RUN . $HOME/.nvm/nvm.sh && \
+ nvm install $NODE_VER && \
+ nvm use $NODE_VER && \
+ node -v && npm -v && \
+ npm i -g yarn
+RUN apt install -y nodejs
+
+# Workaround for Ruby
+RUN apt-get install -y libmysqlclient-dev
+RUN ~/.rbenv/shims/gem install mysql2 -v '0.4.5' --source 'https://rubygems.org/'
+RUN apt-get install -y libssl1.0-dev
+RUN ~/.rbenv/shims/gem install puma -v '3.6.0' --source 'https://rubygems.org/'
+
+# Bundle install
+WORKDIR /srv
+COPY Gemfile /srv/Gemfile
+COPY Gemfile.lock /srv/Gemfile.lock
+RUN ~/.rbenv/shims/bundle install
+
+SHELL ["/bin/bash", "-c"]
\ No newline at end of file
diff --git a/README.md b/README.md
index 20b3b14..8067995 100644
--- a/README.md
+++ b/README.md
@@ -42,16 +42,12 @@ Baukis 改
1. [検索フォーム](#検索フォーム)
## アプリケーション環境構築
-### Vagarntのセットアップ
-```
-vagrant up
-vagrant ssh
-```
### Dockerのセットアップ
```
-cd /vagrant/
-docker-compose build
+docker build -t baukis-kai -f Dockerfile-base .
+docker compose build
+docker compose up -d
```
### 追加Gemセットアップ
diff --git a/docker-compose.yml b/docker-compose.yml
index f15c0d7..1c4c872 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,5 +1,18 @@
version: '2'
services:
+ app:
+ build:
+ context: .
+ depends_on:
+ - db
+ environment:
+ MYSQL_HOST: db
+ MYSQL_PORT: 3306
+ MYSQL_USER: user
+ MYSQL_PASSWORD: pass
+ MYSQL_DATABASE: app_development
+ ports:
+ - "3000:3000"
db:
image: mysql:5.7
environment:
@@ -10,33 +23,11 @@ services:
- 3306:3306
volumes:
- mysql-db:/var/lib/mysql
- web:
- build: .
- environment:
- - RAILS_ENV=production
- - RAILS_SERVE_STATIC_FILES=public
- - SECRET_KEY_BASE=8ea360b9c9f1fd8686e20bcf0e02ddcbcd78ad5984559739e04f343d79e44d3cecb09a2b930d0c78bfc5778026b7905a414222f43dd24db86fc076e43e4c35fa
- - DATABASE_URL=db
- command: bundle exec rails s -p 3000 -b '0.0.0.0'
- volumes:
- - .:/myapp
- ports:
- - "3000:3000"
- depends_on:
- - db
- proxy:
- image: nginx:1.11
- ports:
- - "80:80"
- depends_on:
- - web
- volumes:
- - ./nginx_default.conf:/etc/nginx/conf.d/default.conf
console:
build:
context: .
- dockerfile: ./Dockerfile
+ dockerfile: Dockerfile-base
environment:
MYSQL_HOST: db
MYSQL_PORT: 3306
コミット: 826251b¶
メッセージ¶
build:ファイルの整理
変更されたファイル¶
- M .gitignore
- D .idea/.generators
- D .idea/.rakeTasks
- D .idea/misc.xml
- D .idea/modules.xml
- D .idea/vagrant.xml
- D .idea/vcs.xml
- D Jenkinsfile
- M README.md
- D Vagrantfile
- D circle.yml
変更内容¶
commit 826251ba59558977a2b089cb862f1c21b7d57cbe
Author: k2works <kakimomokuri@gmail.com>
Date: Thu Apr 24 16:35:17 2025 +0900
build:ファイルの整理
diff --git a/.gitignore b/.gitignore
index 05ce7cf..40045d9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -106,4 +106,6 @@ bower.json
# Ignore Byebug command history file.
.byebug_history
-public/assets/
\ No newline at end of file
+public/assets/
+.idea/
+*.iml
\ No newline at end of file
diff --git a/.idea/.generators b/.idea/.generators
deleted file mode 100644
index a68204b..0000000
--- a/.idea/.generators
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Settings><!--This file was automatically generated by Ruby plugin.
-You are allowed to:
-1. Reorder generators
-2. Remove generators
-3. Add installed generators
-To add new installed generators automatically delete this file and reload the project.
---><GeneratorsGroup><Generator name="annotate:install" /><Generator name="assets" /><Generator name="channel" /><Generator name="coffee:assets" /><Generator name="controller" /><Generator name="erd:install" /><Generator name="factory_girl:model" /><Generator name="generator" /><Generator name="helper" /><Generator name="i18n" /><Generator name="i18n_locale" /><Generator name="i18n_translation" /><Generator name="integration_test" /><Generator name="jbuilder" /><Generator name="job" /><Generator name="js:assets" /><Generator name="kaminari:config" /><Generator name="kaminari:views" /><Generator name="mailer" /><Generator name="migration" /><Generator name="model" /><Generator name="rack:dev-mark:install" /><Generator name="resource" /><Generator name="rspec:controller" /><Generator name="rspec:feature" /><Generator name="rspec:helper" /><Generator name="rspec:install" /><Generator name="rspec:integration" /><Generator name="rspec:job" /><Generator name="rspec:mailer" /><Generator name="rspec:model" /><Generator name="rspec:observer" /><Generator name="rspec:request" /><Generator name="rspec:scaffold" /><Generator name="rspec:view" /><Generator name="scaffold" /><Generator name="scaffold_controller" /><Generator name="task" /><Generator name="test_unit:controller" /><Generator name="test_unit:generator" /><Generator name="test_unit:helper" /><Generator name="test_unit:integration" /><Generator name="test_unit:job" /><Generator name="test_unit:mailer" /><Generator name="test_unit:model" /><Generator name="test_unit:plugin" /><Generator name="test_unit:scaffold" /></GeneratorsGroup></Settings>
diff --git a/.idea/.rakeTasks b/.idea/.rakeTasks
deleted file mode 100644
index 435f846..0000000
--- a/.idea/.rakeTasks
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Settings><!--This file was automatically generated by Ruby plugin.
-You are allowed to:
-1. Remove rake task
-2. Add existing rake tasks
-To add existing rake tasks automatically delete this file and reload the project.
---><RakeGroup description="" fullCmd="" taksId="rake"><RakeTask description="List versions of all Rails frameworks and the environment" fullCmd="about" taksId="about" /><RakeTask description="Add schema information (as comments) to model and fixture files" fullCmd="annotate_models" taksId="annotate_models" /><RakeTask description="Adds the route map to routes.rb" fullCmd="annotate_routes" taksId="annotate_routes" /><RakeGroup description="" fullCmd="" taksId="app"><RakeTask description="Applies the template supplied by LOCATION=(/path/to/template) or URL" fullCmd="app:template" taksId="template" /><RakeTask description="Update configs and some other initially generated files (or use just update:configs or update:bin)" fullCmd="app:update" taksId="update" /><RakeGroup description="" fullCmd="" taksId="templates"><RakeTask description="" fullCmd="app:templates:copy" taksId="copy" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="update"><RakeTask description="" fullCmd="app:update:bin" taksId="bin" /><RakeTask description="" fullCmd="app:update:configs" taksId="configs" /><RakeTask description="" fullCmd="app:update:upgrade_guide_info" taksId="upgrade_guide_info" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="assets"><RakeTask description="Remove old compiled assets" fullCmd="assets:clean[keep]" taksId="clean[keep]" /><RakeTask description="Remove compiled assets" fullCmd="assets:clobber" taksId="clobber" /><RakeTask description="Load asset compile environment" fullCmd="assets:environment" taksId="environment" /><RakeTask description="Compile all the assets named in config.assets.precompile" fullCmd="assets:precompile" taksId="precompile" /><RakeTask description="" fullCmd="assets:clean" taksId="clean" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="cache_digests"><RakeTask description="Lookup first-level dependencies for TEMPLATE (like messages/show or comments/_comment.html)" fullCmd="cache_digests:dependencies" taksId="dependencies" /><RakeTask description="Lookup nested dependencies for TEMPLATE (like messages/show or comments/_comment.html)" fullCmd="cache_digests:nested_dependencies" taksId="nested_dependencies" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="db"><RakeTask description="Creates the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:create:all to create all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to creating the development and test databases" fullCmd="db:create" taksId="create" /><RakeTask description="Drops the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV or when RAILS_ENV is development, it defaults to dropping the development and test databases" fullCmd="db:drop" taksId="drop" /><RakeGroup description="" fullCmd="" taksId="environment"><RakeTask description="Set the environment value for the database" fullCmd="db:environment:set" taksId="set" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="fixtures"><RakeTask description="Loads fixtures into the current environment's database" fullCmd="db:fixtures:load" taksId="load" /><RakeTask description="" fullCmd="db:fixtures:identify" taksId="identify" /></RakeGroup><RakeTask description="Migrate the database (options: VERSION=x, VERBOSE=false, SCOPE=blog)" fullCmd="db:migrate" taksId="migrate" /><RakeGroup description="" fullCmd="" taksId="migrate"><RakeTask description="Display status of migrations" fullCmd="db:migrate:status" taksId="status" /><RakeTask description="" fullCmd="db:migrate:change" taksId="change" /><RakeTask description="" fullCmd="db:migrate:down" taksId="down" /><RakeTask description="" fullCmd="db:migrate:redo" taksId="redo" /><RakeTask description="" fullCmd="db:migrate:reset" taksId="reset" /><RakeTask description="" fullCmd="db:migrate:up" taksId="up" /></RakeGroup><RakeTask description="Rolls the schema back to the previous version (specify steps w/ STEP=n)" fullCmd="db:rollback" taksId="rollback" /><RakeGroup description="" fullCmd="" taksId="schema"><RakeGroup description="" fullCmd="" taksId="cache"><RakeTask description="Clears a db/schema_cache.dump file" fullCmd="db:schema:cache:clear" taksId="clear" /><RakeTask description="Creates a db/schema_cache.dump file" fullCmd="db:schema:cache:dump" taksId="dump" /></RakeGroup><RakeTask description="Creates a db/schema.rb file that is portable against any DB supported by Active Record" fullCmd="db:schema:dump" taksId="dump" /><RakeTask description="Loads a schema.rb file into the database" fullCmd="db:schema:load" taksId="load" /><RakeTask description="" fullCmd="db:schema:load_if_ruby" taksId="load_if_ruby" /></RakeGroup><RakeTask description="Loads the seed data from db/seeds.rb" fullCmd="db:seed" taksId="seed" /><RakeTask description="Creates the database, loads the schema, and initializes with the seed data (use db:reset to also drop the database first)" fullCmd="db:setup" taksId="setup" /><RakeGroup description="" fullCmd="" taksId="structure"><RakeTask description="Dumps the database structure to db/structure.sql" fullCmd="db:structure:dump" taksId="dump" /><RakeTask description="Recreates the databases from the structure.sql file" fullCmd="db:structure:load" taksId="load" /><RakeTask description="" fullCmd="db:structure:load_if_sql" taksId="load_if_sql" /></RakeGroup><RakeTask description="Retrieves the current schema version number" fullCmd="db:version" taksId="version" /><RakeTask description="" fullCmd="db:_dump" taksId="_dump" /><RakeTask description="" fullCmd="db:abort_if_pending_migrations" taksId="abort_if_pending_migrations" /><RakeTask description="" fullCmd="db:charset" taksId="charset" /><RakeTask description="" fullCmd="db:check_protected_environments" taksId="check_protected_environments" /><RakeTask description="" fullCmd="db:collation" taksId="collation" /><RakeGroup description="" fullCmd="" taksId="create"><RakeTask description="" fullCmd="db:create:all" taksId="all" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="drop"><RakeTask description="" fullCmd="db:drop:_unsafe" taksId="_unsafe" /><RakeTask description="" fullCmd="db:drop:all" taksId="all" /></RakeGroup><RakeTask description="" fullCmd="db:forward" taksId="forward" /><RakeTask description="" fullCmd="db:load_config" taksId="load_config" /><RakeTask description="" fullCmd="db:purge" taksId="purge" /><RakeGroup description="" fullCmd="" taksId="purge"><RakeTask description="" fullCmd="db:purge:all" taksId="all" /></RakeGroup><RakeTask description="" fullCmd="db:reset" taksId="reset" /><RakeGroup description="" fullCmd="" taksId="test"><RakeTask description="" fullCmd="db:test:clone" taksId="clone" /><RakeTask description="" fullCmd="db:test:clone_schema" taksId="clone_schema" /><RakeTask description="" fullCmd="db:test:clone_structure" taksId="clone_structure" /><RakeTask description="" fullCmd="db:test:deprecated" taksId="deprecated" /><RakeTask description="" fullCmd="db:test:load" taksId="load" /><RakeTask description="" fullCmd="db:test:load_schema" taksId="load_schema" /><RakeTask description="" fullCmd="db:test:load_structure" taksId="load_structure" /><RakeTask description="" fullCmd="db:test:prepare" taksId="prepare" /><RakeTask description="" fullCmd="db:test:purge" taksId="purge" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="dev"><RakeTask description="Toggle development mode caching on/off" fullCmd="dev:cache" taksId="cache" /></RakeGroup><RakeTask description="Generate an Entity-Relationship Diagram based on your models" fullCmd="erd" taksId="erd" /><RakeTask description="Print out all defined initializers in the order they are invoked by Rails" fullCmd="initializers" taksId="initializers" /><RakeGroup description="" fullCmd="" taksId="log"><RakeTask description="Truncates all/specified *.log files in log/ to zero bytes (specify which logs with LOGS=test,development)" fullCmd="log:clear" taksId="clear" /></RakeGroup><RakeTask description="Prints out your Rack middleware stack" fullCmd="middleware" taksId="middleware" /><RakeTask description="Enumerate all annotations (use notes:optimize, :fixme, :todo for focus)" fullCmd="notes" taksId="notes" /><RakeGroup description="" fullCmd="" taksId="notes"><RakeTask description="Enumerate a custom annotation, specify with ANNOTATION=CUSTOM" fullCmd="notes:custom" taksId="custom" /><RakeTask description="" fullCmd="notes:fixme" taksId="fixme" /><RakeTask description="" fullCmd="notes:optimize" taksId="optimize" /><RakeTask description="" fullCmd="notes:todo" taksId="todo" /></RakeGroup><RakeTask description="Remove schema information from model and fixture files" fullCmd="remove_annotation" taksId="remove_annotation" /><RakeTask description="Removes the route map from routes.rb" fullCmd="remove_routes" taksId="remove_routes" /><RakeTask description="Restart app by touching tmp/restart.txt" fullCmd="restart" taksId="restart" /><RakeTask description="Print out all defined routes in match order, with names" fullCmd="routes" taksId="routes" /><RakeTask description="Generate a cryptographically secure secret key (this is typically used to generate a secret for cookie sessions)" fullCmd="secret" taksId="secret" /><RakeTask description="Run all specs in spec directory (excluding plugin specs)" fullCmd="spec" taksId="spec" /><RakeGroup description="" fullCmd="" taksId="spec"><RakeTask description="Run the code examples in spec/controllers" fullCmd="spec:controllers" taksId="controllers" /><RakeTask description="Run the code examples in spec/features" fullCmd="spec:features" taksId="features" /><RakeTask description="Run the code examples in spec/models" fullCmd="spec:models" taksId="models" /><RakeTask description="Run the code examples in spec/routing" fullCmd="spec:routing" taksId="routing" /><RakeTask description="Run the code examples in spec/services" fullCmd="spec:services" taksId="services" /><RakeTask description="" fullCmd="spec:prepare" taksId="prepare" /><RakeTask description="" fullCmd="spec:statsetup" taksId="statsetup" /></RakeGroup><RakeTask description="Report code statistics (KLOCs, etc) from the application or engine" fullCmd="stats" taksId="stats" /><RakeTask description="Runs all tests in test folder" fullCmd="test" taksId="test" /><RakeGroup description="" fullCmd="" taksId="test"><RakeTask description="Run tests quickly, but also reset db" fullCmd="test:db" taksId="db" /><RakeTask description="" fullCmd="test:controllers" taksId="controllers" /><RakeTask description="" fullCmd="test:functionals" taksId="functionals" /><RakeTask description="" fullCmd="test:generators" taksId="generators" /><RakeTask description="" fullCmd="test:helpers" taksId="helpers" /><RakeTask description="" fullCmd="test:integration" taksId="integration" /><RakeTask description="" fullCmd="test:jobs" taksId="jobs" /><RakeTask description="" fullCmd="test:mailers" taksId="mailers" /><RakeTask description="" fullCmd="test:models" taksId="models" /><RakeTask description="" fullCmd="test:prepare" taksId="prepare" /><RakeTask description="" fullCmd="test:run" taksId="run" /><RakeTask description="" fullCmd="test:units" taksId="units" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="time"><RakeTask description="List all time zones, list by two-letter country code (`rails time:zones[US]`), or list by UTC offset (`rails time:zones[-8]`)" fullCmd="time:zones[country_or_offset]" taksId="zones[country_or_offset]" /><RakeTask description="" fullCmd="time:zones" taksId="zones" /><RakeGroup description="" fullCmd="" taksId="zones"><RakeTask description="" fullCmd="time:zones:all" taksId="all" /><RakeTask description="" fullCmd="time:zones:local" taksId="local" /><RakeTask description="" fullCmd="time:zones:us" taksId="us" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="tmp"><RakeTask description="Clear cache and socket files from tmp/ (narrow w/ tmp:cache:clear, tmp:sockets:clear)" fullCmd="tmp:clear" taksId="clear" /><RakeTask description="Creates tmp directories for cache, sockets, and pids" fullCmd="tmp:create" taksId="create" /><RakeGroup description="" fullCmd="" taksId="cache"><RakeTask description="" fullCmd="tmp:cache:clear" taksId="clear" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="pids"><RakeTask description="" fullCmd="tmp:pids:clear" taksId="clear" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="sockets"><RakeTask description="" fullCmd="tmp:sockets:clear" taksId="clear" /></RakeGroup></RakeGroup><RakeTask description="" fullCmd="default" taksId="default" /><RakeTask description="" fullCmd="environment" taksId="environment" /><RakeGroup description="" fullCmd="" taksId="erd"><RakeTask description="" fullCmd="erd:generate" taksId="generate" /><RakeTask description="" fullCmd="erd:load_models" taksId="load_models" /><RakeTask description="" fullCmd="erd:options" taksId="options" /></RakeGroup><RakeGroup description="" fullCmd="" taksId="rails"><RakeTask description="" fullCmd="rails:template" taksId="template" /><RakeGroup description="" fullCmd="" taksId="templates"><RakeTask description="" fullCmd="rails:templates:copy" taksId="copy" /></RakeGroup><RakeTask description="" fullCmd="rails:update" taksId="update" /><RakeGroup description="" fullCmd="" taksId="update"><RakeTask description="" fullCmd="rails:update:bin" taksId="bin" /><RakeTask description="" fullCmd="rails:update:configs" taksId="configs" /></RakeGroup></RakeGroup><RakeGroup description="" fullCmd="" taksId="railties"><RakeGroup description="" fullCmd="" taksId="install"><RakeTask description="" fullCmd="railties:install:migrations" taksId="migrations" /></RakeGroup></RakeGroup><RakeTask description="" fullCmd="set_annotation_options" taksId="set_annotation_options" /><RakeTask description="" fullCmd="tmp" taksId="tmp" /><RakeTask description="" fullCmd="tmp/cache" taksId="tmp/cache" /><RakeTask description="" fullCmd="tmp/cache/assets" taksId="tmp/cache/assets" /><RakeTask description="" fullCmd="tmp/pids" taksId="tmp/pids" /><RakeTask description="" fullCmd="tmp/sockets" taksId="tmp/sockets" /></RakeGroup></Settings>
diff --git a/.idea/misc.xml b/.idea/misc.xml
deleted file mode 100644
index 5e26784..0000000
--- a/.idea/misc.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_3" default="false" project-jdk-name="rbenv: 2.4.0" project-jdk-type="RUBY_SDK">
- <output url="file://$PROJECT_DIR$/out" />
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
deleted file mode 100644
index 1f69da7..0000000
--- a/.idea/modules.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="ProjectModuleManager">
- <modules>
- <module fileurl="file://$PROJECT_DIR$/baukis-kai.iml" filepath="$PROJECT_DIR$/baukis-kai.iml" />
- </modules>
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/vagrant.xml b/.idea/vagrant.xml
deleted file mode 100644
index c6e2d31..0000000
--- a/.idea/vagrant.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VagrantProjectSettings">
- <option name="instanceFolder" value="$PROJECT_DIR$" />
- </component>
-</project>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
deleted file mode 100644
index 35eb1dd..0000000
--- a/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project version="4">
- <component name="VcsDirectoryMappings">
- <mapping directory="" vcs="Git" />
- </component>
-</project>
\ No newline at end of file
diff --git a/Jenkinsfile b/Jenkinsfile
deleted file mode 100644
index 098e206..0000000
--- a/Jenkinsfile
+++ /dev/null
@@ -1,24 +0,0 @@
-node('master') {
-
- stage 'Checkout'
- git url: 'https://github.com/k2works/baukis-kai.git'
-
- stage 'Prepare'
- env.PATH = '/usr/local/bin:$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH'
- sh 'eval "$(rbenv init -)"'
- sh 'rbenv local 2.4.0'
-
- stage 'Prepare test'
- sh "bundle install"
- sh "bundle exec rake db:migrate"
- sh "bundle exec rake db:test:prepare"
-
- stage "Unit test"
- sh "bundle exec rspec spec/controllers/*_spec.rb"
- sh "bundle exec rspec spec/models/*_spec.rb"
- sh "bundle exec rspec spec/routing/*_spec.rb"
- sh "bundle exec rspec spec/services/*_spec.rb"
-
- stage "Integration test"
- sh "bundle exec rspec spec/features/*_spec.rb"
-}
diff --git a/README.md b/README.md
index 14a6731..20b3b14 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,6 @@ Baukis 改
|:---------------|:-------------|:------------|
| ruby |2.4.0 | |
| rails |5.0.1 | |
-| vagrant |1.8.7 | |
| docker |1.12.5 | |
| docker-compose |1.8.0 | |
diff --git a/Vagrantfile b/Vagrantfile
deleted file mode 100644
index b27838b..0000000
--- a/Vagrantfile
+++ /dev/null
@@ -1,27 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-Vagrant.configure("2") do |config|
- config.vm.box = "hiroshima-arc/manhattan"
- config.vm.box_version = "1.0.0"
-
- config.vm.network :forwarded_port, guest:80, host:8888, id:"nginx"
- config.vm.network :forwarded_port, guest:3000, host:3000, id:"rails"
- config.vm.network :forwarded_port, guest:3306, host:3306, id:"mysql"
- config.vm.network :forwarded_port, guest:5432, host:5432, id:"postgresql"
- config.vm.network :forwarded_port, guest:6379, host:6379, id:"redis"
- config.vm.network :forwarded_port, guest:27017, host:27017, id:"mongodb"
- config.vm.network :forwarded_port, guest:8080, host:8080, id:"jenkins"
- config.vm.network :private_network, ip:"127.0.0.1"
-
- config.vm.synced_folder ".", "/vagrant", mount_options: ['dmode=777','fmode=777']
-
- config.vm.provider "virtualbox" do |vb|
- vb.gui = false
-
- # Use VBoxManage to customize the VM. For example to change memory:
- vb.customize ["modifyvm", :id, "--memory", "4096"]
- vb.customize ["modifyvm", :id, "--vram", "128"]
- vb.customize ["modifyvm", :id, "--accelerate3d", "on"]
- end
-end
\ No newline at end of file
diff --git a/circle.yml b/circle.yml
deleted file mode 100644
index 150a280..0000000
--- a/circle.yml
+++ /dev/null
@@ -1,5 +0,0 @@
-deployment:
- staging:
- branch: master
- heroku:
- appname: baukis-kai
\ No newline at end of file
コミット: 835dfd2¶
メッセージ¶
build:devcontainerセットアップ
変更されたファイル¶
- A .devcontainer/devcontainer.json
変更内容¶
commit 835dfd2f8375a81df83e71c3b6b91ffbd65b6448
Author: k2works <kakimomokuri@gmail.com>
Date: Thu Apr 24 16:29:16 2025 +0900
build:devcontainerセットアップ
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 0000000..52f7251
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,31 @@
+// For format details, see https://aka.ms/devcontainer.json. For config options, see the
+// README at: https://github.com/devcontainers/templates/tree/main/src/docker-in-docker
+{
+ "name": "Docker in Docker",
+ // Or use a Dockerfile or Docker Compose file. More info: https://containers.dev/guide/dockerfile
+ "image": "baukis-kai",
+
+ "features": {
+ "ghcr.io/devcontainers/features/docker-in-docker:2": {
+ "version": "latest",
+ "enableNonRootDocker": "true",
+ "moby": "true"
+ }
+ },
+
+ // Use 'forwardPorts' to make a list of ports inside the container available locally.
+ // "forwardPorts": [],
+
+ // Use 'postCreateCommand' to run commands after the container is created.
+ // "postCreateCommand": "docker --version",
+
+ // Configure tool-specific properties.
+ "customizations" : {
+ "jetbrains" : {
+ "backend" : "IntelliJ"
+ }
+ },
+
+ // Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
+ // "remoteUser": "root"
+}
コミット: 5517d0b¶
メッセージ¶
build:レストア
変更されたファイル¶
- M Dockerfile
- M Gemfile
- M Gemfile.lock
- M config/database.yml
- M config/environments/development.rb
- M docker-compose.yml
変更内容¶
commit 5517d0b74d777666bfef08aad9a3a87b14bf6c0e
Author: k2works <kakimomokuri@gmail.com>
Date: Thu Apr 24 16:00:48 2025 +0900
build:レストア
diff --git a/Dockerfile b/Dockerfile
index de3b64d..91daa36 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,9 +1,95 @@
-FROM ruby:2.4
-
-RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
-RUN mkdir /myapp
-WORKDIR /myapp
-ADD Gemfile /myapp/Gemfile
-ADD Gemfile.lock /myapp/Gemfile.lock
-RUN bundle install
-ADD . /myapp
\ No newline at end of file
+FROM ubuntu:18.04
+
+# Setup locale
+RUN \
+apt-get -yq update && \
+apt-get install -y language-pack-ja-base language-pack-ja
+RUN update-locale LANG=ja_JP.UTF-8 LANGUAGE=ja_JP:ja
+ENV LANG=ja_JP.UTF-8
+ENV LC_ALL=ja_JP.UTF-8
+ENV LC_CTYPE=ja_JP.UTF-8
+
+RUN apt-get update && \
+ apt-get install -y \
+ sudo \
+ build-essential \
+ zip \
+ unzip \
+ git \
+ curl \
+ wget \
+ git-core \
+ libssl-dev \
+ libqt4-dev \
+ libc6-dev \
+ automake \
+ libtool \
+ libyaml-dev \
+ zlib1g \
+ zlib1g-dev \
+ openssl \
+ libreadline-dev \
+ libxml2-dev \
+ libxslt1-dev \
+ libncurses5-dev \
+ pkg-config \
+ chrpath \
+ libfontconfig1-dev \
+ libxft-dev \
+ libpq-dev \
+ libsqlite3-dev \
+ libmysqlclient-dev \
+ default-mysql-client \
+ postgresql-client \
+ xvfb \
+ qtbase5-dev \
+ libqt5webkit5-dev \
+ libqtwebkit-dev \
+ xauth \
+ libcurl4-openssl-dev \
+ software-properties-common \
+ libffi-dev \
+ libgdbm5 \
+ libgdbm-dev \
+ libdb-dev \
+ lsof \
+ vim
+
+# Ruby
+ENV RUBY_VER 2.4.0
+ENV BUNDLER_VER 1.13.7
+RUN rm -rf ~/.rbenv
+RUN git clone https://github.com/sstephenson/rbenv ~/.rbenv
+RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
+RUN ~/.rbenv/plugins/ruby-build/install.sh
+RUN echo 'export PATH="/$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
+RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
+RUN . ~/.bash_profile && \
+ rbenv install $RUBY_VER && \
+ rbenv global $RUBY_VER
+ENV PATH ~/.rbenv/shims:$PATH
+RUN ~/.rbenv/shims/gem install bundler:$BUNDLER_VER
+
+# Node
+ENV NODE_VER 16
+RUN curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.37.2/install.sh | bash
+RUN . $HOME/.nvm/nvm.sh && \
+ nvm install $NODE_VER && \
+ nvm use $NODE_VER && \
+ node -v && npm -v && \
+ npm i -g yarn
+RUN apt install -y nodejs
+
+# Workaround for Ruby
+RUN apt-get install -y libmysqlclient-dev
+RUN ~/.rbenv/shims/gem install mysql2 -v '0.4.5' --source 'https://rubygems.org/'
+RUN apt-get install -y libssl1.0-dev
+RUN ~/.rbenv/shims/gem install puma -v '3.6.0' --source 'https://rubygems.org/'
+
+# Bundle install
+WORKDIR /srv
+COPY Gemfile /srv/Gemfile
+COPY Gemfile.lock /srv/Gemfile.lock
+RUN ~/.rbenv/shims/bundle install
+
+SHELL ["/bin/bash", "-c"]
\ No newline at end of file
diff --git a/Gemfile b/Gemfile
index 7d8acb2..40c2377 100644
--- a/Gemfile
+++ b/Gemfile
@@ -79,7 +79,7 @@ group :test do
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
+gem 'tzinfo-data'
gem 'font-awesome-rails'
gem 'rails_12factor', group: :production
@@ -94,5 +94,4 @@ gem 'email_validator', '~> 1.6'
gem 'jquery-ui-rails', '~> 5.0', '>= 5.0.5'
gem 'momentjs-rails'
gem 'bootstrap3-datetimepicker-rails'
-gem 'tag-it-rails'
-
+gem 'tag-it-rails'
\ No newline at end of file
diff --git a/Gemfile.lock b/Gemfile.lock
index ac11a7f..600d0fd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -297,6 +297,8 @@ GEM
turbolinks-source (5.0.0)
tzinfo (1.2.2)
thread_safe (~> 0.1)
+ tzinfo-data (1.2025.2)
+ tzinfo (>= 1.0.0)
uglifier (3.0.4)
execjs (>= 0.3.0, < 3)
web-console (3.4.0)
diff --git a/config/database.yml b/config/database.yml
index 544640b..c44d192 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -16,7 +16,7 @@ default: &default
pool: 5
username: root
password: password
- host: 127.0.0.1
+ host: <%= ENV.fetch("MYSQL_HOST", "127.0.0.1") %>
development:
<<: *default
diff --git a/config/environments/development.rb b/config/environments/development.rb
index 63bc608..cfacff4 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -53,9 +53,9 @@ Rails.application.configure do
config.file_watcher = ActiveSupport::EventedFileUpdateChecker
config.baukis_kai = {
- staff: { host: '0.0.0.0', path: 'staff' },
- admin: { host: '0.0.0.0', path: 'admin' },
- customer: { host: '0.0.0.0', path: '' },
+ staff: { host: '127.0.0.1', path: 'staff' },
+ admin: { host: '127.0.0.1', path: 'admin' },
+ customer: { host: '127.0.0.1', path: '' },
restrict_ip_addresses: false
}
diff --git a/docker-compose.yml b/docker-compose.yml
index 52da61d..f15c0d7 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,7 +1,15 @@
version: '2'
services:
db:
- image: mysql
+ image: mysql:5.7
+ environment:
+ MYSQL_ROOT_PASSWORD: password
+ MYSQL_USER: user
+ MYSQL_PASSWORD: pass
+ ports:
+ - 3306:3306
+ volumes:
+ - mysql-db:/var/lib/mysql
web:
build: .
environment:
@@ -23,4 +31,24 @@ services:
depends_on:
- web
volumes:
- - ./nginx_default.conf:/etc/nginx/conf.d/default.conf
\ No newline at end of file
+ - ./nginx_default.conf:/etc/nginx/conf.d/default.conf
+
+ console:
+ build:
+ context: .
+ dockerfile: ./Dockerfile
+ environment:
+ MYSQL_HOST: db
+ MYSQL_PORT: 3306
+ MYSQL_USER: user
+ MYSQL_PASSWORD: pass
+ MYSQL_DATABASE: app_development
+ volumes:
+ - .:/srv
+ depends_on:
+ - db
+ stdin_open: true
+
+volumes:
+ mysql-db:
+ driver: local