@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

ActiveRecordを継承したクラスのクラス図を開くワンライナー

curl -s https://gist.githubusercontent.com/ledsun/76d5485644685f19c98f88000a971d00/raw/ec1251e6b00cda7d9c350178dc445052e87a3e21/class_diagram.rb | bin/rails runner - Computer | browser 実行するとこういう感じです。 gyazo.com 種を明かします…

ActiveRecordを継承したクラスのmermaid.jsクラス図を作るワンライナー

curl https://gist.githubusercontent.com/ledsun/76d5485644685f19c98f88000a971d00/raw/a1aa3df955ee8829b7041c1c6cda11610978d393/class_diagram.rb | bin/rails runner - Computer 実行すると次の感じです。 ~ curl https://gist.githubusercontent.com/…

Railsで静的ファイル配信をするときに圧縮ファイルを優先して返す機能

僕はこの機能の存在を今日知りました。 Railsで、public_file_serverを有効にするとpublicディレクトリ配下にある静的ファイルをファイルを配信できます。 このとき、hoge.cssファイルの代わり(または一緒に)gzip圧縮したhoge.css.gzファイルを置いておく…

古代武蔵国府の成立と展開

www.douseisha.co.jp 奈良時代の府中の成り立ちを扱っているみたいです。武蔵の国は埼玉を含むので、府中は南の端です。なぜ端っこなのか?古墳時代を考えると多摩川沿いには、勢多、狛江、調布、多摩とほかにも人が住んでいた場所があります。なぜ、他の土…

jQueryUIダイアログの上に自作モーダルダイアログをつくって要素をフォーカスするときの注意

次のようにjQueryUIダイアログの上にさらに、自作のモーダルダイアログを開く時の話です。 jQueryUIダイアログの上に自作モーダルダイアログを開く 「すでにjQueryUIダイアログを使っているのだから、自作のモーダルダイアログは要らないだろう?」という疑…

バイホットドッグプレス 完全再録! 試みの地平線 2014年 10/17号 [雑誌] Hot-Dog PRESS Selection

1986年〜2002年の人生相談。 395回あるらしい。うち、6回が、分電子書籍化されています。 相談の回答は、色々なところで引用されています。 ですが、相談の最後についている「友として君に贈る言葉」という、まとめの一言は初めて見ました。 1回につき、一個…

自殺島

ホーリーランドの余勢を駆って読みました。 自殺未遂者を孤島に集めてバトルロワイヤルです。 「登場人物が全員、精神的に弱い」設定は、物語を転がす始点が誰にでもある点が、なかなか興味深いです。 自殺島というタイトルに反して、ホーリーランドより主人…

ホーリーランド

改めて読み直しました。2000年から2008年の作品でです。 リアルタイムで読んでいた頃は「いじめられっ子が格闘技を身につけて強くなる」初期設定に、ちょっと時代遅れ感がありました。 「のぞみウィッチィズ」野部利雄(1986) 「はじめの一歩」森川ジョージ…

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のふたつのストラテジーをお絵かき

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