Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails NoMethodError:未定义的方法'eager_load_path';对于#<;I18n::配置:0x00007fceade8c0f0>;_Ruby On Rails_Eager Loading_Ruby On Rails 6_Zeitwerk - Fatal编程技术网

Ruby on rails NoMethodError:未定义的方法'eager_load_path';对于#<;I18n::配置:0x00007fceade8c0f0>;

Ruby on rails NoMethodError:未定义的方法'eager_load_path';对于#<;I18n::配置:0x00007fceade8c0f0>;,ruby-on-rails,eager-loading,ruby-on-rails-6,zeitwerk,Ruby On Rails,Eager Loading,Ruby On Rails 6,Zeitwerk,在运行ruby 2.7的rails 6应用程序中,我尝试使用Zeitwerk加载所有文件。以下是my application.rb文件的一个片段: class Application < Rails::Application config.load_defaults "6.0" Zeitwerk::Loader.eager_load_all # Application configuration can go into files in config/initializers # --

在运行ruby 2.7的rails 6应用程序中,我尝试使用Zeitwerk加载所有文件。以下是my application.rb文件的一个片段:

class Application < Rails::Application
config.load_defaults "6.0"
Zeitwerk::Loader.eager_load_all

# Application configuration can go into files in config/initializers
# -- all .rb files in that directory are automatically loaded after loading
# the framework and any gems in your application.

# Middlewares
config.middleware.insert 0, Rack::UTF8Sanitizer
config.middleware.use Rack::Attack
config.autoload_paths += Dir["#{config.root}/lib/**/*"]
config.autoload_paths += Dir["#{config.root}/app/models/**/*"]
config.autoload_paths += Dir["#{config.root}/app/observers/*"]
config.autoload_paths += Dir["#{config.root}/app/middleware/*"]
config.autoload_paths += Dir["#{config.root}/app/validators/**/*"]
config.autoload_paths += Dir["#{config.root}/app/**/concerns/*"]
config.autoload_paths += Dir["#{config.root}/app/operations/**/*"]
config.autoload_paths += Dir["#{config.root}/app/scrubbers/**/*"]
config.autoload_paths += Dir["#{config.root}/app/workers/**/*"]
config.paths.add "#{config.root}/app/operations/", eager_load: true

# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
config.time_zone = "UTC"

# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')].reject { |f| File.fnmatch("#{Rails.root.to_s}/config/locales/**/x_*.yml", f) }
config.i18n.available_locales = [:"en", :"fr", :"fr_en"]
config.i18n.default_locale = :en

# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
config.assets.precompile += ["public.css", "public.js", "public_payments.js", "email.css", "pdf.css", "pronotif.css"]

config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', :headers => :any, :methods => [:get, :post, :options]
  end
end
类应用程序:any,:methods=>[:get,:post,:options]
结束
结束
结束

但是,当我运行此命令时,会出现以下错误:

NoMethodError: undefined method `eager_load_paths' for #<I18n::Config:0x00007fceade8c0f0>
NoMethodError:#
对此问题的任何解决方案都会有帮助 除了application.rb状态不好(如中提到的@max)这一事实之外,Rails也存在问题

不幸的是(在撰写本文时,Rails 6.0.2.2的修复程序目前还不是公开的

临时解决办法 但是在此之前您可以将文件复制到名为
lib/tasks/local_zeitwerk.rake的应用程序中
,并将第41行更改为:

namespace:local_zeitwerk do
然后使用执行检查任务

bin/rails local_zeitwerk:check
问题 除了application.rb状态不好(如中提到的@max)这一事实之外,Rails也存在问题

不幸的是(在撰写本文时,Rails 6.0.2.2的修复程序目前还不是公开的

临时解决办法 但是在此之前您可以将文件复制到名为
lib/tasks/local_zeitwerk.rake的应用程序中
,并将第41行更改为:

namespace:local_zeitwerk do
然后使用执行检查任务

bin/rails local_zeitwerk:check

别着急。没有理由将所有这些目录添加到自动加载路径。默认情况下,Rails已经将
/app
的每个子目录添加到自动加载路径中。添加
Dir[“#{config.root}/lib/***”]
也是一种蚂蚁模式,因为它会将
lib
的每个子目录都添加为根。我也不明白为什么你认为你想自动加载
application.rb中的所有内容,因为这只会破坏dev/test中的代码重新加载。这闻起来很像一个X&Y问题——你想用这一切解决的实际问题是什么?别着急。没有理由将所有这些目录添加到自动加载路径。默认情况下,Rails已经将
/app
的每个子目录添加到自动加载路径中。添加
Dir[“#{config.root}/lib/***”]
也是一种蚂蚁模式,因为它会将
lib
的每个子目录都添加为根。我也不明白为什么你认为你想自动加载
application.rb中的所有内容,因为这只会破坏dev/test中的代码重新加载。这闻起来很像一个X&Y问题——你用这一切试图解决的实际问题是什么?