@ledsun blog

無味の味は佳境に入らざればすなわち知れず

2021-05-01から1ヶ月間の記事一覧

ActiveRecordを継承したクラスからUMLクラス図をMermaid.jsで作る

PlantUMLは便利なんだけど、見た目を工夫したいので、Mermaid.jsを試してみます。 Mermaid.jsで作ったクラス図 mermaid-js.github.io を使いました。 PlantUMLとMermaid.jsのクラス図の文法は、あまり差が無いようです。 @startumlと@endumlを消して、1行目…

ActiveRecordを継承したクラスからUMLクラス図を作る

DBの情報からER図を生成するツールはいくつかあります。 またUMLを生成するツールもあります。 同じような感じで、UMLをActiveRecordから取得します。 この手法の利点はメソッド情報がとれることにあります。 model_name = ARGV[0] class_name = Object.cons…

dotenv-railsを使っていたら環境変数を読込使っていなかったら無視する

begin require 'dotenv/load' rescue LoadError # 何もしない end 参考 GitHub - bkeepers/dotenv: A Ruby gem to load environment variables from `.env`.

引数で受け取ったクラス名からActiveRecordを継承したクラスを作る

require 'active_record' model_name = ARGV[0] Object.const_set model_name, Class.new(ActiveRecord::Base) 参考 Object::ARGV (Ruby 3.0.0 リファレンスマニュアル) ruby - Dynamic Class Definition WITH a Class Name - Stack Overflow

既存のRailsプロジェクトからカラム情報を取得する(成功)

config/database.ymlを直接読み込むと"pool"=>"<%= ENV.fetch(\"RAILS_MAX_THREADS\") { 5 } %>"という謎の情報が取得され、正しいデータベースへの接続情報が得られません。 <%=と%>はeRubyスクリプトです。 Railsアプリケーションなdatabase.ymlは厳密には…

既存のRailsプロジェクトからカラム情報を取得する(原因)

既存のRailsプロジェクトなので、rails consoleで使用しているデータベースへの接続情報を見れば原因がわかるはずです。 ~ bin/rails console Running via Spring preloader in process 24178 Loading development environment (Rails 6.1.3.2) irb(main):00…

既存のRailsプロジェクトからカラム情報を取得する(失敗)

一般的なRailsアプリケーションはconfig/database.ymlにデータベースへの接続情報があります。 これをつかってすでに存在しているデータベースからカラム情報を取得してみましょう。 必要なライブラリを読み込んでirbを起動します。 ~ irb -r 'active_record…

annotate gemっぽいrake taskを作る

RailsアプリケーションのModelクラスのコードにDBのテーブルで定義されているカラムの情報を追加してくれる便利なGemがあります。 github.com ソースコードに書いてしまうとDRYでないので、必要な時に計算する方法を考えてみます。 rake taskとして実装する…

戦国小町苦労譚

漫画から入って原作の小説を読み始めました。 僕は小説の方が向いているみたいです。 蘊蓄量が漫画の10倍ぐらいでした。 女子高生の皮を被ったオタクがひたすら蘊蓄を語り倒す感じがとても良いです。 戦国タイムスリップ物って、徐々に歴史改変が大きくなっ…

これからのマネジャーが大切にすべきこと――42のストーリーで学ぶ思考と行動

ruby-jpでテックリードが話題に出ていて、思い出した本です。 リーダーシップに関してはジョン・コッターの話が有名です。 組織を変えるには強力なリーダーシップが必要で、そのための「変革の8段階」がある、というやつです。 なんとなく「強い一人のリーダ…

ActiveRecordからカラムの型情報を得る

次のスクリプトで、テーブル定義とActiveRecordクラスを用意します。 ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") ActiveRecord::Schema.define do create_table :employees do |t| t.string :name t.integer :age …

ActiveRecordのcreated_at, updated_atの時刻を固定値にするモンキーパッチ

class ActiveRecord::Base def self.current_time_from_proper_timezone Time.local(2008, 9, 1, 10, 5, 0) end end https://github.com/rails/rails/blob/817148a7472413b31b3334c20fc08c6da5ffc68a/activerecord/lib/active_record/timestamp.rb#L77-L79 …

覇権の歴史を見れば、世界がわかる――争奪と興亡の2000年史

中国はおとなしくしていれば覇権とれそうなのに、覇権がとれないのはなぜなのかなと思いました。 歴史に学ぶのが手っ取り早そうなので、読んでみました。 覇権て取る物じゃなくて、失う物っぽいです。 覇権国家が、国内の経済的な理由で領土を拡大 大きくな…

戦国小町苦労譚

読みました。 じゃがいも警察に怒られそうな、薩摩芋無双を戦国時代にやっていて、面白かったです。 つづいて原作を読んでいます。 なんか少しバズっている? こちら「戦国小町苦労譚」という作品で、なろう小説からのコミカライズです。一巻読んでみたらと…

ActiveRecordインスタンスのInteger型カラムのデフォルト値のbefore_type_castは文字列

require "active_record" ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:") ActiveRecord::Schema.define { create_table(:users) { _1.integer :age, default: 20 } } class User < ActiveRecord::Base; end u = User.n…

RDBを使わずにActiveRecordのインスタンスをつくる

ActiveRecordのソースコードを読みたいです。 プログラムのソースコードを読むときは、実際に動かしてみて、動きを追っていくと理解が早いです。 ActiveRecordはデータベースのスキーマ情報を元にインスタンスをつくります。 単にPost.newを実行しても次のよ…

bootstrap_views_generatorをつかう

Railsのジェネレーターはscaffoldテンプレートをlib/templatesに作成したテンプレートファイルで上書きすることができます。 ここにBootstrapのクラスを追加したテンプレートファイルを置けば、scaffoldである程度見た目が整った画面を作れます。 github.com…

冒険者ツール出かける時は忘れずに

を読むにあたって1巻から読み直しました。 10巻で気になっている台詞があります。 「冒険者ツール出かける時は忘れずに」 この台詞、トンネルズ&トロールズのTPRGリプレイかなにかで読んだ記憶があります。 しかしどの本だったのか思い出せません。

-Jをつけて作成したRuby on Rails 6プロジェクトにJavaScriptを導入する

簡単なアプリケーションを作るのにWebpacker使いたくないと思いました。 rails newコマンドに、雑に-Jオプションをつけました。 すべてのJavaScript機能をOFFにしてRuby on Railsアプリケーションを初期化しまいました。 しかしscaffoldで作成する削除機能で…

Ruby on Rails 6にBootstrap 5を導入する

Before Bootstrap5適用前のテーブル After Bootstrap5を適用したテーブル コミット feature: Add Bootsrap style · ledsun/pc_management_desk@e314d8a · GitHub 全画面に手を入れないといけないのは面倒でした。 感想 いまのところ削除機能が動いていないこ…

Ruby on Railsでサクサクとアプリケーションのプロトタイプを作る練習

お題を PC管理台帳とします。 ごくごく簡単なリリースが一つだけの一覧画面を作ろうと思います。 プロジェクトの初期化 bundle init Gemfileからrailsのコメントアウトを外します。 bundle bundlerってnpx的なテンポラリーな実行コマンドってないんでしたっ…

FactoryBotのふたつのストラテジーをお絵かき

読んだソースコードを図解する練習です。