【问题标题】:Rails 3 - Error after deploying to HerokuRails 3 - 部署到 Heroku 后出错
【发布时间】:2025-12-12 03:35:01
【问题描述】:

我有一个在 localhost 和 heroku 中工作的应用程序。上次我将新版本推送到 heroku 时,我在 heroku db:migrate 期间遇到了错误,并且做了 heroku db:push,一切正常。

执行应用程序时出现以下错误。 /app/.bundle/gems/ruby/1.9.1/gems/aws-s3-0.6.2/lib/aws/s3/extensions.rb:206:in `const_missing_from_s3_library': 未初始化的常量 AnswersController::Authentication (NameError)

这里是相关代码

class AnswersController < ApplicationController
  include Authentication
  ...

Authentication是lib中定义的一个模块:

# encoding: utf-8
require 'base64'
require 'openssl'

module Authentication
...

它在 localhost 中工作,但在 heroku 中没有。 有什么帮助吗?? 谢谢

【问题讨论】:

    标签: ruby-on-rails-3 authentication module heroku


    【解决方案1】:

    尝试将lib 文件夹添加到application.rb 中的config.auto_load 路径

    config.autoload_paths += %W(#{config.root}/lib)
    

    另外,看看this link

    【讨论】:

    • 我不知道为什么它在开发中有效但在 heroku 中崩溃 =(
    • 如果您在生产模式下本地运行应用程序会发生什么?
    • 定义模块的文件名是什么? (应该是authentication.rb
    • 很抱歉,想法不多了。作为最后的手段,您可以尝试将文件放入app/models 文件夹。
    • 从我目前在谷歌搜索时看到的情况来看,在 Heroku 上加载路径似乎存在一个奇怪的问题。 SO上有一个与您类似的问题:*.com/questions/5477431/…。不幸的是,我对 Heroku 没有太多经验。我建议您就您的问题联系 Heroku 支持:devcenter.heroku.com/categories/support