首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当一个常量不遵循Rails中的标准约定时,我怎么能让它自动加载呢?

当一个常量不遵循Rails中的标准约定时,我怎么能让它自动加载呢?
EN

Stack Overflow用户
提问于 2018-03-10 23:42:33
回答 2查看 39关注 0票数 0

我在一个Rails 4项目中有以下类:

代码语言:javascript
复制
app/components/x2xfoo/bar/klass.rb

其中klass.rb为:

代码语言:javascript
复制
module X2XFoo
  module Bar
    class Klass
    end 
  end
end

问题是Rails的自动加载机制没有找到这个常量:

代码语言:javascript
复制
$ bundle exec rails c
2.4.2 :001 > X2XFoo::Bar::Klass
NameError: uninitialized constant X2XFoo
    from (irb):1
...
    from bin/rails:8:in `require'
    from bin/rails:8:in `<main>'

当然,如果我更改klass.rb文件的内容以定义模块X2xfoo而不是X2XFoo,那么加载X2xfoo::Bar::Klass就可以了,因为它遵循标准的Rails约定。

但是,有没有一种方法可以使用X2XFoo常量并进行自动加载?

EN

回答 2

Stack Overflow用户

发布于 2018-03-11 03:17:27

创建或调整config/initializers/inflections.rb

代码语言:javascript
复制
ActiveSupport::Inflector.inflections do |inflect|
  inflect.acronym 'X2XFoo'
end
票数 1
EN

Stack Overflow用户

发布于 2018-03-11 19:03:09

更新config/application.rb文件以将app/目录添加到自动加载路径:

代码语言:javascript
复制
config.autoload_paths += %W(#{config.root}/app)

确保您不会在代码中的任何地方手动要求您的新类。让Rails重新启动&试一试,看看它的神奇之处。

就这样。您的新类现在应该会自动重新加载,类似于rails的默认控制器、模型、视图等。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49210912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档