0

我在让 Paperclip 在我的 VPS 上工作时遇到了一些麻烦。它在本地和我的第一个 VPS 上运行良好,但是当我尝试rake db:migrate在第二个 VPS 上时,我得到以下输出:

root@Test:/home/rails# rake db:migrate
==  CreateGroups: migrating ===================================================
-- create_table(:groups)
   -> 0.0019s
-- add_column(:discussions, :group_id, :integer)
   -> 0.0007s
-- add_column(:memberships, :memberships_id, :integer)
   -> 0.0006s
-- has_attached_file(:photo, {:styles=>{:original=>"400x200>", :tile=>"200x200#"}, :url=>"/assets/images/groups/:id/:style/:basename.:extension", :path=>":rails_root/public/assets/images/groups/:id/:style/:basename.:extension", :default_url=>"/assets/:style/missing-group-image.jpg"})
rake aborted!
An error has occurred, this and all later migrations canceled:

undefined method `has_attached_file' for #<CreateGroups:0x0000000342cbf8>/usr/local/rvm/gems/ruby-1.9.3-p429/gems/activerecord-3.2.8/lib/active_record/migration.rb:465:in `block in method_missing'
...

到目前为止,我为设置第二个 VPS 所做的是:

  • 设置 Unicorn + Nginx(它们似乎工作正常)
  • apt-get install git
  • apt-get install imagemagick
  • bundle install(回形针在我的 Gemfile 中)
  • 重新启动我的外壳
  • 重启了VPS

毕竟,每当我尝试迁移时,我仍然会收到上述错误。对下一步做什么有任何想法吗?

4

2 回答 2

1

我认为您没有完全遵循 Paperclip 安装指南。您应该进行以下迁移(从 Paperclip 自述文件中复制,因此您可能会略有不同)

class AddAvatarColumnsToUsers < ActiveRecord::Migration
  def self.up
    add_attachment :users, :avatar
  end

  def self.down
    remove_attachment :users, :avatar
  end
end

你显然把应该在你模型里的东西放在那里。

于 2013-07-25T15:44:56.017 回答
0

事实证明,我的问题与不完整的代码有关,而不是与我的环境有关。原来我的一个队友将一些不完整的代码推送到我们的 GitHub 存储库,而我没有注意到。

通过这样做git logs,选择正确的提交,然后git checkout (...),我能够迁移和播种我的数据库并按预期运行我的应用程序。

花了一个多小时试图弄清楚这一点,我觉得很傻,但希望它可以帮助别人。:)

于 2013-07-25T20:38:49.253 回答