我的虚拟机上有一个 Rails 应用程序。环境就是发展,我经常致力于此。我从新 nserver 上的 repo 中提取代码,并且始终将 RAILS_ENV
设置为 development
我调用第一个命令 rake db:migrate
和我知道我的类(class)之一是 NameError:未初始化的常量。
如果我的代码和环境相同,这怎么可能?如果可以,我的虚拟机上的自动加载配置正确。
config.autoload_paths << Rails.root.join('lib')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '**', '**', '*')]
而找不到的类在app/api/nameofclass/anothername/api.rb
。
最佳答案
使用 DKIM
作为名称会有问题,因为自动加载器将其映射到路径中的 d_k_i_m/
。尽可能避免创建包含大写字母的目录或文件,这会导致区分大小写的文件系统出现困惑。
app/api/domains/dkim/api.rb
应该包含 Domains::Dkim::Api
。
如果你想使用一些非标准的命名系统,你必须手动强制加载你的东西,自动加载器不会为你做这件事。
自动加载指令可能应该是:
config.autoload_paths << Rails.root.join('app', 'api')
您不想将每个文件都包含在您的自动加载路径中。
关于ruby-on-rails - 为什么会出现 NameError : uninitialized constant simply making a rake db:create on a new machine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40726139/