Ruby: Bundlerを使って1つのRubyのファイルだけでgemをinstallして利用する方法
bundler/inlineを使うとGemのバグ報告やlogger系のGemを使った調査などでGemfileを使わずに1つのRubyファイルだけで完結できると便利だったのでMEMObundler.io例えば調査のために以下のpretty print系のGemを使いたいとします。github.com普通だと以下のGemfileを作成しbundle...
View ArticleRuby on Rails: sidekiq-schedulerでjobをスケジュール実行するメモ
Railsで非同期jobを利用する際にSidekiqを使っている場合、任意のJobをスケジュール実行したいことがあります。 今までは割とsidekiq-cronを使うことが多かったのですが、最近はsidekiq-schedulerの方が活発にメンテナンスされており、そちらを使ってみたので導入方法とかをメモ📝github.com導入方法導入は簡単で以下のようにinstallしてgem install...
View ArticleRuby: オレオレWebフレームワークMakanaiをRack3に対応しました
2022/9/6にRack3がリリースされました🎉github.comSecurity fixが入ってたり、破壊的変更が入ったりもしてるようですね👀RailsやSinatraでもアップデートの準備が進められているようです。github.comgithub.com自分も個人で細々とメンテしているオレオレWebフレームワークをRack3対応してアップデートしたので、...
View ArticleRuby on Rails: DBからの取得結果をいい感じにCSVにして出力を実装したいMEMO
普段、CSV出力系の機能を作ることが稀に良くあるが、割と毎回同じようなことを実装してる気もするのでいい感じに共通化できないか実装を検討したのでメモCSV出力の実装検討メモ考えたこと実装してみる利用例参考※ベンチマークは特に取ってないCSV出力の実装検討メモ考えたことCSV出力時にエラーが発生した場合に、ハンドリングしやいようにカスタムエラーをraiseする各行の出力ロジックは算出値を利用することもあ...
View ArticleRuby on Rails: Redisを使わないActiveJobのバックエンド「GoodJob」を使ってみるMEMO📝
何かしらの非同期なバッチ処理を実装したい場合にはSidekiqをActiveJobのバックエンドとして利用することが多いと思いますが、SidekiqはRedisに依存しており、個人のWebサービスとかでなるべくコストを抑えたいときにはRedisを立てずに実装したいものです。今回はそういう場合に便利そうなPosgreSQLベースのGoodJobを使ってみたのでMEMO📝github.comGoodJo...
View Articlerspecの`--pattern`オプションを使って特定のパスのテストだけ実行するMEMO📝
Railsを使っていてRSpecでststem specとrequest specのテストだけ実行したい時とかに--pattern関連オプションを利用すると便利だったので使い方をメモ📝RSpecの--patternの使い方公式Docrelishapp.comHelp$ bundle exec rspec -h# ...-P, --pattern PATTERN Load files matching...
View ArticleRuby on Rails: webpack + SimpackerからVite + Vite Railsに移行するメモ📝
最近個人のサービスのフロントエンド周りをタイトル通りwebpack + SimpackerからVite + Vite Railsに移行したので対応したこととかをメモ前提事項Vite v.3.2系のHMRは使わない構成になります Vite...
View ArticleMac OS: rbenvでRuby 3.2.0をinstallが失敗したので対応方法をメモ📝
昨年末Ruby 3.2.0がリリースされましたね🎅🎄✨www.ruby-lang.org今更ながらローカルのRubyのバージョンをrbenvで3.2.0に上げようと思ったのですがエラーが発生したのでその対応方法とかをメモ📝発生した問題解決方法発生した問題いつもどおり以下のコマンドでRuby 3.2.0をisntallしようとしたのですが、以下の通りエラーが発生し失敗しました😵$ brew...
View ArticleRuby 3.2.0で導入されたYJITをHerokuで有効化する
Ruby 3.2.0で導入されたYJITをHerokuで有効化してみたのでやり方をメモ📝github.comHerokuでYJITを有効化する結論だけ言うと、以下のコマンドを実行して環境変数RUBYOPTに--enable-yjitを指定してあげれば🆗です✨heroku config:set...
View Article`ruby-openai`を使ってRubyでChat GPTのAPIを呼び出すMEMO
Ruby on Rails製の個人のWebサービスにOpen APIのChat GPTを使った機能を盛り込んだ時にruby-openaiを使うと簡単にリクエス部分を実装できたので、ほとんど公式READMEの通りですがメモ📝github.comAPI...
View ArticleRuby on Rails: Viewを作らずにControllerからVue.jsのSFCを指定してrenderできないか試したMEMO
はじめに基本方針実装したコード利用例おわりにはじめにRailsでVue.jsを採用している場合、Vue SFCのscoped...
View ArticleRuby: RSpecのカスタムマッチャを作る方法MEMO📝
RSpecのカスタムマッチャの作り方をいろいろ調べたのでメモ📝作り方RSpec::Matchers.defineを使うmoduleで定義するおわりに参考作り方RSpec::Matchers.defineを使うカジュアルな追加方法としてRSpec::Matchers.defineで追加する方法があります。...
View ArticleRuby: proc(lamda)を定義時ではなく呼び出したインスタンスのコンテキストで実行する方法MEMO
Proc(lamda)を定義時ではなく実行時のコンテキスで実行する際にちょっとハマったのでメモ📝結論: instance_exec(&proc)で実行すれば良かった。以下のような外部で定義したprocを受け取って実行した際にhello! by Caller.と出ることを期待したのですが実行するとNameErrorが発生します。...
View ArticleRuby on Rails: Content Security Policyを使ってみたのでMEMO
Ruby on Rails 5.2からContent Security Policyヘッダーを設定するDSLが提供されました。2.5 Content Security PolicyRails 5.2 ships with a new DSL that allows you to configure a Content Security Policy for your application. You...
View ArticleRuby on Rails: 個人のサービスをRails v7.1にアップデートしたのでやったこととかメモ📝
2023/10/05にRuby on Rails v7.1がリリースされました🎉rubyonrails.org個人のwebサービスなので以下のように規模はかなり小さめですがやったこととかをメモ📝+----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC |...
View ArticleVSCodeの`rebornix.ruby`から`shopify.ruby-lsp`に乗り換えるメモ
今までVSCodeでRubyを使うときにはrebornix.rubyを使うことが多かったと思うのですが、marketplace.visualstudio.com現状は非推奨となっており、Shopify's ruby-lsp and associated vscode-ruby-lsp are recommended alternatives to this extension. It is...
View ArticleRuby on Rails: メーラー関連のファイルを`app/mailers`に集約するメモ📝
Ruby on RailsでメーラーのViewはデフォルトでapp/views配下に置かれてしまい数が多くなってくるとControllerからrenderされるものとMailerからrenderされるものが混在してしまい見通しが悪くなるケースがあります。メーラーのビューは app/views/name_of_mailer_classディレクトリに置かれます。Action Mailer の基礎 -...
View ArticleRuby on Rails: テスト用にrouteを動的に追加するメモ📝
テスト用にRoutingを動的にいじってテストしたいことがたまにあるのでやり方をメモ📝まず以下のようなテスト用のhelperを用意します。 中でやっていることは動的にrouteを追加するdraw_test_routesとそれをリセットするreload_routes!を実装しています。moduleRoutesHelperdefdraw_test_routes(&block)...
View Article