新手问题 部署 Heroku 报错:uninitialized constant Article::PictureUploader (NameError)

killernova · 2015年05月31日 · 最后由 killernova 回复于 2015年06月01日 · 2103 次阅读

自己在做一个 demo 来学习 ror,之前部署在 heroku 一直好好的,然后昨天学习了 carrierwave 的使用。在本地一切都 ok,但 push 到 heroku 之后,打开 demo 地址,发现无法加载,使用heroku logs, 报错:

/app/app/models/article.rb: 9: in `class:Article': uninitialized constant Article::PictureUploader (NameError).

之后发现无论是heroku run rails s还是heroku run rails c都是报这个错误。我不太明白,为和本地可以良好运行而远程就不行?故求助。

app/uploaders/picture_uploader.rb

class PictureUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick
  process resize_to_limit: [600, 600]
  storage :qiniu

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w{jpg gif png jpeg}
  end
end

app/models/article.rb

class Article < ActiveRecord::Base
  belongs_to :user
  has_many :comments, dependent: :destroy
  has_many :likes
  validates :title, presence: true, length: {maximum: 50}
  validates :content, length: {minimum: 10}
  self.per_page = 10
  attr_accessor :floor_number
  mount_uploader :picture, PictureUploader
  validate :picture_size

  def picture_size
    if picture.size > 5.megabytes
        errors.add(:picture, "should be less than 5MB")
    end
  end
end

github: https://github.com/killernova/blog

本地,用 RAILS_ENV=production rails s 来运行,看看是否有错误

uploader 目录没 check in

@huacnlee 服务可以正常启动,不过打开网页显示

[2015-05-31 23:15:41] ERROR RuntimeError: Missing secret_token and secret_key_base for 'production' environment, set these values in config/secrets.yml

貌似是 devise 相关的。而在 heroku 上则是 rails s 都无法启动。

@rei 哎呀,不好意思,这个目录没有 check in 是什么意思呀~~能稍微详细点么?我太菜了。。

@rei 在 app/下面,和 models 平级。

@rei 原来是这样啊。。。我一直没去看 push 之后的内容。之前 push 的时候的确有警告,我也没细看,因为从没遇到过问题,我把文件加上之后就 ok 了,谢谢你!!!。 git status的内容是这样的: 但是请问为什么会这样啊?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号