Rails 7.1
在我的app/services/tools中,我有一个文件:services_tools.rb
在services_tools.rb中,我有:
module ServicesTools
class ErbToSlim
def convert_erb_to_slim(erb_file)
...........
end
end
class NestedMigrationCreator
def generate_nested_migration(migration_namespace:, migration_name:, migration_code: nil)
..........
end
end
end
字符串
我转到命令行,并执行:
rails c
型
然后我做了:
creator = ServicesTools::NestedMigrationCreator.new
型
我收到以下信息:
(irb):1:in `<main>': uninitialized constant ServicesTools (NameError)
型
在控制台中,当我这样做时:
ActiveSupport::Dependencies.autoload_paths
型
我明白了:
"/lib",
"/test/mailers/previews",
"/app/channels",
"/app/controllers",
"/app/controllers/concerns",
"/app/helpers",
"/app/jobs",
"/app/mailers",
"/app/models",
"/app/models/concerns",
"/app/services",
...
型
有什么想法吗?
1条答案
按热度按时间yb3bgrhw1#
您的
app/services
是根目录,这意味着相对于该目录的文件必须对应于模块/类名才能自动加载:字符串
听起来有点尴尬。这样更好:
型
一般来说,最好每个文件定义一个常量。然而,这也是可行的,只要文件名对应于类/模块名,你就可以在里面做任何事情:
型