Skip to content

Commit

Permalink
performance: remove unnecessary i18n locale reload (#2723)
Browse files Browse the repository at this point in the history
* Remove unnecessary i18n reload

I18n is reloaded whenever load_path are set, so an additional reload
is not needed and only increases load time.

* Test that faker and i18n are loaded properly
  • Loading branch information
codez authored Apr 4, 2023
1 parent 36cd382 commit 03c099a
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 1 deletion.
1 change: 0 additions & 1 deletion lib/faker.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
Dir.glob(File.join(mydir, 'helpers', '*.rb')).sort.each { |file| require file }

I18n.load_path += Dir[File.join(mydir, 'locales', '**/*.yml')]
I18n.reload! if I18n.backend.initialized?

module Faker
module Config
Expand Down
42 changes: 42 additions & 0 deletions test/test_i18n_reload.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# frozen_string_literal: true

require 'test_helper'
require 'open3'

class TestI18nLoad < Test::Unit::TestCase
def test_faker_i18n
# run this code in a subshell to test require faker
# and proper initialization of i18n.
code = <<-RUBY
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'minitest'
gem 'i18n'
end
require 'minitest/autorun'
require 'i18n'
class TestI18nLoad < Minitest::Test
def test_faker_i18n
I18n.available_locales = [:en]
refute_predicate I18n.backend, :initialized?
I18n.translate('doesnt matter just triggering a lookup')
assert_predicate I18n.backend, :initialized?
assert require File.expand_path('#{File.dirname(__FILE__)}/../lib/faker')
assert Faker::Name.name
end
end
RUBY

cmd = %( ruby -e "#{code}" )
output, status = Open3.capture2e(cmd)

assert_equal 0, status, output
end
end

0 comments on commit 03c099a

Please sign in to comment.