Rails
ActiveRecordで動的に生成されるsendメソッドとObject#sendは衝突したらどうなるのか?という話です。 結論は、つかえます。 実際に試してみます。 Railsアプリケーションを準備します。 rbenv local 3.3.4 bundle init bundle add rails bundle exec rails …
ruby.wasmでオートロードする - @ledsun blog でModule#const_missingをつかってオートローダーを書いてみました。 Module#const_missingのAPIで、汎用的なオートローダーを書くのは少し難しそうなことがわかりました。 難しそうですが、どれくらい難しいの…
budle outdated コマンドを実行するとrackの新しいバージョンが出ていることを教えてくれます。 Gem Current Latest Requested Groups rack 2.2.6.2 3.0.4.1 さて、Ruby on RailsはRack 3に対応しているのでしょうか? いいえ、していません。 下記のプルリ…
あるRailsアプリケーションではファイルアップロードのジョブの途中で失敗すると、処理途中のレコードやアップロードしたファイルが残ります。 削除の手順はわかっています。 次の2つのコマンドでDBに残ったデータとアップロードしたファイルが消せます。 bi…
Rails 7の新機能を見ていて次の機能があることに気がつきました。 Ruby on Rails 7の主要な新機能・機能追加・変更点 - Qiita ActiveRecord::Relation#load_asyncを使用することによって、非同期でSQLクエリを実行し、結果を取得することができるようになり…
雑談会 - @ledsun blog で 昔使ってたDelayed::Jobがなくなっていた と書いたら次のような情報を頂きました。 ちなみに、Railsガイドの英語版を見ると、Delayed::Jobの記載はありますね~https://t.co/mSD6s4Gz5N— thinkAmi (@thinkAmi) August 14, 2022 修…
今年の4月から社内のslackでハドルを使って、週一で30分の(技術的なテーマで)雑談をしています。 今回は僕が司会の回だったので、ActiveJobのバックエンドについて質問しました。 スレッドワーカーのSidekiqで並列化できるわけもなく - @ledsun blog でSid…
現象 あるRailsアプリケーションのRailsのバージョンを6.1.5にアップグレードしたところ、rails consoleを実行すると次のようなthor gemのワーニングがでるようになりました。 ledsun@MSI:~/pubannotation►bin/rails c Deprecation warning: Expected string…
データベースへのデータ取り込みを速くしたいです。 すでにactiverecord-importを使っているので、これが速くできると嬉しいです。 GitHub - zdennis/activerecord-import: A library for bulk insertion of data into your database using ActiveRecord. Th…
root_user?みたいた権限チェックするメソッドを定義したいです。 権限チェックするメソッドはビューでもコントローラーでも使いたいことが多いです。 ビューでは権限によって項目を表示したりしなかったり切り替えたい コントローラーでは権限があるときだけ…
疑問 check_box | Railsドキュメント によれば check_box 'page', 'freezeflag', {}, true, false と書けば、次のようなHTMLを出力します。 <input name="page[freezeflag]" type="hidden" value="false" /> <input id="page_freezeflag" name="page[freezeflag]" type="checkbox" value="true" /> なぜcheckboxのinput要素だけでなく、hiddenのinupt要素も作るのでしょうか? 理由 …
すこし伝統があるRailsアプリケーションを修正しようとしました。 config/routes.rbにすでに使っていないルーティングが残っていることに気がつきました。 対応するアクションメソッドの実装がないため、使っていないルーティングだと判断しました。 温かみ…
test/test_hlelper.rbで次のように設定してもヘッドレスモードになってくれませんでした。 Capybara.default_driver = :selenium_chrome_headless Capybara.register_driver :selenium_chrome_headless do |app| options = Selenium::WebDriver::Chrome::Opt…
WSLとselenium-webdriver - @ledsun blog の続きです。 WSLからWindowsのChromeを動かそうとしました。 起動までは上手く来ました。 WSLからWindows上のChromeへの接続に失敗しました。 今回は、WSL上にChromeをインストールすれば問題なく動くだろうと試し…
RailsのシステムテストをWSLで実行しようと、軽い気持ちで初めてみました。 意外と難しいです。 ポイント次の2点です WindowsのホストOSのChromeを動かそうとすると、ホストはlocalhostでは参照できない (GUIのない)WSLのChromeを動かそうとするときは、ヘ…
def tengu_p(*args) args.each.with_index(1) { |msg, i| Rails.logger.debug '👺' * i + msg.inspect } end アプリケーション実行時もデバッグプリントできるように、Rails.loggerを使います。。
楽観的ロックシリーズの三回目です。 楽観的ロックを使ったRuby on Railsアプリケーションを作って動きを確かめる - @ledsun blog 楽観的ロックをあつかう編集画面 - @ledsun blog レコード削除時は ActiveRecord::StaleObjectError は発生するのか? します…
楽観的ロックを使ったRuby on Railsアプリケーションを作って動きを確かめる - @ledsun blog の続きです。 楽観的ロックで競合が起きるとActiveRecord::StaleObjectErrorが起きます。 エラー画面が表示されます。 編集画面に競合エラーを表示 ActiveRecord::…
昔からある機能です。 Rails 0.9.3からの機能あったようです*1。 よくわかっていないので、説明してみます。 Railsガイドの説明 Railsガイドでは次のように説明されています。 Active Record クエリインターフェイス - Railsガイド 楽観的ロックでは、複数の…
この文章は祈りです。 主にRuby on Railsアプリケーションを想定した話です。 Ruby on Railsアプリケーションでは、Fat Model問題という問題が起きることがあります。 ドメインオブジェクトが肥大化しメンテナンスしにくくなる問題です。 Fat Model問題に対…
一昔前のRailsではJavaScriptを簡単に使う機能としてrails ujsがありました。 Rails ガイドにも説明があります。 railsguides.jp 「UJS: Unobtrusive(控えめな)JavaScript」 主な用途は www.inodev.jp JSの処理で確認ダイアログとして「マジでログアウトす…
Fat Model問題を説明してみましょう。 ここでいうFat Model問題とはRuby on Raisを使って書かれたWebアプリケーションにおいてモデルクラスが大きくなりすぎる問題のことをいいます。 Ruby on Railsでは、MVC(model-view-controller)というアーキテクチャ…
Railsアプリケーションの開発環境を構築するときに時々はまります。 ローカルにインストールされているPostgreSQLを使うとアプリケーションごとにPostgreSQLのユーザーが微妙に違うことがあります。 例えばpostgresというユーザーがないと次のようなエラーが…
Node.js 17がインストールされた環境でbin/webpackコマンドを実行すると次のエラーが起きます。 ~ bin/webpack node:internal/crypto/hash:67 this[kHandle] = new _Hash(algorithm, xofLen); ^ Error: error:0308010C:digital envelope routines::unsupport…
Rails 6.1の、特にテストのあるアプリケーションをbundleすると次のような警告がでます。 Post-install message from rubyzip: RubyZip 3.0 is coming! ********************** The public API of some Rubyzip classes has been modernized to use named pa…
若手のWeb系プログラマとナチュラルキーとサロゲートキーの話をしました。 適当なこと言ってないか不安になったのて、調べ直しました。 DB データのサロゲートキー | knooto おおむね SI 系は自然キー派、Web 系はサロゲートキー派の傾向がある とても同意で…
jQueryやそのプラグインはESモジュールになっていないので、そのままだとesbuildで上手く依存関係が解決されません。 とくにRails 7では、esbuildが推奨されているので、躓く人も多そうです。 そこの対応方法の動画がありました。見ましたが試していません。…
world.hey.com DHHのRails 7に込めたお気持ちブログです。 僕は「Railsは、フロントエンド専門家とバックエンド専門家が分業して使うためのフレームワークでなくて、一人のエンジニアがUIからデータベースまで全部作れるようにするためのフレームワーク」と…
world.hey.com めっちゃ長かったです。 すごく雑に言うと「OSSは癒やし。お金をもらってしまうと癒やしが仕事に変わってしまう」な内容のようです。 本当はDHH自身の体験を織り交ぜた、もっといい話なんですが、僕の理解力と表現力でフィルターするとそんな…
WSLっていうかUbuntuだと思います。 結論からいうと libsqlite3-dev libffi-dev を入れておきましょう。 libsqlite3-dev gem install rails -v 7.0.0.alpha2してrails newすると次のエラーがでます。 An error occurred while installing sqlite3 (1.4.2), a…