Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 在模型中包含自定义模块后注释gem不工作_Ruby - Fatal编程技术网

Ruby 在模型中包含自定义模块后注释gem不工作

Ruby 在模型中包含自定义模块后注释gem不工作,ruby,Ruby,在模型中包含自定义模块后,请注释“停止工作”并给出错误: 我的模型:app/models/hotel.rb class Hotel < ActiveRecord::Base include HotelHandler ... end 这给了我一个错误: 未初始化的常量Hotel::HotelHandler(NameError) 如果要在普通的旧Ruby项目中设置Rails样式的自动和快速加载,现代方法是使用: 这实际上只是一个简单的示例,您通常会将此逻辑封装到一个引导映射文

在模型中包含自定义模块后,请注释“停止工作”并给出错误: 我的模型:app/models/hotel.rb

class Hotel < ActiveRecord::Base
  include HotelHandler
  
  ...

end
这给了我一个错误:

未初始化的常量Hotel::HotelHandler(NameError)


如果要在普通的旧Ruby项目中设置Rails样式的自动和快速加载,现代方法是使用:


这实际上只是一个简单的示例,您通常会将此逻辑封装到一个引导映射文件和一个“应用程序”类中。

如果您执行
include::HotelHandler
,它是否仍然会给您错误?是,它仍然给我同样的错误你如何命名包含
HotelHandler
的文件以及你把它放在哪里?尝试
require\u relative'../helpers/hotel\u handler'
如果它不是Rails项目,你可能没有autoloader设置(),你需要的是为你的应用程序要求或设置autoloader(超出本问题的范围)
module HotelHandler
  ...
end
# this file would be the "entry path" to your application such as config.ru

# loads an installs gems inline
require 'bundler/inline'

gemfile do
  source 'https://rubygems.org'
  gem 'zeitwerk'
end

root = Pathname.new(File.expand_path(__dir__))
env = ENV.fetch("MYAPP_ENV", 'development')
loader = Zeitwerk::Loader.new

# Mimics Rails by adding every subdirectory of `/app` and `/app/**/concerns` 
# as "root directories" where zeitwerk will find top level constants
paths = [
  dir[root.join('app/*/')]
  dir[root.join('app/**/concerns')]
].flatten.each do |path|
  loader.push_dir(path) if File.directory?(path)
end

# makes zeitwerk reload classes when they change
loader.enable_reloading if env == 'development'
loader.setup
# loads all classes on boot for performance
loader.eager_load if env == 'production'