→Ruby on Rails RubyによるWebアプリケーションフレームワーク RoR
Agile Web Development with Rails
10分で作るRailsアプリ for Windows http://masuidrive.jp/rails/
Ruby on Rails公式サイトの採用サイト紹介ページ http://wiki.rubyonrails.org/rails/pages/RealWorldUsage
私自身、立ち上げ期のSaaSサービス・Webサービスの開発、個人開発を通じて学んだ立ち上げ期に役に立つサービスをまとめます。 そもそも、なぜ立ち上げ期で役に立つのか? サービス立ち上げ時は、とにかく爆速でコンテンツの充実・プロダクトの中身を作っていかなければいけません。 そのため、本質ではないところについては、外部サービスを頼る・参考にする事が重要になります。 認証 OAuthを推奨します。 自前でアカウント周りの機能を作成することは控えましょう。 なぜなら、、、 個人開発系のアプリの場合、見ず知らずのアプリでアカウント登録を行うのは心理的な障壁がある 商用、toB系のサービスの場合、個人情報…
paranoiaを使っているモデルでユニーク制約のバリデーションを設定すると、論理削除済みのレコードは制約の対象から外れます。(論理削除済みのアイテムとは重複が許される) その仕組みを理解するために少しgemのコードを読んで気づきがあったので記載します。 Rails 7.0.8 paranoia 2.6.3 きっかけと概要 paranoiaを使っているモデルでバリデーションのユニーク制約をかけた際に、以下のことを知りました。 paranoiaで論理削除しているとユニーク制約の対象外になります class Book < ApplicationRecord validates :title, un…
Formオブジェクトパターンとは1つのフォーム送信で複数のモデルを操作した場合や、テーブルに保存しない情報にバリデーションを設定したい場合につかいます! つまり、コントローラーが複数のモデルに指示出すこともできるけどすごく大変だから間(Formオブジェクト)に入ってもらおうということです! 例えるなら、コントローラーが王様でFormオブジェクトが執事みたいな感じです!王様は執事に指示するだけで、他の人たちに指示する必要がなくなるということです!そう思ったら執事が必要じゃないですか?(笑) それではFormオブジェクトパターンの導入を説明していきます! ①モデルにてFormオブジェクトのファイル…
データベースとはデータを保管してくれる モデルとはデータベースのデータを情報を取得や受け渡すところ 例えるならデータベースは本棚でモデルは図書室の職員さんです。 そして本棚の中には様々な本があります。特定の本を職員さんが探すのは大変だと思いませんか?探す苦労を解消するために本の種類や作者で分けておくラベルがあれば探す苦労がなくなると思いませんか?それがテーブルになります。テーブルにはカラムとレコードがあります。カラムは本の作者やジャンルなど大まかな枠組みでレコードは作者、ジャンル、タイトルなど1冊の本の情報をまとめたものです。 それではデータベースとモデルの作成の流れを説明していきます! ① …
はじめに 今回は現場で使える Ruby on Rails 5速習実践ガイドを読了したので、それについての感想を記録していきます。 チェリー本で学んだ際には、文法やメソッド、クラスであったりその他諸々、決まっている事を学ぶところが多かったように思います。 それに対し、本書ではもちろんそういった面の学習もあるのですが、課題に対するテクニックや考え方などの必ずしも決まりきっていない部分の学習があったので同じページ数くらいでしたがより長い時間が掛かったように感じました。 ちなみに、読む前の知識レベルとしては、 Progateのレッスンを修了 Railsガイドのチュートリアル を行ったくらいのものです。…
ActiveRecordとはモデルがテーブル操作するとき使うメソッドです。 テーブルの情報を保存したり取得するために使います。 例えるならテレビとリモコンの関係です。リモコンによって番組の予約したり、録画していた番組を再生するみたいな感じです! たくさんあるActiveRecordから代表な例を紹介します! allメソッド テーブルのすべてのテータを取得する findメソッド テーブルの一部のデータだけを取得する newメソッド テーブルのデータをを生成する saveメソッド デーブルのデータを保存する
複雑なクエリを書きたい時、 SQLを直書きできる find_by_sqlメソッドを使うのだが、配列の引数を渡すケースがあったときに、その配列が空だと正常にデータを取得できなくなるよう。 例えば、こんな感じで、1みたいに配列に値があればうまく動作するのだが、2のように空だとうまくいかないっぽい。 # 1. arg_user_ids = [1,2,3] # 2. arg_user_ids = [] query = ( <<~SQL SELECT users.* FROM users INNER JOIN posts ON posts.user_id = users.id WHERE posts.u…
3月1日、2日に第16回 Rails Girls Tokyoにスタッフとして参加させていただきました! 参加した感想を記録として書いていきます。 参加する上での自分の目標とその結果 スタッフとしてやったこと ワークショップについて スポンサーLT&コーチLT 全体を通しての感想 おまけ 参加する上での自分の目標とその結果 みなさんに挨拶をする 当たり前のことなのですが… 普段私が学習しているフィヨルドブートキャンプ(以下FBC)のメンターさん・アドバイザーさんがコーチとして参加されていたので、オフラインでお会いする機会は私にはなかなかなかったので認知してもらおう!という気持ちでご挨拶しました。…
こんにちは。サーバーグループ エンジニアの山田です。 今回はRails7.0からRails7.1へのアップグレードを行なった際に、ActiveRecord Encryptionで発生したエラーとその対応について紹介します。 同様のエラーに遭遇した方の参考になれば幸いです。 ActiveRecord Encryptionによる属性の暗号化 決定論的暗号化と非決定論的暗号化 発生した事象 エラーの原因 SHA256に変わった経緯 対応方法 hash_digest_class support_sha1_for_non_deterministic_encryption 採用した方法 まとめ Activ…
やりたいこと railsアプリケーションにて、deviseを用いた認証機能を制限したい。 例) サインアップ機能の廃止など... 導入方法は下記記事を参照 locomocosan.hatenablog.com 機能を制限する方法 deviseの標準機能を制限するには、app/models/user.rbのファイルを変更必要がある。 class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trac…
2024/03/27分のコミットです。 CHANGELOGへの追加はありませんでした。 Merge pull request #51425 from andrewn617/revert-eliminate-lease-connection-in-type-caster-connection activerecord/lib/active_record/table_metadata.rb、 activerecord/lib/active_record/type_caster/connection.rbの修正です。 Eliminate remaining uses of lease_connect…
2024-03-26が現職の最終出社日でした。3月末日の退職となります。3年3ヶ月の勤続でした。 フィヨルドブートキャンプから右も左もわからないままこの道への確信だけを抱いてきた自分が、自分がRailsプログラマだと胸を張って言えるようになったのはESMの環境あってのことでした。 フィヨルドブートキャンプからの就職先としてESMを志望したのは、Rubyコミュニティとの関わりを大事にしていること、技術力が高い人が多そうで成長できそうだという理由だったと思います。入ってみて、その見立ては合っていたと思います。Rubyコミュニティとの関わりについては、自分がやりたいと思うことをいいね、やってみようと…
生活と仕事 昨晩は入門eBPFをちょっと勉強していた。入門 eBPF ―Linuxカーネルの可視化と機能拡張作者:Liz Riceオーム社Amazonなかなか面白い。手元のdebian sidでコード書いて動かしたらちょっと感動した。今日は朝5時ぐらいに起床したんだけど、腰が痛いので英会話の勉強だけして二度寝した。起きてから朝飯食って、また腰痛で睡眠。10時前に起きて仕事を開始。今日からRuby on Rails 6.1のプロジェクトをRuby on Rails 7.1に移行する作業に手をつけている。と、作業を開始しようとしたらお客さんから調査依頼が来たので、該当データのGeoJSONを作って…
これは何? preload, eager_load, includesを見かけるたびに、あれ、これってどういう挙動をするんだっけ?と調べているのでメモ。 前提 Ruby 3.03 Rails 7.04 Tips 結論 eager_load 1対1あるいはN対1のアソシエーションをJOINする場合に使う preload 多対多のアソシエーションの場合に使う joins メモリの使用量を必要最低限に抑えたい場合に使う JOINした先のデータを参照せず、絞り込み結果だけが必要な場合に使う includes 使わない。私は断固として使わない。使ってるコードを見つけたら絶対に駆逐する。 Eager lo…
はじめに: 弊社のとあるEDI(電子商取引)関連のプロダクトでは、Ruby on Railsを利用してGraphQL APIを提供しています。 その開発活動の中で最近、コードの品質と整合性を維持するためのツールとして rubocop-grep を利用し始めました。 この記事ではその具体的な活用事例についてお話しします。 目次 rubocop-grepとは 最初のユースケースと、基本的な使い方の説明 複数のルールをディレクトリごとに設定するための工夫 ほかにどのようなユースケースがありそうか まとめ rubocop-grepとは rubocop-grep は、rubocop の拡張ツールです。 …
2024/03/26分のコミットです。 CHANGELOGにのったコミットは以下の通りです。 railties/CHANGELOG.md Skip generating a test job in ci.yml when a new application is generated with the --skip-test option. activerecord/CHANGELOG.md Retry known idempotent SELECT queries on connection-related exceptions Merge pull request #51390 from a…
3/26(火) 睡眠時間7時間半 7,037歩 「俺は日常に無いのを求めて反社系漫画が好きなんだよねぇ」という言葉を聞いて、自分の読んだ漫画で何が話せるかなぁ…と考えたがカイジぐらいしか無かった。あとはマイホームヒーロー? 進撃もウジシマ君もまだ手を出していなかったなぁ。『カモのネギには毒がある』…本当にあった怖い話だね! やったこと 長いお仕事 漫画Aria 銃の科学 ごはん やったこと 長いお仕事 今日もいつもより残って、ちょっと長めのお仕事。昨日と変わらずGCPやRailsと交互に戦っていた。 先輩曰く「訳が分からない状態を楽しんで笑いが出てくるのがエンジニア適性」ということだったが、確…
ユーザー側からの入力を簡易プログラミング言語みたいにしたいと思うことがたまにあったので、DSLの作成方法を聞いてみました。 Rubyの場合は、特定のオブジェクトをレシーバーとしつつ、そのオブジェクトのコンテキストでブロック内のコードを実行させるinstamce_evalを使うことが、この手法の肝になりそうです。 ユーザーに実行して欲しくないコードを実行できないようにするには、method_missingが呼ばれたときに、そのメソッドが予め定義したホワイトリストに入っていないときはブロックを実行しないようにすることで実現できます。 長年知りたかったことが分かってすっきりしました。 Kotlinの…
こんにちは、虎の穴ラボのh.kです。2024/03/24に行われた「Object-Oriented Conference 2024」(以下OOC)に当日スタッフとして参加しました。 スタッフ参加してみようかなと思っている人の一助となるように、やったこと、大変だったことなどを共有します。
9時半ころ起床。 午前中はコーディングしながら知り合いが開発しているWebサービスを触らせてもらったりしていた。他人のやっていきを観ると自分もやっていきたくなる。 昨日作ったチャプタージャンプ機能の基礎部分は出来た。jsbundling-rails時代のJSの扱い方、TypeScriptとの付き合い方もわかってきた。明日にはリリースできるだろう。 昼は焼きそばと昨日の踊るたまごスープの残り。今回、はじめて乾麺タイプの焼きそばを試してみたのだけどなかなか良い。いつも生麺タイプの焼きそばを買って賞味期限切れまで放置し、ブチブチちぎれる焼きそばになってしまう*1のだが、乾麺ならその心配はない。リピ決…
こんにちは。エンジニアリンググループの武井です。 私は現在、デジカルチームに所属し、クラウド電子カルテ、エムスリーデジカルの開発に携わっています。 昨年夏にエムスリーに入社し、早くも半年が経過しました。 digikar.co.jp この記事では、私が入社してから4ヶ月目に取り組んだ、バッチ処理の運用改善について振り返ります。 特に、新しくチームに加わったメンバーとして意識した点に焦点を当ててみたいと思います。 これから新しいチームに参加する方の参考になれば幸いです。
こんにちは、はじめまして。yumeと申します。 2023年11月1日に株式会社ホワイトプラスに入社しました。 入社してもうすぐ5ヶ月です。 あっという間に感じつつ、まだまだのびしろいっぱいというところです。 この記事では、 転職活動を行なっていた際に何を考えていたか 実際にホワイトプラスに入社してどうか などをお話ししたいと思います。 自己紹介 ネットクリーニング「リネット」の顧客領域を担当するCX開発グループに所属しています。 経歴と過去の転職理由 ホワイトプラスで3社目です。 一社目はSES・受託会社でした。 SESの魅力であるさまざまな技術や案件を経験できるというところで、 ソーシャルゲ…
大谷翔平 水原氏違法賭博問題で声明のみ発表へ 質疑応答はなし | NHK [おまけ漫画34]恋人以上友人未満 - yatoyato | 少年ジャンプ+ Railsを高速かつセキュアにするHTTP/2プロキシ「Thruster」、37signalsがオープンソースとして公開 [第145話]ダンダダン - 龍幸伸 | 少年ジャンプ+ [拷問225]姫様“拷問”の時間です - 春原ロビンソン/ひらけい | 少年ジャンプ+ とある実験とシカクについて - つばさんた | 少年ジャンプ+ 小林薬株がストップ安売り気配、紅こうじ原料に意図しない成分と発表 『葬送のフリーレン』人気キャラ投票の最終結果発表で…
2024/03/25分のコミットです。 CHANGELOGにのったコミットは以下の通りです。 activerecord/CHANGELOG.md Add config.active_record.permanent_connection_checkout setting. railties/CHANGELOG.md Update the .node-version file conditionally generated for new applications to 20.11.1 Wrap by parentheses custom complex sql literals in upda…
2024年3月25日に、QYResearchは「病院用ベッドの安全レール―グローバル市場シェアとランキング、全体の売上と需要予測、2024~2030」の調査資料を発表しました。本レポートは、病院用ベッドの安全レールの世界市場について分析し、主な総販売量、売上、価格、主要企業の市場シェアとランキングに焦点を当てています。また、地域別、国別、製品タイプ別、用途別の分析も行っています。病院用ベッドの安全レールの市場規模を2019年から2030年までの販売量と売上高に基づいて推計と予測しています。定量分析と定性分析の両方を提供することで、企業がビジネス成長戦略を策定し、競争環境を評価し、市場位置を分析…