This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [arm64-darwin23] | |
$LOAD_PATH << "#{__dir__}/lib" | |
# # lib/first.rb | |
# module First | |
# require 'second' | |
# end | |
# # lib/second.rb | |
# module Second |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb | |
index d1b285101d..9ca4677c6f 100644 | |
--- a/activerecord/lib/active_record/relation/calculations.rb | |
+++ b/activerecord/lib/active_record/relation/calculations.rb | |
@@ -352,9 +352,9 @@ def execute_grouped_calculation(operation, column_name, distinct) # :nodoc: | |
select_values.concat group_columns.map { |aliaz, field| | |
if field.respond_to?(:as) | |
- field.as(aliaz) | |
+ Arel::Nodes::As.new(field, Arel::Table.new(aliaz)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/Gemfile b/Gemfile | |
index 8d3bc88..6272179 100644 | |
--- a/Gemfile | |
+++ b/Gemfile | |
@@ -23,6 +23,11 @@ group :development, :test do | |
gem "debug", ">= 1.0.0", platforms: %i[ mri mingw x64_mingw ] | |
end | |
+group :test do | |
+ gem 'rspec' |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# frozen_string_literal: true | |
paths = Dir[Rails.root.join('config/locales/models/defaults/*.yml')] | |
all_locales = paths.map { |path| YAML.load_file(path) }.inject(&:deep_merge) | |
# has_many用のデフォルトのlocaleを追加する | |
# config/locales/models/defaults/ja.ymlにモデル名が定義されている前提。 | |
# | |
# activerecord/models にある値を複数形にして attributes に変換する | |
# |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module Enumerable | |
def stable_sort_by | |
sort_by.with_index { |item, index| [yield(item), index] } | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
module WithIndex | |
extend ActiveSupport::Concern | |
class IndexNotFound < StandardError; end | |
class_methods do | |
# インデックスを指定する | |
# | |
# @example | |
# User.where(...).use_index([:group_id, :created_at]).load |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ActiveModel::Attributesは不要な抽象化が多くてメモリを大量に消費するため、軽量なActiveModel::Attributes相当のmoduleを用意する | |
# このmoduleは、ActiveModel::Attributesと比べて多くの機能(dirty trackingなど)がないため、readonlyなオブジェクトに利用するとよい | |
module LightweightActiveModelAttributes | |
extend ActiveSupport::Concern | |
include ActiveModel::AttributeMethods | |
included do | |
class_attribute :_attribute_types, :_default_attributes, instance_accessor: false | |
self._attribute_types = {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# app/models/concerns/forced_attribute.rb | |
module ForcedAttribute | |
extend ActiveSupport::Concern | |
CONDITIONAL_OPTIONS = %i[if unless on].freeze | |
class ForcedAttributeCallbacks | |
# @param attributes [Hash<symbol, any>] | |
def initialize(attributes = {}) | |
@attributes = attributes.freeze |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'parser/current' | |
RSpec.describe 'View spec' do | |
describe 'partial view' do | |
# partial viewの一覧 | |
let(:partial_views) do | |
path = Rails.application.paths['app/views'].first | |
Dir.glob("#{path}/**/_*.html.slim") | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# app/models/concerns/enum_attribute.rb | |
module EnumAttribute | |
extend ActiveSupport::Concern | |
class_methods do | |
# Example | |
# Model.enum(:state, [:pending, :complete]) | |
# Model.states #=> { 'pending' => 'PENDING', 'complete' => 'COMPLETE' } | |
# | |
# Model.new(state: 'PENDING').state #=> 'pending' |
NewerOlder