我的虚拟机上有一个rails应用程序。环境是发展,我经常研究它。我在新的nserver上从repo中提取代码,并始终将RAILS_ENV
设置为development
我调用了第一个命令rake db:migrate
,我得到的是我的一个类是NameError:uninitialized constant
如果我的代码和环境相同,这怎么可能?我的虚拟机上的自动加载是以正确的方式配置的。
config.autoload_paths << Rails.root.join('lib')
config.autoload_paths += Dir[Rails.root.join('app', 'api', '**', '**', '*')]
无法找到的课程在app/api/nameofclass/anothername/api.rb
。
答案 0 :(得分:2)
使用DKIM
作为名称会有问题,因为自动加载器会将其映射到路径中的d_k_i_m/
。尽可能避免创建包含大写字母的目录或文件,这会导致区分大小写的文件系统出现混乱。
app/api/domains/dkim/api.rb
应包含Domains::Dkim::Api
。
如果你想使用一些非标准的命名系统,你必须手动强制加载你的东西,自动加载器不会为你做。
自动加载指令应该是:
config.autoload_paths << Rails.root.join('app', 'api')
您不希望在自动加载路径中包含每个文件。
答案 1 :(得分:1)
使用此代替两行:
config.autoload_paths += %W|lib app/api/**|