このgemをインストールすると、rails-18n内のyml経由で、date.abbr_day_namesの値を取得できる。 > I18n.t 'date.abbr_day_names' => ["日", "月", "火", "水", "木", "金", "土"]
Rails.application.config を config/initializers/*.rb で書き換えても反映されないケースRails 前にこんな記事を書いた。 Rails の time_zone の設定は initializers/* には書かない - Qiita 今度は config/initializers/*.rb で Rails.application.config.action_mailer.deliver_later_queue_name を書き換えたんだけど、反映されなかった。 いずれも config/application.rb に書けば反映される。 うーん、config/initializers/*.rb に書いていいのはどんな処理なんだろう。 なお、環境は Rails 5.1.4。 Rails の初期化プロセス Rails の初期化プロセスについては Ra
rescue_from で拾えない例外がある Rails が用意してくれている rescue_from は controller の外側で発生した例外を拾ってくれない。 例えばパラメータに不正なエンコーディングが含まれるときに、Rails は ActionController::BadRequest を例外として投げる。しかし、この処理は Rails の routing 層で行われているため rescue_from で捕捉することはできない。 そのため Rails の外で発生した例外を捕捉していない場合、ユーザには意図していないエラーページが見えている可能性がある。 Rails の外で起きる例外は exceptions_app で処理するのがお手軽 例えば config/initializers/exceptions_app.rb に以下のコードを書いておく(ErrorsControlle
例外を利用して実装すると便利な場合が多い この投稿では、HTTP経由でJSONを返すようなWeb APIをRailsを利用して実装するとき、エラーレスポンスを返す場合の処理をどう実装するとやりやすいのか、というニッチな話題に触れる。APIでエラーを返したいとき、即ち400以上のステータスコードと共にレスポンスを返したいような場合、どう実装するのが良いか。もしリクエストの処理中にエラーが検出された場合、それ以降の処理を行わずに直ちに中断してエラーレスポンスを返したいという場合が多いため、例外を利用して実装すると便利な場合が多い。 例外を利用しない方が良い場合もある 1つのリクエストに複数の問題が含まれている場合、先に見つけた問題だけを報告するようなエラーレスポンスを返すのか、それとも問題を抱えながらも進めるところまで処理を進めて報告可能な情報を全て含むようなエラーレスポンスを返すのか、という
dependent: :restrict_with_error と :restrict_with_exception の違いRails はじめに:dependent オプションとは? dependent オプションはRailsであるモデルが子のレコードを持っている場合、親レコードを削除するときに子レコードをどうするのかを決めるオプションです。実際の挙動はいくつかの選択肢の中から選ぶことができます。 オプションの種類 :destroy 親と一緒に子レコードも削除する。(無理心中パターン) :delete_all 親と一緒に子レコードも削除する。ただし、直接DBのレコードを削除するので、子レコードのコールバック処理は実行されない。 :nullify 子レコードの外部キーを NULL 更新する。(みなしごパターン) :restrict_with_exception 子レコードがある場合は Act
これはなに RSpecを利用したコントローラの機能テストは、Rails4まではcontroller specで行われて来ました。しかしRails5からはrequest specで記述することが推奨され、assignsとassert_templateの使用が非推奨となりました。 rails-controller-testinggemを使用すればassignsやassert_templateを使うことはできますが、やはりrequest specへ移行することが望ましいと考えられています。 これから新しく作成する Rails アプリケーションについては、 rails-controller-testing gem を追加するのはおすすめしません。 Rails チームや RSpec コアチームとしては、代わりに request spec を書くことを推奨します。 RSpec 3.5 がリリースされま
追記 コードの全体像がわかりにくいって意見をもらったのでgithubにコードおきました。 (りーどみーがわかりにくいとかあればPRいただけると幸せです) https://github.com/togana/sample-rails-docker versionとか少し変わってたりDockerfileの中で実行してるコマンドが少し変わったりしてますが、大きく変わっているところはないので参考にしてください! 追記2 docker-machineの共有ファイルを利用している場合、Rails5からファイル変更しても検知できなくなっていました。 ファイルの変更を検知しているのは config.file_watcher という設定です。 ここがバージョンアップに伴い変更されていました。 ActiveSupport::FileUpdateChecker から ActiveSupport::Evented
Rails4での話。(3以下は未確認。おそらくRails3でも同じ) tl;dr rails4ではテスト実行時にtransactional_fixturesのせいでafter_commitが呼ばれない test_after_commitを使えば解決できる rails5では修正されている 問題 test実行時にActiveRecord::Callbacksのafter_commitが呼ばれない そのため、意図通りに動かない・テストが通らないということになる after_commitのドキュメントには以下のように書いてある https://github.com/rails/rails/blob/v4.2.5/activerecord/lib/active_record/transactions.rb#L235-L237 Note that transactional fixtures do n
[23] pry(main)> Faker::Number.unique.number(1) => "7" [24] pry(main)> Faker::Number.unique.number(1) => "3" [25] pry(main)> Faker::Number.unique.number(1) => "5" [26] pry(main)> Faker::Number.unique.number(1) => "9" [27] pry(main)> Faker::Number.unique.number(1) => "4" [28] pry(main)> Faker::Number.unique.number(1) => "8" [29] pry(main)> Faker::Number.unique.number(1) => "2" [30] pry(main)> Faker:
環境 && 起こったこと OS: macOS Sierra Ruby: 2.3.1 Rails: 5.0.0.1 bundle install したときに mysql2 のところでこけた。 $ bundle install (諸々のgemのインストールのログは省略) Gem::Ext::BuildError: ERROR: Failed to build gem native extension. current directory: /Users/akito/git/media/vendor/bundle/gems/mysql2-0.4.4/ext/mysql2 /Users/akito/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160929-55293-192vx35.rb extconf.rb checking for ruby/th
#!/usr/bin/env ruby # # This file was generated by Bundler. # # The application 'rspec' is installed as part of a gem, and # this file is here to facilitate running it. # require 'pathname' ENV['BUNDLE_GEMFILE'] ||= File.expand_path("../../Gemfile", Pathname.new(__FILE__).realpath) require 'rubygems' require 'bundler/setup' load Gem.bin_path('rspec-core', 'rspec')
概要 MITライセンスに基づいて要訳・公開いたします。 英語記事: Zeitwerk integration in Rails 6 (Beta 2) | Riding Rails 原文公開日: 2019/02/22 リポジトリ: fxn/zeitwerk 著者: fxn -- Zeitwerkの作者です。 ライセンス: MIT 原文はかなり走り書きのようなので、リリースまでのつなぎとご理解ください。 間もなくリリースされるRails 6のBeta2でZeitwerkが統合されます(訳注: 既にBeta2がリリースされました)。 Rails 6の最終版にはZeitwerkの正式なドキュメントが付くことになりますが、それまでは本記事が理解に役立つことでしょう。 Zeitwekの目玉機能 クラス定義やモジュール定義の定数パスを安定して使えるようになります。 # このクラスの本体のオートロードはR
2019.01.28 週刊Railsウォッチ(20190128)Rails 6のオートローダーがZeitwerkに置き換わる?Rails 6はRuby 2.5が必須、最近のSQLiteほか こんにちは、hachi8833です。LinuCLPI-JapanのLinux標準教科書は無料のPDF版よりKindle版(200円)の方がKindleでは見やすいことに気づきました。ついでに英語版↓も制作されていたことを知りました。 英語版: Standard Linux Text Book つっつきボイス:「Linux標準教科書って何か英語版を元にしてるとかじゃなくって?🤔」「かなと思ったんですが、『JICAボランティアのご協力によりLinux標準教科書が英語化されました』とあるので日本語から訳したみたいです」「ま英語圏にはいい教科書がいっぱいあるし😆」「😆」「日本人が英語の書籍を読まなさすぎと
好きなフレームワークはFlask、 @teitei_tk です。 趣味でRuby on Railsというフレームワークのソースコードを読んでいるのですが、 eager_load_pathsと、autoload_pathsの違いを調べたくなりました。 軽く検索をしてみると、autoload_pathsの代わりにeager_load_paths使えばなんか動くからokと言われてるので、それはなぜなのかというのを実際にソースコードから追っていった記事です。 ※自分の理解内のため、間違えがあるかもしれません。 --- autoload_pathsとは 語弊を恐れずに言うと、moduleや定数をいい感じに自動で読み込んでくれる仕組みです。 例えば class Hoge < ApplicationRecord endのようなActiveRecordのclassを作るときに、Pure Rubyであれば
memcachedで快速アプリケーション − @IT 上記の記事で、こんなことが書いてありました。 以下に、Railを使用する際に用いられる一般的なパフォーマンス向上方法を紹介しよう。 O/Rマッパーを介さずに直接SQL文を発行する →ActiveRecord::Base::find_by_sqlメソッド 部分テンプレートキャッシング →flagment_cache レコード走査時に、関連先オブジェクトを一括生成する →eager loading eager lodingというフレーズは聞いたことあるような気がしたけど、具体的に何かはよくわからなかったので調べました。 eager loadingとは 例えば下記のようなTaskモデルとProjectモデルがあったとして class Task < ActiveRecord::Base belongs_to :project end class
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く