首页 > 解决方案 > load_missing_constant (NameError)

问题描述

系统详细信息:
-Linux
-Docker 版本 17.03.0-ce
-Ruby 版本 1.8.7
-Rails 版本 2.3.8。

在对 Ruby on Rails 应用程序进行 dockerizing 的过程中,我在运行脚本/服务器时遇到以下错误,即启动 rails 的内置 Web 服务器:

/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:440:in `load_missing_constant': 未初始化的常量 Api::InjectTokenIntoCookies (NameError)

此特定文件 (InjectTokenIntoCookies) 存在于单独的插件文件夹中。我在解决这个问题方面得到的最远的结果是,这是一个缺少宝石的案例。但是,在 docker 容器中设置整个 rails 环境只会增加复杂性。

“RUN bundle install”包含在 Dockerfile 中,所以这应该不是问题。

完整的错误跟踪:

/usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:440:in `load_missing_constant': uninitialized constant Api::InjectTokenIntoCookies (NameError)
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:80:in `const_missing'
    from /bab/apps/site/config/initializers/api_middleware.rb:1
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:145:in `load_without_new_constant_marking'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:145:in `load'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:145:in `load'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:622:in `load_application_initializers'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:621:in `each'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:621:in `load_application_initializers'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:176:in `process'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `send'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/initializer.rb:113:in `run'
    from /bab/apps/site/config/environment.rb:6
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `gem_original_require'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in `new_constants_in'
    from /usr/local/lib/ruby/gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in `require'
    from /usr/local/lib/ruby/gems/1.8/gems/rails-2.3.8/lib/commands/server.rb:84
    from /bab/apps/site/script/server:3:in `gem_original_require'
    from /bab/apps/site/script/server:3:in `require'
    from /bab/apps/site/script/server:3

标签: ruby-on-railsrubylinuxdocker

解决方案


推荐阅读