You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert
概要 原著者の許諾を得て、CC BY-NC-SA 4.0 Deedの元で翻訳・公開いたします。 英語記事: Catching Assertionless Tests | Rails at Scale 原文公開日: 2024/02/28 原著者: Nikita Vasilevsky 日本語タイトルは内容に即したものにしました。 CC BY-NC-SA 4.0 Deed | 表示 - 非営利 - 継承 4.0 国際 | Creative Commons Shopifyのコアモノリスには、30万件を超えるテストがあります。これらのテストはアプリケーションコードの大半をカバーしているので、アプリを変更するときに大きな信頼を得られます。しかし一部のテストは10年以上も前に追加されたものだったとしても、すべてのテストが今も変わらずに意図した通りの役割を果たしていると言えるでしょうか?本記事では、実行中
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: How we migrated from Sidekiq to Solid Queue - BigBinary Blog 原文公開日: 2024/03/05 原著者: Chirag Shah 日本語タイトルは内容に即したものにしました。 私たちBigBinaryは、neetoでさまざまなプロダクトを構築しています。現在22のプロダクトを開発中で、それらはいずれもSidekiqを利用しています。Solid Queueが公開された後で、私たちのneetoFormで使われているSidekiqをSolid Queueに移行する決定を下しました。 なお、現時点のSolid Queueはcronスタイルのジョブや定期的に繰り返されるジョブ実行をサポートしておらず、これに関するプルリク#155がオープンされています。そういうわけで、Solid
はじめに 弊社にはGoで作ったシステムが存在しますが、作られてから数年が経過して、メンテナンスも十分にできている状況でした。 そこで、このシステムをリファクタリングして生産性を上げようという結論になりました。 リファクタリングにあたり、Goのままで行くのか、弊社でよく使われているRubyで行くのかを検討してみましたので、その過程を紹介したいと思います。 Rubyでリプレイスしようと思った理由 Goで動いてて言語やライブラリのバージョンアップなどメンテナンスがされてない部分はありますが、 そこを解消すればGoのままで行った方が良いのでは?と思うかもしれません。 しかし、あえてRubyでリプレイスしようと思うに至ったのは以下の点があります。 Rubyの方が開発速度があがりそう Goのリファクタリングをするのに時間がかかりそう Goのリファクタリングと機能追加でコード修正箇所が被るとスケジュール
DPE(Developer Productivity Engineering)ユニットに所属している、alpaca-tcです。 最近モジュラーモノリス化を進めるためにRuby動的解析ツールを作ったので、その話をします。 📝 私事ですが、新潟の佐渡島に移住しました。新潟や佐渡島のRubyistの方がいらっしゃいましたら、ぜひRubyKaigiでお友達になってください! SmartHRではRailsのモジュラーモノリス化を検討をしているよ Railsにおける「モジュラーモノリス」は、アプリケーションを拡張性のある構造にするために、単一プロセスでモノリスアプリケーションを区分されたサブセット(モジュール)に分割するアーキテクチャのことです。 SmartHRでは、コード量が多いプロダクトでモジュラーモノリス化を進めています。 すでに新規機能の開発では導入されていますが、既存コードのモジュラーモノ
最近個人でコツコツ作っていたMewst (ミュースト) というマイクロブログサービスを公開しました。 マイクロブログ「Mewst (ミュースト)」のベータ版をリリースしました | shimba.co Railsを使って実装していて、ソースコードも公開しています。 個人的な好みにより一般的なRailsアプリとは異なる方針で実装しているところがいくつかあるので、この記事ではそれらについてご紹介したいと思います。 個人開発でやっているものなので好き勝手やっています。 この記事を書き始めたときはバックエンドとフロントエンドどちらの方針も書こうかと思っていましたが、思っていたよりも長くなったため2つに分けることとしました。 フロントエンド編はあとで書くかもしれません。 ルーティング定義には基本的に match だけを使用する github.com/mewstcom/mewst/config/rout
週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙏 TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ) お知らせ: 来週および再来週の週刊Railsウォッチはお休みをいただき、通常記事を公開します。 🔗Ruby 🔗 Steepの"narrowing"実装の内
Rails で構築しているアプリケーションで自然言語処理を行いたかったので、Ruby で自然言語処理を行えるライブラリの ruby-spacy の検証を行うために docker で環境構築を行うことにしました。 後述しますが、単なる gem ではなくある程度準備が必要なもので、はまった個所もいくつかあったので、備忘録として残します。 ruby-spacy とは ruby-spacy とは Yoichiro Hasebe さんによって開発されたライブラリで、Python 用の自然言語処理ライブラリである spaCy を Ruby で利用できるようにしたライブラリです。 spaCy とは、Python/Cython で構築された自然言語処理を行うためのライブラリで、訓練済みの統計モデルを使用することができます。 参考: https://spacy.io/ 参考: https://ja.wiki
いよいよゴールデンウィークを経て、 RubyKaigi 2024 がやってきます! Rubyist の皆さんの胸の高なり以上に、アンドパッドも高鳴っております! そしてそれ以上に高鳴っているのが、アンドパッドから RubyKaigi 2024 で Speaker となった hsbt と ydah です! そんな二人に Speaker になるまでに準備してきたこと、大規模カンファレンスや海外カンファレンスに登壇するコツ、 RubyKaigi 2024 の見どころなどをテーマに対談してもらいました! RubyKaigi 2024 に参加する Rubyist の皆さんに喜んでもらえるお話なので、ぜひご覧ください! hsbt 柴田 博志 @hsbt 発表タイトル: 「Long journey of Ruby standard library」(1 日目 14:10 ~ 14:40) フルタイム R
Deploying is pretty much the same experience as with Fly.io. Type one command, watch output scroll by as your Dockerfile is being built, uploaded to a registry, and then pulled down, and then your ENTRYPOINT and CMD are executed on the new container. It is not as pretty (we do pty and ANSI cursor right - kamal simply scrolls), but the end result is the same. I’ll likely build shell aliases (or mor
Artificial Intelligence (AI) is transforming the way we build, debug, and optimize code, and it’s happening at an unprecedented pace. As a long-time Ruby and Rails developer, I’m participating in these developments with excitement via my startup and my new book and open-source projects. The good news I want to share is: not only will Ruby and Rails survive this AI revolution, Rubyists will pioneer
エックスサーバー、全国の中学・高校生600万人を対象に無償でサーバー環境を提供する教育支援プログラムを発表 エックスサーバー株式会社(所在地:大阪市北区、代表取締役:小林 尚希)は、2024年4月25日に、全国の中学生・高校生を対象に、無償でサーバー環境を提供する教育支援プログラムを発表しました。 本プログラムでは、日本の未来を担う若い世代へ、ITやデジタルスキルの習得と向上の機会を提供することで、将来のクリエイターや起業家を支援することを目的とし、全国の中学生・高校生600万人を対象に、「エックスサーバー 学生プラン」として無償でサーバー環境を提供いたします。日本のWebサイトの4分の1(※1)で利用されているレンタルサーバーサービス『エックスサーバー』のサーバー環境を提供するため、実際にビジネスやイノベーションのシーンで利用されているものと同じサーバー環境が無料で利用できます。 「エッ
こんにちは。 id:Pocke です。最近のマイブームはルピシアのラムレーズンの紅茶です。1 Ruby や Rails のアップグレード情報を共有する場を作ったので、それをご紹介しようと思います。 背景 Ruby や Rails のアップグレードは単純な作業ではありません。 アップグレードには多くの変更が含まれています。変更はそのソフトウェアが成長している証ですが、一方で痛みもあります。Ruby や Rails を使うアプリケーションが、それらの変更に対応する必要があるためです。 そのようなアップグレード作業を楽にする取り組みはすでにいくつか存在します。 例えば Rails ガイドの Rails アップグレードガイドでは、一般的なアドバイスと、各バージョンで注意すべき変更が書かれています。 また 社内版 Rails アップグレードガイドを公開します - Timee Product Team
I saw a project a couple weeks back which allows writing and running Crystal methods inline inside a Ruby file. It’s a neat project, and I don’t want to take away from it but something in the README example looked off to me. require 'crystalruby' require 'benchmark' module Fibonnaci crystalize [n: :int32] => :int32 def fib_cr(n) a = 0 b = 1 n.times { a, b = b, a + b } a end module_function def fib
Ruby 3.3.1 has been released. This release includes security fixes. Please check the topics below for details. CVE-2024-27282: Arbitrary memory address read vulnerability with Regex search CVE-2024-27281: RCE vulnerability with .rdoc_options in RDoc CVE-2024-27280: Buffer overread vulnerability in StringIO See the GitHub releases for further details. Download https://cache.ruby-lang.org/pub/ruby/3
Previous slideNext slideToggle fullscreenOpen presenter view mruby/edge 超入門 RubyKaigi の前に知っとくと便利かもしれない気がすること Uchio Kondo 近藤うちお 所属: 株式会社ミラティブ 福岡市エンジニアカフェ ハッカーサポーター フィヨブーアドバイザー 普段はGoでミドルウェアの 開発・運用をしてます 『入門 eBPF』(オライリージャパン)翻訳しました何卒 今日の内容 主に話すこと mruby/edge っち何? VM って何? 遺憾ながらあんまり話せないこと WebAssembly自体の話... mruby/edgeとは mruby/edgeとは? 一言で: mrubyをwasm上で動かすのに特化したVM実装 Rustで書いた あらゆる機能がないが、fibは動かせる RubyKaigi 20
昨日は https://note.com/takuya_stmn/n/n02e627b9afc3 で会社のアップデートを書きました。プロダクト系職種の中でも、特にコロナによるフルリモートがどの会社でも当たり前になった頃から採用難易度が増してきた、Webバックエンドエンジニア、とりわけRuby on Railsエンジニアの採用の難易度が難しくなった理由について、Rubyを25年間、Ruby on Railsを18年間やってきた中、感じたことを軽く書きます。 1. オワコンである「Rubyが死んだ」「Ruby on Railsは死んだ」みたいな言葉は何度も聞きました。Ruby / Ruby on Railsを使った開発を始めたころから辛さはありましたが、一定の生産性が出るということで利用ケース数は増えていきました。一方で、コミュニティベースの進化は独特の文化を持ち合わせていることもあり、中長期
HTTP通信など時間消費の大きい処理でユーザー体験を損なわないよう、そしてジョブキューを使う方法より簡素な方法がないか調べたところ、Githubでも採用されているrack.after_replyを知ることができました。 Performance at GitHub: deferring stats with rack.after_reply レスポンスを返した後に実行してくれるようで、バックグラウンド処理としてはSidekiqあたりが有名ですが、今回はそれらのgemを用いずこの方法を試してみました。 ミドルウェアとして用いるパターンGithubのブログで紹介されているコードに近いですが、ミドルウェアとして最小で実装するのは以下のような形になりました # app/middleware/after_response_middleware.rb class AfterResponseMiddlew
はじめに Rubyでゲームボーイのエミュレータを作って、rubyboyという名前のgemで公開しました! (スターをいただけると嬉しいです!) この記事 RUBY BOYの実装手順を説明しながら、ハマった点や工夫した点を紹介します。 またRUBY BOYの高速化のためにやったことを紹介します。 なぜゲームボーイのエミュレータをつくったのか なにか個人開発をしたいが、Webサービスは維持費がかかるので無料で維持できるものを作りたい 業務でRubyを使っていることもあり、以前からRubyのgemを作ってみたかった ゲームのエミュレータ開発は「ゴールが明確&動くと楽しい」ので、モチベを維持しやすそう 特にゲームボーイには思い入れがある → Rubyでゲームボーイのエミュレータを作って、gemで公開しよう! エミュレータの概要 以下は、ゲームボーイのアーキテクチャです。 "Game Boy / C
Once we hit 6174 the sequence starts repeating, as the result of applying this “biggest digit-arrangement minus smallest digit-arrangement” operation to 6174, is 6174 itself. Or in maths parlance: 6174 is a fixed point of this operation. Now here’s the kicker: as long as the starting number is not a single repeated digit, we can start from any 4-digit number and the sequence will always reach 6174
Over the last year or so, I have found myself on a journey to deeply understand how to run Rails applications backed by SQLite performantly and resiliently. In that time, I have learned various lessons that I want to share with you all now. I want to walk through where the problems lie, why they exist, and how to resolve them. And to start, we have to start with the reality that… Unfortunately, ru
先日 Railroads という、Rails開発向けのIntelliJ Platform Pluginを作りました。 RubyMine 2023.3系から、rails routes を便利に扱える Railways プラグインが動かなくなったので、代替プラグイン Railroads を作りました - メモ的な思考的な そのプラグインの動作確認をするために rails routes を実行し、設定したルーティグがどのように表示されるか確認 rails routes の結果を元に、Railroadsプラグインでコントローラとメソッドが表示されているか確認 ができるRailsアプリが必要になりました。 そこで、 routes.rb に色々なルーティングを設定したRailsアプリを作ってみたことから、メモを残します。 なお、今回定義したRailsアプリのルーティングについては、 Railroads
インターネットの地図サービス「Google Map」の口コミを巡って4月18日、医師らが米Googleに損害賠償を求める集団訴訟を起こした。人気サービスだけに批判的な投稿の影響は大きく、原告側は「権利侵害の大きさは個人サイトと比較にならない」と訴える。口コミの削除を求めても応じてもらえるのは一部といい、サービスを運営するプラットフォーマーである巨大IT企業の責任を問う動きが強まっている。 「受診歴のない人物から中傷口コミを書かれた」「無断で待合室を撮影され、アップされた」 集団訴訟の原告団を対象に実施したアンケートには、Google Mapの口コミを巡るトラブルが複数寄せられた。 口コミなどに関連した相談は増加傾向にある。総務省の「違法・有害情報相談センター」に2022年度に寄せられた「口コミ・ランキングサイト」への書き込みに関する相談は249件。18年度の2倍近くとなった。 こうしたなか
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Replace aasm with Rails Enum today | Arkency Blog 原文公開日: 2024/03/29 原著者: Szymon Fiedler 日本語タイトルは内容に即したものにしました。 参考: ステート・マシン - IBM Documentation Railsアプリには、いわゆるステートマシン実装を提供するgemが含まれていることがよくあります。それがaasmというgem(旧名acts_as_state_machine)である可能性はさらに高いでしょう(ところでacts_as_hasselhoffというジョークgemがあったのを覚えている人っていますか?)。 それはともかく、このaasm gemをActiveRecordモデルにincludeすると、かなりいろいろなことができるようになります
rake v13.1.0がリリースされました 🎉 https://rubygems.org/gems/rake/versions/13.1.0 このリリースには私が実装した改善が含まれているので紹介します。 というか書かないと環境変数とか誰にも気づかれなさそう。 Support `#detailed_message` when task failed by ksss · Pull Request #486 · ruby/rake · GitHub rake task実行時に何らかのエラーによって失敗したとき、error_highlightやdid_you_meanが効くようになりました。 before $ bundle exec rake demo rake aborted! NoMethodError: undefined method `opject_id' for main:Obj
フルタイムRubyコミッター・松本宗太郎を採用 開発生産性やコード品質向上に取り組み、Ruby自体の改善にも寄与 #経営情報 スキマバイトサービス「タイミー」を提供する株式会社タイミー(所在地:東京都港区、代表取締役:小川 嶺)は、開発生産性やコード品質の向上を目的とし、松本宗太郎をフルタイムRubyコミッターとして採用したことをお知らせします。 「『はたらく』を通じて人生の可能性を広げるインフラをつくる」というミッションの実現に向け、開発における生産性やコード品質向上に取り組み、さらなる事業拡大を進めてまいります。 Rubyコミッター:松本宗太郎(Soutaro Matsumoto) 【略歴】 Rubyコミッター。大学院でRubyプログラムの型検査の研究に取り組み、修了後はスタートアップでWebアプリケーションの開発に従事。2017年から型検査ツールSteepの開発を始め、2019年から
「作りたいものをいかに早く完成させるかが正義」 まつもとゆきひろ氏が語る、ソフトウェア開発におけるベロシティの重要性 #18 動的型付け言語と大規模開発 今回のテーマは「動的型付け言語と大規模開発 まつもとゆきひろ氏:こんにちは。まつもとゆきひろです。Matzチャンネル、18回目になりますね。今日は前回の続きで、「動的型付け言語と大規模開発」について話そうと思います。 本当は前回放送リリースした次の日ぐらいに放送できるようにと思っていたんですけど、意外と忙しくてですね(笑)。 今度、フィンランドのヘルシンキで、「Euruko」というカンファレンスが開かれるんですけれども、まだ物理で海外旅行する気にならないので、キーノートを録画しましょうという話になって、そのキーノートの準備をして、スライドを書いて、英語の講演を録画するみたいな作業をしていたら、あっという間に時間が経ってしまって、「Voic
In Ruby 3.3.0, a new standard library was added to CRuby called Prism. Prism is a parser for the Ruby language, exposed as both a C library (optionally usable by CRuby) and a Ruby library (usable as a Ruby gem). The Prism project represents many person-years worth of effort, and is the result of a collaboration between Shopify, CRuby core contributors, other Ruby implementation authors, and Ruby t
はじめまして、ジョブハウス、クラウドハウスを運営しているTechouseでシニアエンジニアリングマネージャーをしている、西村(nissiy)と申します。 このブログの公開日で入社してちょうど半年になりました。 この度、新年度を迎えたこともあり、心機一転、Techouseでも開発者ブログをスタートすることになりました。 一発目の記事ということで、今回はTechouseがなぜ開発者ブログをスタートするに至ったのか、このブログを通じて何を成し遂げたいか、運用体制はどうなっているのかをご紹介していきます。 まだスタートしたばかりではあるので、今後どうなっていくのか見えないものばかりではありますが、三日坊主には絶対にしないという強い意志を持って今回スタートを切っております。 ぜひとも最後まで読んでいただけると嬉しいです。 なぜ開発者ブログをスタートするに至ったのか 読者の皆さんが働かれている会社では
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Do you tune out Ruby deprecation warnings? | Arkency Blog 原文公開日: 2024/03/26 原著者: Piotr Jurewicz 日本語タイトルは内容に即したものにしました。 訳文ではキャプションの位置を読みやすく変更しています。 アプリケーションで非推奨警告(deprecation warning)が出力されていないかどうかをチェックする習慣は、技術スタックを最新の状態に保つうえで欠かせません。Railsの場合、環境ごとのコンフィグファイルで明示的にActiveSupport::Deprecationが設定されるので、表示された非推奨警告に対応することは一般に行われています。しかしRailsはそれでよくても、Ruby自体が表示する非推奨警告に対応するよう適切に設定し
こんにちは。エムスリーキャリアでエンジニアをしているakitoshigaです。 近年、疎結合なアーキテクチャの選択肢としてモジュラーモノリスに注目が集まっていますが弊社では保有するプロダクトの1つであるM3Career Primeでモジュラーモノリス化に取り組んでいます。 今回はモジュラーモノリスの概要や採用に至った背景、モジュラーモノリス化における具体的な取り組みの1つであるPackwerkとPacksRailsを導入した話について紹介したいと思います。 M3Career Primeとは M3career Primeとは、弊社で保有するプロダクトの1つであり医療機関を対象にした医師の採用支援SaaSです。 enzine.m3career.com モジュラーモノリスとは 疎結合なアーキテクチャの1形態であり、単一のコードベースで構成されていますが内部的には機能やビジネスコンテキストの単位で
人気インディーゲーム「8番出口」と洗口液「モンダミン」がコラボしたWeb CMとして注目を集めていたアース製薬の「#モ番出口」だが、実はコラボではなくバロディだったことが分かった。8番出口の開発者・コタケノトケケ(@NOTOKEKE)さんが自身のXで経緯を明らかにした。 投稿によると、事前にCM制作会社からパロディCMを作成して良いかと連絡があり、「パロディは自由にやれば良い」と思っていた同氏は許可。CMの完成後、X用の投稿文に問題がないか確認があった際、なぜかパロディではなくコラボという文言になっていたため修正を依頼したという。 ところが、アース製薬の公式XアカウントはWeb CMを公開した12日、なぜか修正前と修正後の文言を両方ポストしたという。しばらく待っても修正前のポストは削除されなかったため、コタケノトケケさんは訂正文を追加するように連絡。13日には訂正文が投稿されたものの、「あ
Steepのmanual/annotations.mdを読みながら、実際にコードを書いて覚えたことをブログにまとめる。 変数 変数の型を String? から String にするときに便利そう。 # @type var value: String value = %w[a b c].sample puts('Hi, ' + value) アノテーションがない場合、 sample: () -> String? なので型検査エラーになる。 app/user.rb:2:14: [error] Cannot pass a value of type `(::String | nil)` as an argument of type `::string` │ (::String | nil) <: ::string │ (::String | nil) <: (::String | ::_ToSt
前文 競合状態は、バグの中で最も厄介な部類と言ってよいでしょう。ActiveRecord のupdate_counterメソッドは、データベース内で値の増減の競合状態を回避するときに便利な方法を提供します。本記事ではJonathan Miles氏が同メソッドの利用法、実装方法、そして競合状態を避ける他のアプローチについて解説します。 Railsは大規模なフレームワークであり、特定の状況に対応できる便利ツールが多数組み込まれています。本シリーズでは、Railsの大規模なコードベースに隠れている、あまり知られていないツールを紹介します。 今回紹介するのはActiveRecordのupdate_countersメソッドです。また、マルチスレッドプログラムにありがちな「競合状態」の罠と、このメソッドで競合状態を防ぐ方法についても見ていきます。 🔗 スレッドについて プログラミングでコードを並行し
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く