@ledsun blog

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

Rails

RailsをセキュリティチェックするGem

www.youtube.com で、紹介されているなかで brakeman bundler-audit を、試してみました。 どちらも使うのはめちゃ簡単です。 Gemfileに次のような記述を追加します。 group :development do gem 'brakeman' gem 'bundler-audit' end あとは bundle bundle e…

Rails 5.0.7.2とMinitest 5.14.4で --verbose オプションをつけるとエラーがおきる

minitestをつかったRailsアプリケーションを5.0にアップデートするときに不思議な現象に出会いました。 bin/rails test は通るのに bin/rails test —verbose でエラーになる 不思議・・・です。 ~ bin/rails test Run options: --seed 4913 # Running: .....…

Rails 4.2のtest-unitに苦戦する

Railsのバージョンを上げようと思って、3年ぶりくらいにRails 4.2のアプリケーションに触りました。 テストコードがあるのですが、test-unitです。 この組み合わせを触るのが久しぶりなので苦戦しました。 コミットログを見る限り、3年前に自分でテストコー…

名探偵、Rails 6.0のDNSリバイディング攻撃対策を探すの巻

前提条件 マイクロサービスをdocker composeで動かしていました。 Ruby on RailsでできたAPIサーバーのRailsのバージョンを6.1.4.1に上げました。 するとAPIサーバーは 403 Forbidden を返すようになりました。 奇妙なことに、ホストOSからリクエストを送る…

Rails 7 はユニバーサルJavaScriptモジュールの夢を叶えるか?

2009年に発表されたCommonJSの夢。この夢が叶えられるかもしれない時がきています。それもJavaScriptではないRuby on Railsによってです。 JavaScriptのライブラリ管理の歴史を紐解いてみましょう。 モジュール前夜 jQueryによるプラグイン管理がありました…

Rails 7はESモジュールをどう扱うのか?

www.youtube.com の手順で作成したRailsアプリケーションの動作を見てみましょう。 このRailsアプリケーションの http://localhost:3000/posts のHTML、特にheadタグを見ます。 Post一覧画面のheadタグ なかでも気になるのは次の行です。 <script type="module">import "applicatio</script>…

Sprocketから要らなくなった機能を削減したPropshaft

"Propshaft is an asset pipeline library for Rails. It's built for era where bundling assets to save on HTTP connections is no longer urgent, where JS and CSS is either compiled by dedicated Node.js bundlers or served directly to the browse…

Rails 7 のActiveStrageはデフォルトではImageMagickの代わりにlibvipsを使う

Rails 7 αを試して、エラーで躓いているところ - @ledsun blogでCould not open library 'libvips.42.dylib': dlopen(libvips.42.dylib, 5): image not foundというメッセージを含むエラーが起きたので、ググったところ次のissueが見つかりました。 github.c…

Rails 7 αを試して、エラーで躓いているところ

www.youtube.com を真似て素振りしていきます。 rails new showtell 最初は--devオプションをつけて、ローカルに入っているRailsがインストールされて失敗しました。 cd showtell bin/rails g scaffold post title:string content:text bin/rails action_tex…

Rails 7 ではアプリケーション作成時にBulma(CSSフレームワーク)のインストールもできるようになりそう(なった)

github.com 最初はBulmaはNode.jsを使ってコンパイルしないからとクローズされました。 カスタマイズする際はsassを使ってコンパイルするので再オープンされました。 CSSフレームワークインストール用のGemがRails本体から分かれたからなのか、結構柔軟に取…

Rails 7 のリリーススケジュールの目標

https://github.com/rails/jsbundling-rails/issues/16#issuecomment-918439258 Rails 7 is going to ship an alpha as soon as this week. Then probably the first beta within a month. Maybe quicker. And then final 1-2 months after that. So let's s…

sprockets-css-purgerのAPIを考えるために、tailwindcssとPurgeCSSの境界を考える

sprockets-css-purgerの姿を想像する - @ledsun blogの続きです。 tailwindcssからPurgeCSSを呼び出している箇所 https://github.com/tailwindlabs/tailwindcss/blob/v2.2.15/src/lib/purgeUnusedStyles.js#L188-L220 const purgeCSS = new PurgeCSS() purge…

sprockets-css-purgerの姿を想像する

DHHはsprockets-css-purgerというCSSをパージするための汎用的なGemが欲しいようです。 github.com This is btw and open invitation to anyone who'd like to work on this とありますので、誰がやっても良いようです。ところで、このbtwってどういう意味…

Rails 7のデバッガ は byebug から ruby/debugになる

ruby-jpのslackでmrknさんが次のissueを紹介していました。 github.com 最初にこのissueを見たときは今から移行しようか迷っているのかと思いました。 Railsのコミットをあさったら、もう少し、と言っても18時間ぐらい前に、次のissueがありました。 github.…

Rails 7でJavaScriptバンドラーとCSSプロセッサを同時に起動するときはforemanを使うらしい

jsbundling-railsとcssbundling-rails両方に修正が入りました。 Add bin/dev via foreman to run multiple processes · rails/jsbundling-rails@91d8d2b · GitHub Add bin/dev to run multiple processes · rails/cssbundling-rails@1ed4dc5 · GitHub ポイン…

cssbundling-railsの誕生

github.com jsbundling-railsのCSSプロセッサ版です。 jsbundling-railsのissueでJavaScriptバンドラー以外をサポートしないのか聞かれてDHHは次のように答えました。 https://github.com/rails/jsbundling-rails/issues/4#issuecomment-914039291 Although …

jsbundling-rails

github.com esbuild-rails - @ledsun blogで紹介したesbuild-railsの後継Gemです。 最初は次の2つのGemのようにバンドラー毎に、別々のGemとして作られていました。 https://github.com/rails/esbuild-rails https://github.com/rails/rollupjs-rails 三つ統…

Rails 7のフロントエンド政策

world.hey.com DHHからご神託がありました。 僕の理解は次の通りです。 一番のオススメはHotwireとimport maps。HEY(Gmailクローン)も作れるし大抵のWebアプリケーションはこれでいける JavaScriptをバンドルしたい人はesbuild/rolllup/webpackの好きなも…

esbuild-rails

DHHが空のRailsアプリケーションにesbuildをインストールするGemを作りました。 中身を見てみます。 GitHub - rails/esbuild-rails: Bundle and transpile JavaScript in Rails with esbuild You develop using this approach by running esbuild in watch m…

rails runnerを使う代わりに実行コマンドでRailsの環境を読み込む

Load the Rails environment with the run command instead of using the … · ledsun/activerecord_uml@e58e990 · GitHub ↑の変更で、行けました。 使用イメージは以下の通りです。 ~ activerecord_uml Computer <html> <body> <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script> <script>mermaid.initialize({startO…</body></html>

bundle installせずにrails runnerからgemのコマンドを実行する

GitHub - k0kubun/gem-default: Change a non-default gem to a default gem in your local environment を使ってgemをdefault gem化します gemをrequireして実行するスクリプトを標準入力で、rails runnerに渡します ~ gem install gem-default Fetching ge…

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

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

既存の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…

bootstrap_views_generatorをつかう

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

-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的なテンポラリーな実行コマンドってないんでしたっ…

#railsdm Rails Developers Meetup 2018 Day 4 Nouvelle Vague で発表しました

Rails Developers Meetup 2018 Day 4 Nouvelle Vague で発表してきました。 趣旨は「ActiveRecordやActiveJobなどのRailsの用意した抽象インタフェースを使うと、アプリケーションのミドルウェア構成、ひいてはアーキテクチャの決定を遅らせる事ができる。そ…