Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
概要 同じ ActiveRecord::Enum を複数モデルで使う方法を以下に示します。 何も工夫しなくても、全く同じコードを複数のモデルに記述することで実現できるのですが、それではDRY原則に反しており、概念として同じものを指していることがコードで表現できていません。 このようなコードは変更の際に変更漏れが生じたり、あるいは一方のモデルには要素を追加してもう一方には追加しないといった当初の設計意図(概念として同じものを指している)に反した変更が加えられるリスクが生じます。 これらの問題を解決しつつ、同じ ActiveRecord::Enum を複数モデルで使う方法を考えます。 方法 モデルクラスの外で定義した Hash を enum に与えます。
はじめに こんにちは、@wai-doi です。RubyKaigi 2023 が楽しみですね。 最近お仕事で、Ruby の Tempfile.open でテンポラリファイルを作成しているコードを読んで、理解する機会がありました。 Tempfile.open のリファレンスマニュアルを調べてみると、他にもTempfile.create でテンポラリファイルを作成できることがわかりました。 そのとき、Tempfile.open と Tempfile.create 微妙な挙動の違いに興味を持ったため、調べたことを紹介しようと思います。 テンポラリファイルを作る 4 つの方法 Ruby の tempfile ライブラリには、テンポラリファイルを作るための Tempfile クラスが含まれています。 tempfile ライブラリは組み込みライブラリではないため、require が必要です。 requi
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: 37signals Dev — A vanilla Rails stack is plenty 原文公開日: 2024/12/20 原著者: Jorge Manrubia -- 37signalsの首席エンジニアです 日本語タイトルは内容に即したものにしました。 今の世の中で、Railsアプリを新しく作るゆとりに恵まれているならば、バニラアプリとして作る1、すなわち依存関係を何も足さないのが、私たちからのオススメです。 Rubyの依存関係は、よほどの理由がない限りRailsに追加しない。 Railsで生成したGemfileは、極力手つかずのままにしておく。 JavaScriptの依存関係をRailsに追加するのは、Ruby依存関係の場合以上に慎重に検討する。 Reactなどのフロントエンドフレームワークも、それらにJSONを送り込
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Things I learned developing Ruby and Rails apps over the past 3+ years | by Filippos Vasilakis | Kollegorna 原文公開日: 2017/01/30 著者: Filippos Vasilakis 2017/11/20: 初版公開 2023/06/08: 訳文を更新 順序は特に決まっていません。 🔗 1. トップレベルにrescue_fromを書く ルートコントローラにrescue_fromを書くと、その下で発生したすべての例外をキャッチできるので非常に便利です。Webアプリにこれを追加すると、リクエスト/レスポンスのサイクルで実行されるほとんどのコードがさらに便利になります。 シンプルなAPIを例に考えます。rescue_fro
要点 Amazon Cognitoを使えば、deviseに依存せずに、ユーザ登録・ログイン・ログアウト・パスワードリセット・ソーシャルログイン・n段階認証・SAMLなど、様々な機能がアプリケーションコードから分離するかたちで追加可能です。Amazon Cognitoの他にも、Auth0やFirebase Authentication等があり、IDaaS(Identity as a Service)と呼ばれます。 本記事では、Railsアプリケーションで動作検証をする場合の手順を記載しています。 Amazon Cognitoのユーザープールの作成とクライアントの設定の基本的な手順を解説(作業時間: 10分程度) 動作検証するためのサンプルアプリの実装方法を解決(作業時間: 10分程度) なお、記事中のスクリーンショットに記載されたクライアントIDやシークレットは、既に削除されているため利用す
ActiveRecord における DB との接続確立方法をきちんと理解できてなかったので、pry-byebug を使いながらコードを読み解いてみる。 Railsのversion は 4.2.0 という前提で。 establish_connection blog.livedoor.jp sonots さん解説の通り、Rails を起動すると establish_connection メソッドが呼び出される。 # lib/active_record/connection_handling.rb def establish_connection(spec = nil) spec ||= DEFAULT_ENV.call.to_sym resolver = ConnectionAdapters::ConnectionSpecification::Resolver.new configuratio
こんにちは、鈴木です。 Ruby on Rails で複数のデータベースを扱う方法をご紹介します。 establish_connection establish_connection はデータベースと接続するためのメソッドです。 通常は明示的に呼び出すことはありませんが、複数のデータベースを使用する場合は、以下のように明示的に呼び出す必要があります。 class User < ActiveRecord::Base establish_connection :adapter => 'postgresql', :encoding => 'unicode', :database => 'other_database', :pool => '5', :username => 'USERNAME', :password => 'PASSWORD', :host => 'localhost' end
Railsのコントローラクラスのrescue_fromメソッドは、例外が発生した場合に実行するメソッドを指定できます。 コントローラーで独自のエラページをエラー内容によって切り替えたり、 APIでエラーが発生した場合に処理を共通化する場合などrescue_fromメソッドを使うとスッキリします。 ということで、APIのエラー処理の共通化を考えてみます。 各APIコントローラーのスーパークラス 各APIコントローラのスーパークラスを作成し、サブクラスで発生した例外は全てここでハンドリングします。 Api::TuleApiErrorが発生した場合、Api::ApiControllerのtule_api_errorメソッドが実行されます。 下記の例ではトークンが不正な場合は、HTTPステータスを401 Unauthorized、それ以外の場合は200 OKを返しています。 HTTPステータスは、
Nowadays, there is a growing need to have mechanisms that allows us to control who performed a particular action in a system. Rails provide us a lot of useful tools that help us build awesome solutions, but by default it does not offer us relevant tools to achieve this purpose. Most of the time what we get to know is the date of the last change of a particular record and the date of its creation,
概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Tracking down not resolving constants in Ruby with parser | Arkency Blog 原文公開日: 2023/03/02 原著者: Piotr Jurewicz サイト: Arkency Blog 日本語タイトルは内容に即したものにしました。 最近の私たちは、とあるRubyアプリで古くなったスタックをアップグレードする作業に従事しています。このアプリケーションはRuby 2.4で動いていました。使われていないgemを50個も削除し、セキュリティアップデートをかけ、非推奨警告を消し去って、いよいよRuby本体をアップグレードするときが来たと判断しました。 しかし、本当のお話はここから始まるのです。古いRubyの内部に興味のない方も、ぜひこのままお読みください。本記事の最後
[edit] super ブロック付きメソッド呼び出し yield ブロックパラメータの挙動 番号指定パラメータ it .() および ::() 形式のメソッド呼び出し(callメソッドの糖衣構文) 例 foo.bar() foo.bar bar() print "hello world\n" print Class.new Class::new 文法: [式 `.'] 識別子 [`(' [[`*'] 式] ... [`&' 式] `)'] [式 `::'] 識別子 [`(' [[`*'] 式] ... [`&' 式] `)'] メソッド呼び出し式はレシーバ(`.' の左側の式の値)のメソッドを呼び出します。レシーバが指定されない時は self のメソッドを呼び出します。 `.' と `::' とはほぼ同じ意味です。但し、定数を表す場合は、 `::' を使わなければいけません(例: Mat
yield って、いまいち分かりにくいですよね。。 この記事は Ruby の yield に関して、 わからない⇒調べる⇒忘れる⇒調べる⇒忘れる⇒… のエンドレスループから抜け出すために、自分なりにまとめたものです。 ブロックいきなり yield じゃないやん!という感じですが、我慢して見てみてください。 じつは、Ruby のメソッドはすべて「ブロック」を引数にすることができます。 def hogehoge( x ) return x + 2 end p hogehoge( 3 ) p hogehoge( 5 ){ p "foo" }ブロックってのは、{ p "foo" } みたいに "{" と "}" に囲まれたやつね。"do" ~ "end" でもいいみたいだけど。 これを実行すると、 5 7となります。{ p "foo" } はまるっきりシカトです。 (・∀・) …が、以下のようにす
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く